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 双色表格实现代码
Dec 08 Javascript
点击弹出层效果&amp;弹出窗口后网页背景变暗效果的实现代码
Feb 10 Javascript
Extjs的FileUploadField文件上传出现了两个上传按钮
Apr 29 Javascript
bootstrap3 兼容IE8浏览器!
May 02 Javascript
Angular下H5上传图片的方法(可多张上传)
Jan 09 Javascript
jquery仿微信聊天界面
May 06 jQuery
JavaScript 上传文件(psd,压缩包等),图片,视频的实现方法
Jun 19 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
May 08 Javascript
Vue实现的父组件向子组件传值功能示例
Jan 19 Javascript
浅谈一个webpack构建速度优化误区
Jun 24 Javascript
JavaScript页面加载事件实例讲解
Sep 01 Javascript
layui富文本编辑器前端无法取值的解决方法
Sep 18 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
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
Linux中为php配置伪静态
2014/12/17 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
对于Laravel 5.5核心架构的深入理解
2018/02/22 PHP
我也种棵OO树JXTree[js+css+xml]
2007/04/02 Javascript
javascript 文档的编码问题解决
2009/03/01 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jquery图片轮播特效代码分享
2020/04/20 Javascript
Angular的MVC和作用域
2016/12/26 Javascript
JS获取指定月份的天数两种实现方法
2018/06/22 Javascript
vue实现前台列表数据过滤搜索、分页效果
2019/05/28 Javascript
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
ES11屡试不爽的新特性,你用上了几个
2020/10/21 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
Python hashlib加密模块常用方法解析
2019/12/18 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python 实现将某一列设置为str类型
2020/07/14 Python
python 进程池pool使用详解
2020/10/15 Python
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
巴西图书和电子产品购物网站:Saraiva
2017/06/07 全球购物
基于Python 函数和方法的区别说明
2021/03/24 Python
四年级数学教学反思
2014/02/02 职场文书
检举信的格式及范文
2014/04/04 职场文书
幼儿教师师德演讲稿
2014/05/06 职场文书
励志演讲稿200字
2014/08/21 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
音乐教师求职信范文
2015/03/20 职场文书
如何用JavaScipt测网速
2021/05/09 Javascript
Java用自带的Image IO给图片添加水印
2021/06/15 Java/Android
React列表栏及购物车组件使用详解
2021/06/28 Javascript
SQL写法--行行比较
2021/08/23 SQL Server