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替换已存在于element上的event的方法
Mar 09 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
React.Js添加与删除onScroll事件的方法详解
Nov 03 Javascript
vue项目中使用scss的方法步骤
May 16 Javascript
js常用正则表达式集锦
May 17 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
Windows下安装 node 的版本控制工具 nvm
Feb 06 Javascript
Vue项目移动端滚动穿透问题的实现
May 19 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 Javascript
js面向对象方式实现拖拽效果
Mar 03 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
文件上传的实现
2006/10/09 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
PHP number_format函数原理及实例解析
2020/07/14 PHP
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
jquery插件冲突(jquery.noconflict)解决方法分享
2014/03/20 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
jquery实现漂亮的二级下拉菜单代码
2015/08/26 Javascript
如何消除inline-block属性带来的标签间间隙
2016/03/31 Javascript
基于angular中的重要指令详解($eval,$parse和$compile)
2016/10/21 Javascript
jQuery删除当前节点元素
2016/12/07 Javascript
bootstrap datetimepicker 日期插件在火狐下出现一条报错信息的原因分析及解决办法
2017/03/08 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
javascript实现数字配对游戏的实例讲解
2017/12/14 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
2018/09/15 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
[57:50]DOTA2上海特级锦标赛主赛事日 - 4 胜者组决赛Secret VS Liquid第二局
2016/03/05 DOTA
python中的全局变量用法分析
2015/06/09 Python
简单谈谈python中的多进程
2016/11/06 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Python2和Python3中@abstractmethod使用方法
2020/02/04 Python
pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)
2020/06/24 Python
python不同版本的_new_不同点总结
2020/12/09 Python
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
电气自动化大学生求职信
2013/10/16 职场文书
高中生毕业学习总结的自我评价
2013/11/14 职场文书
社区十八大感言
2014/01/19 职场文书
银行优秀员工事迹
2014/02/06 职场文书
建筑工地宣传标语
2014/06/18 职场文书
Python3接口性能测试实例代码
2021/06/20 Python
ant design vue的form表单取值方法
2022/06/01 Vue.js