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 相关文章推荐
xml 与javascript结合的问题解决方法
Mar 24 Javascript
JavaScript之IE的fireEvent方法详细解析
Nov 20 Javascript
Bootstrap table 定制提示语的加载过程
Feb 20 Javascript
整理一些最近经常遇到的前端面试题
Apr 25 Javascript
angularJs利用$scope处理升降序的方法
Oct 08 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
Dec 06 jQuery
记录一次完整的react hooks实践
Mar 11 Javascript
解析vue、angular深度作用选择器
Sep 11 Javascript
在Koa.js中实现文件上传的接口功能
Oct 08 Javascript
p5.js实现简单货车运动动画
Oct 23 Javascript
vue点击按钮动态创建与删除组件功能
Dec 29 Javascript
Element-ui 自带的两种远程搜索(模糊查询)用法讲解
Jan 29 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
PHP 常用时间函数资料整理
2016/10/22 PHP
php导出csv文件,可导出前导0实例代码
2016/11/16 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
IE与firefox下Dhtml的一些区别小结
2009/12/02 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
2013/04/24 Javascript
简单几行JS Code实现IE邮件转发新浪微博
2013/07/03 Javascript
JavaScript避免内存泄露及内存管理技巧
2014/09/05 Javascript
JavaScript中constructor()方法的使用简介
2015/06/05 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
JS控制页面跳转时未请求要跳转的地址怎么回事
2016/10/14 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
解决LayUI数据表格复选框不居中显示的问题
2019/09/25 Javascript
Python解析树及树的遍历
2016/02/03 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
python3 面向对象__类的内置属性与方法的实例代码
2018/11/09 Python
python实现图片识别汽车功能
2018/11/30 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
Html5调用手机摄像头并实现人脸识别的实现
2018/12/21 HTML / CSS
前台接待岗位职责
2013/12/03 职场文书
玲玲的画教学反思
2014/02/04 职场文书
金秋助学感谢信
2015/01/21 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
小学生暑假安全保证书
2015/07/13 职场文书
如何获取numpy array前N个最大值
2021/05/14 Python
Python数据可视化之用Matplotlib绘制常用图形
2021/06/03 Python