We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
--your project |--app |--components |--productBox.jsx |--main.js |--build |--index.html |--bundle.js(该文件是webpack打包后生成的)
默认已经安装了Nodejs,推荐用cnpm
npm install --save-dev react react-dom --save-dev npm install -g webpack --save-dev//建议webpack全局安装,方便我们后面使用webpack命令
Babel其实是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到以下目的:
下一代的JavaScript标准(ES6,ES7),这些标准目前并未被当前的浏览器完全的支持; 使用基于JavaScript进行了拓展的语言,比如React的JSX Babel其实是几个模块化的包,其核心功能位于称为babel-core的npm包中,不过webpack把它们整合在一起使用,但是对于每一个你需要的功能或拓展,你都需要安装单独的包(用得最多的是解析Es6的babel-preset-es2015包和解析JSX的babel-preset-react包)。
npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react
在项目根目录下新建.babelrc文件,就是只有后缀名的文件,添加如下代码
.babelrc
//.babelrc { "presets": [ "react", "es2015" ] }
讲到这里,我们基本上就可以迅速搭建一个简单的web项目,但不得不提的是webpack loader。它是我个人认为相比于其他模块加载更牛X的地方,将它用于react的开发,结合react与生俱来的优越性能,两者天衣无缝的配合简直就是黄金组合。
总的来说webpack loader可以实现:
可以将React JSX语法转为js语句 React开发中支持ES6语法 支持通过import来直接引入css、less、sass甚至是图片 支持css中引用的图片大小在某一大小范围之内直接转为BASE64格式等等等
为了能够让以上功能奏效,我们要先安装对应的: babel-loader
npm install babel-loader --save-dev //css-loader npm install css-loader --save-dev //less-loader npm install less-loader --save-dev //style-loader npm install style-loader --save-dev //url-loader npm install url-loader --save-dev
而具体的实现,我们只要在下面webpack的配置文件中加入module属性里的loaders:
webpack.config.js是webpack的配置文件
//__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录 module.exports = { //注意这里是exports不是export devtool: 'eval-source-map', //生成Source Maps,这里选择eval-source-map entry: __dirname + "/app/main.js", //唯一入口文件 output: { //输出目录 path: __dirname + "/build", //打包后的js文件存放的地方 filename: 'bundle.js', //打包后的js文件名 }, module: { loaders: [{ test: /\.jsx?$/, exclude: /node_modules/, //屏蔽不需要处理的文件(文件夹)(可选) loader: 'babel-loader' //npm install babel-loader //npm install babel-core }, { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.less$/, loader: 'style-loader!css-loader!less-loader' }, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=25000' }] } };
使用Source Maps,使调试更容易
新版本推荐使用ES6书写React组件
var React = require('react'); //旧版本的写法,会有警告 /*var ProductBox = React.createClass({ render: function() { return( <div className = "productBox" > Hello World! </div> ); } });*/ //新版本的写法 推荐 class ProductBox extends React.Component { render() { return( <div>Hello World!</div> ) } } module.exports = ProductBox;
用旧版本写法会出现以下警告
index.html是最终要呈现的页面文件,代码如下
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>React Test</title> </head> <body> <!--要插入React组件的位置--> <div id="content"></div> <script src="bundle.js"></script> </body </html>
main.js是入口文件,用来将React组件放在真正的html中
var React = require('react'); var ReactDom = require('react-dom'); var AppComponent = require('./components/productBox.jsx'); ReactDom.render( <AppComponent / > , document.getElementById('content') );
package.json是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等
{ "devDependencies": { "babel-core": "^6.24.1", "babel-loader": "^7.0.0", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "less-loader": "^4.0.3", "react": "^15.5.4", "react-dom": "^15.5.4", "style-loader": "^0.16.1", "url-loader": "^0.5.8", "webpack": "^2.4.1" } }
在命令行执行webpack命令
webpack
想不想让你的浏览器监测你都代码的修改,并自动刷新修改后的结果,其实Webpack提供一个可选的本地开发服务器,这个本地服务器基于node.js构建,可以实现你想要的这些功能,不过它是一个单独的组件,在webpack中进行配置之前需要单独安装它作为项目依赖
npm install --save-dev webpack-dev-server
在webpack.config.js增加devServer的配置
//__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录 module.exports = { //注意这里是exports不是export devtool: 'eval-source-map', //生成Source Maps,这里选择eval-source-map entry: __dirname + "/app/main.js", //唯一入口文件 output: { //输出目录 path: __dirname + "/build", //打包后的js文件存放的地方 filename: 'bundle.js', //打包后的js文件名 }, module: { loaders: [{ test: /\.jsx?$/, exclude: /node_modules/, //屏蔽不需要处理的文件(文件夹)(可选) loader: 'babel-loader' //npm install babel-loader //npm install babel-core }, { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.less$/, loader: 'style-loader!css-loader!less-loader' }, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=25000' }] }, devServer: { contentBase: './build', //默认webpack-dev-server会为根文件夹提供本地服务器,如果想为另外一个目录下的文件提供本地服务器,应该在这里设置其所在目录(本例设置到"build"目录) historyApiFallback: true, //在开发单页应用时非常有用,它依赖于HTML5 history API,如果设置为true,所有的跳转将指向index.html inline: true, //设置为true,当源文件改变时会自动刷新页面 port: 8080, //设置默认监听端口,如果省略,默认为"8080" } };
在命令行执行webpack-dev-server命令就会运行服务器
webpack-dev-server
如果需要停止服务,在终端按ctrl+c
ctrl+c
The text was updated successfully, but these errors were encountered:
No branches or pull requests
项目结构
用npm安装react、webpack
默认已经安装了Nodejs,推荐用cnpm
安装和配置Babel
Babel其实是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到以下目的:
在项目根目录下新建
.babelrc
文件,就是只有后缀名的文件,添加如下代码安装其他loader
讲到这里,我们基本上就可以迅速搭建一个简单的web项目,但不得不提的是webpack loader。它是我个人认为相比于其他模块加载更牛X的地方,将它用于react的开发,结合react与生俱来的优越性能,两者天衣无缝的配合简直就是黄金组合。
总的来说webpack loader可以实现:
为了能够让以上功能奏效,我们要先安装对应的:
babel-loader
而具体的实现,我们只要在下面webpack的配置文件中加入module属性里的loaders:
配置webpack.config.js
webpack.config.js是webpack的配置文件
使用Source Maps,使调试更容易
组件productBox.jsx
新版本推荐使用ES6书写React组件
用旧版本写法会出现以下警告
前端页面index.html
index.html是最终要呈现的页面文件,代码如下
入口文件main.js
main.js是入口文件,用来将React组件放在真正的html中
依赖的描述文件package.json
package.json是一个标准的npm说明文件,里面蕴含了丰富的信息,包括当前项目的依赖模块,自定义的脚本任务等
执行打包
在命令行执行
webpack
命令安装并启用webpack-dev-server
在webpack.config.js增加devServer的配置
在命令行执行
webpack-dev-server
命令就会运行服务器如果需要停止服务,在终端按
ctrl+c
The text was updated successfully, but these errors were encountered: