webpack入门+react环境配置


Posted in Javascript onFebruary 08, 2017

小结放在前:这篇文章主要是为下一篇的react提前铺好路,webpack是一个前端资源模块化管理和打包工具,说白了就是方便我们管理自己的常用的一些代码,比如你开发中用到sass以及jade同时用到es6,开发时你不可能改动某个地方就挨个命令去转换在到浏览器去看效果,那样效率是非常低的。所以webpack帮我们省去了那些多余的步骤

webpack 基本安装

开始前还是万万不能缺少的安装:

npm install webpack -g

安装完接着是建个文件夹新建一个package.json依赖管理文件

npm init  //运行后  按提示填写   当然嫌麻烦 就直接下一步  下一步就好  无伤大碍

现在安装我们的webpack

npm install webpack --save-dev 
//--save-dev 的意思是将这个安装过程记录到我们的package.json依赖管理文件里

完后新建一个文件并命名为webpack.config.js(如同我们的常规的 gulpfile.js、Gruntfile.js),就是一个配置项,告诉 webpack 它需要做什么。

打开webpack.config.js引入webpack

var webpack = require('webpack');

webpack 基本入门

webpack主要结构分三个:入口文件配置(entry)、入口文件输出配置(output)、加载器配置(module)、其他配置(resolve)

入口文件配置

entry: {
 index : './src/main.js'
 },

入口文件输出配置

//配置编译成功后文件存放的位置
output: {
 path: 'dist/js', //编译后文件所在的文件夹
 filename: '[name].js' //根据入口文件名命名编译后的文件名,编译后文件还是叫main.js
 },

加载器配置

module: {
 //最关键的一块配置,它告知 webpack 每一种文件都需要使用什么加载器来处理
 loaders: [
 { test: /\.css$/, loader: 'style-loader!css-loader' },
 { test: /\.js$/, loader: 'jsx-loader?harmony' },
 { test: /\.scss$/, loader: 'style!css!sass?sourceMap'},
 { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'}
 ]
 },

其他配置

resolve: {
 //自动扩展文件后缀名,意味着我们require模块可以省略不写后缀名
 extensions: ['', '.js', '.json', '.scss']
 }

ok!好记忆不如烂笔头,现在我们来自己搭建一个react的开发环境吧!

先参考我的目录结构

webpack入门+react环境配置

build存放编译后的文件,development存放react代码的文件夹,components存放react组件的文件夹,node_modules存放安装的依赖

我们先要安装一些项目依赖:

npm install --save-dev react react-dom
npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react
npm install --save-dev style-loader css-loader sass-loader url-loader
npm install --save-dev webpack-dev-server 
//自动刷新修改后的结果,在webpack.config.js中配置webpack-dev-server,
//在这里需要修改下entry的路径,给它加一个webpack/hot/dev-server,后文会提到

要是安装失败那就分开一个个装,还不行就用淘宝的cnpm装 ,还不行就看看你的node和npm的环境变量等配置(亲身体会T_T)

npm install cnpm -g

行!接下来是文件的内容

webpack.config.js文件的配置如下:

var path = require('path');
var webpack = require('webpack'); //加载webpack依赖包
module.exports = {
 entry: ['webpack/hot/dev-server', path.resolve(__dirname, './development/main.js')], 
 //入口文件并添加了热加载
 output: {
 path: path.resolve(__dirname, './build'),
 filename: 'bundle.js' //输出文件
 },
 module: {
 loaders: [
 {
 test: /\.js?$/,
 exclude: /(node_modules|bower_components)/,
 loader: 'babel',
 query: {
 presets: ['es2015', 'react']
 } //将react编译成js文件
 },
 { test: /\.css$/, loader: 'style-loader!css-loader' }, 
 //打包css文件
 { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, 
 //编译sass文件
 { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'} 
 //对图片进行打包
 ]
 },
 plugins: [
 new webpack.HotModuleReplacementPlugin()
 ],
 resolve: {
 //自动扩展文件后缀名
 extensions: ['', '.js', '.json', '.scss', '.ts']
 }
};

main.js内容如下:

let React = require('react');
let ReactDOM = require('react-dom');
let AppComponent = require('./components/index.js');
ReactDOM.render(<AppComponent />, document.getElementById('content'));

index.js内容如下:

var React = require('react');
var ProductBox;
ProductBox = React.createClass({
 render: function () {
 return (
 <div className="productBox">
 hello react&es2015&webpack!!!
 </div>
 );
 }
});
module.exports = ProductBox;

index.html内容如下:

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>React Project</title>
</head>
<body>
<script src="http://localhost:8080/webpack-dev-server.js"></script>
<div id="content"></div>
<script src="./bundle.js"></script>
</body>
</html>

将上面的文件写好后并放到对应文件夹内运行命令npm run build dev,成功后浏览器访问地址location:8080,就会显示出对应界面

结果:

hello react&es2015&webpack!!!

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
jquery 子窗口操作父窗口的代码
Sep 21 Javascript
Javascript中定义方法的另类写法(批量定义js对象的方法)
Feb 25 Javascript
防止浏览器记住用户名及密码的简单实用方法
Apr 22 Javascript
js中的push和join方法使用介绍
Oct 08 Javascript
JavaScript中this详解
Sep 01 Javascript
javascript实现下雨效果
Mar 27 Javascript
JS给按钮添加跳转功能类似a标签
May 30 Javascript
node跨域请求方法小结
Aug 25 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
Oct 25 Javascript
js阻止默认右键的下拉菜单方法
Jan 02 Javascript
浅谈Webpack 持久化缓存实践
Mar 22 Javascript
vuex提交state&amp;&amp;实时监听state数据的改变方法
Sep 16 Javascript
JavaScript实现鼠标点击导航栏变色特效
Feb 08 #Javascript
jQuery实现优雅的弹窗效果(6)
Feb 08 #Javascript
JavaScript中的子窗口与父窗口的互相调用问题
Feb 08 #Javascript
深入理解js中的加载事件
Feb 08 #Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 #Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
Feb 08 #Javascript
setTimeout学习小结
Feb 08 #Javascript
You might like
利用 window_onload 实现select默认选择
2006/10/09 PHP
使用swoole扩展php websocket示例
2014/02/13 PHP
完美解决thinkphp验证码出错无法显示的方法
2014/12/09 PHP
学习php设计模式 php实现装饰器模式(decorator)
2015/12/07 PHP
php集成动态口令认证
2016/07/21 PHP
javascript Xml增删改查(IE下)操作实现代码
2009/01/30 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
两个数组去重的JS代码
2013/12/04 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
JS快速实现移动端拼图游戏
2016/09/05 Javascript
基于AngularJS前端云组件最佳实践
2016/10/20 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue-cli3脚手架的配置及使用教程
2018/08/28 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
JavaScript遍历DOM元素的常见方式示例
2019/02/16 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
js实现右键弹出自定义菜单
2020/09/08 Javascript
vue实现表格合并功能
2020/12/01 Vue.js
使用pyecharts在jupyter notebook上绘图
2020/04/23 Python
使用 Python 实现简单的 switch/case 语句的方法
2018/09/17 Python
Python实现FTP弱口令扫描器的方法示例
2019/01/31 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
2019/02/21 Python
python实现桌面气泡提示功能
2019/07/29 Python
CSS3 完美实现圆角效果
2009/07/13 HTML / CSS
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
英语道歉信范文
2014/01/09 职场文书
职业生涯规划书范文
2014/03/10 职场文书
求职简历自我评价范例
2014/03/12 职场文书
党的群众教育实践活动实施方案
2014/06/12 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
2015年助残日活动总结
2015/03/27 职场文书