####搭建webpack+react环境

参考:https://my.oschina.net/u/1403181/blog/672501

1. 新建一个文件夹:

react-demo

2. cd react-demo

3. npm install webpack -g   #不推荐全局安装,原因是可防止不同项目依赖不同版本的 Webpack 而导致冲突。

4. npm init 命令生成 package.json

5. npm install webpack --save-dev  #安装webpack,推荐方式,安装到本项目

6. npm install babel-core babel-loader babel-preset-es2015 babel-preset-react --save-dev  #安装babel

7. npm install react react-dom --save-dev  #安装react react-dom

7.1  npm install style-loader --save-dev

7.2  npm install css-loader --save-dev

8. 新建webpack.config.js文件

var path = require('path');
var webpack = require('webpack');
module.exports = {
entry: ['webpack/hot/dev-server', path.resolve(__dirname, './index.js')],
output: {
path: path.resolve(__dirname, './build'),
filename: 'bundle.js'
},
devtool:'source-map',
module: {
loaders: [
{
test:/\.css$/,loader:'style!css'
},
{
test: /\.js?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
query: {
presets: ['es2015', 'react']
} }
]
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
};

 

8.1  .babelrc中添加

{
"presets": ["es2015","react"]
}

  

 

9. npm install webpack-dev-server --save-dev  #安装webpack-dev-server

10. 在package.json文件中为scripts添加:

"scripts": {
"build": "webpack",
"dev": "webpack-dev-server --devtool eval --progress --colors --content-base build"
}

  最后我们的package.json代码是这样的:

{
"name": "reactpro1",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"bundle": "babel-node tools/run bundle",
"build": "webpack",
"dev": "webpack-dev-server --devtool eval --progress --colors --content-base build"
},
"author": "jx",
"license": "ISC",
"devDependencies": {
"babel-core": "^6.8.0",
"babel-loader": "^6.2.4",
"babel-preset-es2015": "^6.6.0",
"babel-preset-react": "^6.5.0",
"react": "^15.0.2",
"react-dom": "^15.1.0",
"webpack": "^1.13.0",
"webpack-dev-server": "^1.14.1"
},
"dependencies": {
"webpack": "^1.13.0",
"webpack-dev-server": "^1.14.1"
},
"description": ""
}

  

11. 编写index.html

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<script src="http://cdn.bootcss.com/jquery/1.11.2/jquery.min.js"></script> <title>React Project</title>
</head>
<body>
<div id="content"></div>
<script src="./build/bundle.js"></script>
</body>
</html>

  

 12. index.js如下写:

let React = require('react');
let ReactDOM = require('react-dom'); ReactDOM.render(<div>hello </div>, document.getElementById('content'));

  

13. webpack打包即可

完毕...................

PS:

复杂点的index.js如下

let React = require('react');
let ReactDOM = require('react-dom'); import './index.css'; class Login extends React.Component{ constructor(props) {
super(props);
this.state = {
userId: '',
userPassword: '',
submitEnabled: false,
};
} componentWillMount() {
console.log("componentWillMount");
} componentDidMount() {
console.log("componentDidMount");
} componentWillUnmount() {
console.log("componentWillUnmount"); } //event
handleClickSubmit() {
if(this.state.userId.length < 1 || this.state.userPassword.length < 1){
return;
}
$.get("http://publicschool.sinaapp.com/test/test.php?name=jack", function(result) {
console.log(result);
});
}
handleChangeId () {
this.setState({
userId:this.refs._ref_userId.value,
submitEnabled:this.refs._ref_userId.value.length > 0 && this.refs._ref_userPassword.value.length > 0,
});
}
handleChangePassword () {
this.setState({
userPassword:this.refs._ref_userPassword.value,
submitEnabled:this.refs._ref_userId.value.length > 0 && this.refs._ref_userPassword.value.length > 0,
});
} //渲染方法
render () { return(
<div className="login">
<div className="title">
{this.props.title}
</div> <div className="userRole">
{this.props.role}
</div> <input type="text" ref="_ref_userId" placeholder="用户名" onChange={()=>this.handleChangeId()} />
<input type="password" ref="_ref_userPassword" placeholder="密码" onChange={()=>this.handleChangePassword()} /> <button type="button" onClick={()=>this.handleClickSubmit()}>登录</button>
</div>); }
} ReactDOM.render(
<Login title="title" role="ddd"/>,
document.getElementById('content')
);

  

css如下:

.login{
background-color: red;
} .header{
height: 30px;
background-color: gray;
} .userRole{
height:80px;
background-color: lightcyan;
}
.userId{ }
.userPassword{ } .submitButtonEnabled{
color:blue;
}
.submitButtonDisabled{
color: gray;
}

最新文章

  1. 关于mha手动切换的一些记录(mha方案来自网络)
  2. 5款Linux最佳照片管理软件
  3. 【Pro ASP.NET MVC 3 Framework】.学习笔记.8.SportsStore:管理
  4. Windows CPU占用率过高
  5. C# DES加密
  6. js构造函数,索引数组和属性的属性
  7. 【JS】Intermediate8:jQuery:AJAX
  8. SSH开源框架考试题
  9. Android开发全套视频教程在线观看网盘下载
  10. 利用MyEclipse配置S2SH三大框架篇-Spring配置
  11. JavaEE Tutorials (29) - Duke辅导案例研究示例
  12. Spring 控制反转
  13. [转载] TCP长连接与短连接的区别
  14. [Hive_4] Hive 插入数据
  15. [离散时间信号处理学习笔记] 8. z逆变换
  16. IntelliJ Idea 配置Tomcat提示Port is not specified
  17. js设计模式(四)---迭代器模式
  18. cube-ui中弹窗
  19. System.net.mail 使用ssl发送邮件失败
  20. Windows7下无法打开chm(mk:@MSITStore:路径[cannot open the file mk@MSITstore:路径]),chm索引就关闭的解决办法

热门文章

  1. MVC树控件,mvc中应用treeview,实现复选框树的多层级表单控件
  2. lsof命令
  3. 浅谈Hybrid技术的设计与实现
  4. UI篇(初识君面)
  5. fastjson 混淆注意事项
  6. Java 消息摘要 散列 MD5 SHA
  7. SQL Server 2008 R2:快速清除日志文件的方法
  8. Mac配置PHP
  9. mysql初级命令
  10. CFD冲蚀模拟的一些理论