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 相关文章推荐
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
Mar 21 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
Aug 01 Javascript
JavaScript中的substr()方法使用详解
Jun 06 Javascript
JavaScript中的this到底是什么(一)
Dec 09 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
深入理解vue.js中$watch的oldvalue与newValue
Aug 07 Javascript
vue elementUI tree树形控件获取父节点ID的实例
Sep 12 Javascript
如何解决日期函数new Date()浏览器兼容性问题
Sep 11 Javascript
微信小程序分包加载代码实现方法详解
Sep 23 Javascript
微信小程序实现列表的横向滑动方式
Jul 15 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
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
星际争霸 Starcraft 编年史
2020/03/14 星际争霸
Phpbean路由转发的php代码
2008/01/10 PHP
PHP 定界符 使用技巧
2009/06/14 PHP
PHP中Date()时间日期函数的使用方法小结
2011/04/20 PHP
PHP的范围解析操作符(::)的含义分析说明
2011/07/03 PHP
ThinkPHP简单使用memcache缓存的方法
2016/11/15 PHP
网页上的Javascript编辑器和代码格式化
2010/04/25 Javascript
js获取GridView中行数据的两种方法 分享
2013/07/13 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
简介JavaScript中valueOf()方法的使用
2015/06/05 Javascript
jQuery实现气球弹出框式的侧边导航菜单效果
2015/09/22 Javascript
理解Javascript的call、apply
2015/12/16 Javascript
js字符串截取函数slice、substring和substr的比较
2016/05/17 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
谈谈vue中mixin的一点理解
2017/12/12 Javascript
微信小程序登陆注册功能的实现代码
2019/12/10 Javascript
uni-app微信小程序登录授权的实现
2020/05/22 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
python开发中range()函数用法实例分析
2015/11/12 Python
python logging日志模块的详解
2017/10/29 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python操作mongodb数据库进行模糊查询操作示例
2018/06/09 Python
python如何从文件读取数据及解析
2019/09/19 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
美国大城市最热门旅游景点门票:CityPASS
2016/12/16 全球购物
幼儿运动会邀请函
2014/01/17 职场文书
反邪教标语
2014/06/23 职场文书
色戒观后感
2015/06/12 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Python万能模板案例之matplotlib绘制直方图的基本配置
2022/04/13 Python