最近学习了一下Webpack,个人感觉还是非常实用的,现在总结一下自己的学习笔记。

什么是 Webpack

Webpack 是一个模块打包器。它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资

Webpack 的特点

1、代码拆分

Webpack 有两种组织模块依赖的方式,同步和异步。异步依赖作为分割点,形成一个新的块。在优化了依赖树后,每一个异步区块都作为一个文件被打包。

2、Loader

Webpack 本身只能处理原生的 JavaScript 模块,但是 loader 转换器可以将各种类型的资源转换成 JavaScript 模块。这样,任何资源都可以成为 Webpack 可以处理的模块。

3、智能解析

Webpack 有一个智能解析器,几乎可以处理任何第三方库,无论它们的模块形式是 CommonJS、 AMD 还是普通的 JS 文件。甚至在加载依赖的时候,允许使用动态表达式 require("./templates/" + name + ".jade")。

4、插件系统

Webpack 还有一个功能丰富的插件系统。大多数内容功能都是基于这个插件系统运行的,还可以开发和使用开源的 Webpack 插件,来满足各式各样的需求。

快速运行

安装nodejs

安装npm (NodeJS包管理和分发工具)

  npm常用命令
npm init 创建package.json文件
npm install <module-name> -g/--save-dev/--save 安装模块
npm update <module-name > 更新模块
npm uninstall <module-name > 卸载模块

安装webpack

用 npm 安装 Webpack
npm install webpack -g
安装后就在命令行中使用 webpack命令
把依赖写入 package.json
npm install webpack --save-dev

webpack命令

打包命令 webpack app.js output.js
app.js 打包的入口文件
output.js 打包后的文件

模块加载器(loader)

各种不同文件类型的资源, Webpack 有对应的模块 loader
安装加载器
npm install xxx-loader --save-dev
例如:css-loader style-loader 处理css文件和样式
更多参考:
http://webpack.github.io/docs/using-loaders.html

webpack的配置项说明

     entry:     打包的入口文件  String|Object
output: 配置打包结果 Object
path: 定义输出文件路径
filename: 指定打包文件名称
module: 定义了对模块的处理逻辑 Object
loaders: 定义了一系列的加载器 Array
[{
test: 正则,匹配到的文件后缀名
loader/loaders:string|array,处理匹配到的文件
include:String|Array 包含的文件夹
exclude:String|Array 排除的文件夹
}]
resolve:{
extensions:['','.js',".css",“jsx”] //自动补全识别后缀
}

webpack-dev-server

轻量级的服务器
修改文件源码后,自动刷新页面就能把修改同步到页面上

安装webpack-dev-server

           npm install webpack-dev-server  -g
安装后在命令行中使用 webpack-dev-server命令
把依赖写入 package.json
npm install webpack-dev-server --save-dev
使用命令 webpack-dev-server --hot --inline 做到自动刷新

在webpack.config.js中配置服务

自动生成html文件

安装  npm install html-webpack-plugin --save-dev

 使用

在webpack.config.js中引入
var htmlWebpackPlugin = require('html-webpack-plugin');

在plugins中配置

    plugins:[
new htmlWebpackPlugin({
title:"My first react app",
chunks:[“index”]
})
]

         babel作用

将ES6代码转为ES5代码   

官网:http://babeljs.io/

安装babel-cli

        npm install babel-cli -g
安装后就在命令行中使用 babel 命令
把依赖写入 package.json
npm install babel-cli --save-dev
转换命令:babel app.js --out-file build.js

使用es2015 

       npm install --save-dev babel-preset-es2015
在目录下创建.babelrc文件,设置为
{"presets": ["es2015"]}

安装babel-loader加载器

使用webpack处理文件中ec6语法
在webpack.config.js中加入对应的处理
{
test: /\.js$/
loader:'babel',
query:['es2015']
}

安装react模块

npm install react react-dom babel-preset-react --save-dev

{"presets": ["es2015","react"]}

热加载

      npm install react-hot-loader --save-dev

在loader中修改为:
loaders: ['react-hot','babel?presets[]=es2015&presets[]=react']
include:path.resolve(__dirname,"react")

webpack+babel+react操作小结的更多相关文章

  1. 详解 Webpack+Babel+React 开发环境的搭建

    1.认识Webpack 构建应用前我们先来了解一下Webpack, Webpack是一个模块打包工具,能够把各种文件(例如:ReactJS.Babel.Coffeescript.Less/Sass等) ...

  2. npm+webpack+babel+react安装

    npm+webpack+babel+react安装 1.首先要安装 Node.js, Node.js 自带了软件包管理器 npm 2.在项目文件目录下生成package.json # 进入项目目录$ ...

  3. webpack+babel+react+antd技术栈的基础配置

    webpack+babel+react+antd技术栈的基础配置 前段时间使用webpack+babel+react+antd做了一套后台管理系统,刚开始被一大堆的新知识压的喘不过气来,压力挺大的.还 ...

  4. 重温 Webpack, Babel 和 React

    开始之前 在书写文章之前,我假设大家已经有了 JavaScript,Node 包管理工具,Linux 终端操作 这些基本技能,接下来,我将一步一步指引大家从头搭建一个 React 项目 最终实现的效果 ...

  5. 使用 Babel + React + Webpack 搭建 Web 应用

    话不说直接上正题. 环境搭建 Babel--目前浏览器对于ES6的语法解析支持度还不高,所以要通过转码在编译,所以在使用ES6之前要安装Babel,之前安装的时候遇到了一些问题但是没有全部记录下来,现 ...

  6. webpack+babel项目在IE下报Promise未定义错误引出的思考

    低版本浏览器引起的问题 最近开发一个基于webpack+babel+react的项目,一般本地是在chrome浏览上面开发,chrome浏览器开发因为支持大部分新的js特性,所以一般不怎么需要poly ...

  7. webpack,react,babel

    window搭建webpack,react,babel傻瓜教程   首先现在的webpack教程已经很多了,写这篇的原因是因为自己在从小白开始的搭建过程中,并没有找到比较好的教程,花费了很多的时间,s ...

  8. react+webpack+babel环境搭建

    [react+webpack+babel环境搭建] 1.react官方文档推荐使用 babel-preset-react.babel-preset-es2015 两个perset. Babel官方文档 ...

  9. webpack+babel+ES6+react环境搭建

    webpack+babel+ES6+react环境搭建 步骤: 1 创建项目结构 注意: 先创建一个项目目录  react  这个名字自定义,然后进入到这个目录下面 mkdir app //创建app ...

随机推荐

  1. python-flask之request的属性

    flask的request模块的属性(参考) #代码示例,仅仅是为了测试request的属性值 @app.route('/login', methods = ['GET','POST']) def l ...

  2. 1. C/C++项目一

    需求: 使用C语言封装string 字符串,实现字符串的增.删.改.查等API函数. 要求: 不能使用 string 库函数,所有库函数必须自己手动实现. [项目实现] myString.h 代码如下 ...

  3. VS2010 由于缺少调试目标"xx.exe"

    有两种可能会造成这种现像.A.配制属性出了问题. 一种方法:右击“解决方案”->“属性”,在弹出的“属性页”框中,选择左边的“配置属性”,在右边,将应用程序的生成那个框框勾上,二可能是这里的属性 ...

  4. WPF 仿IPhone滑块开关 样式 - CheckBox

    原文:WPF 仿IPhone滑块开关 样式 - CheckBox <Style x:Key="CheckRadioFocusVisual"> <Setter Pr ...

  5. 洛谷 P2234 [HNOI2002]营业额统计

    题目描述 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额.分析营业情况是 ...

  6. 小程序tabBar显示问题

    我一直在纠结为什么小程序在有的页面显示,有的页面不显示 查了一下才知道,小程序tabBar只在tabBar中的list定义了页面的才会显示,其余页面不会显示 如下例:tabBar只在画红框的页面显示

  7. 【转】xml文件中加入本地的dtd约束文件

    首先,我是以加载Struts2的来演示: 1 我们可以看到,越是文件中的 显示的是PUBLIC, 即从网络中获取约束文件dtd ,此时我需要将其配置成从自己的本地来获取dit文件 首先,先要有stru ...

  8. Windows10 下安装配置IIS + MySQL5.7.19 + nginx1.12.1 + php7.1.7

    环境: VMWare Workstation Player12 Windows10 Pro x64 一.安装系统 vmware 会采用 fast install 方式很快装完,无需配置什么. 二.配置 ...

  9. POJ_1862 Stripies 【贪心】

    一.题面 POJ1862 二.分析 反省一下,自己英语水平着实不行,该题其实就是问若给出若干个这种生物,根据这种体重变换方式,最终合并成一个后,体重最少是多少.根据公式 $m = 2\sqrt{m_{ ...

  10. [微信小程序] -- wxss引用外部css文件及iconfont

    小程序引入外部文件的方式是: 只需要在其css文件写上: @import "外部css地址.wxss"; 因为项目需要, 小程序中需要使用iconfont , 很容易就想到了H5的 ...