美文网首页
Webpack之前世今生

Webpack之前世今生

作者: 馋中解禅 | 来源:发表于2017-07-29 09:52 被阅读0次

1.原始模块加载的弊端

  • 全局作用域下容易造成变量冲突
  • js文件只能按照固定的顺序进行加载
  • 开发人员必须主观解决模块和代码库的依赖关系
  • 在大型项目中各种资源难以管理,长期积累的问题导致代码库混乱不堪

2. CommonJS 规范

  • 允许模块通过 require 方法来同步加载要依赖的模块
  • 然后通过 exports 或 module.exports 来导出需要暴露的模块
  • 缺点:同步的模块加载方式,不能非阻塞的并行加载多个模块

3. AMD 规范

  • 只有一个主要接口 define(id?, dependencies?, factory)
  • 要在声明模块的时候指定所有的依赖 dependencies
  • 还要当做形参传到 factory 中,对于依赖的模块提前执行,依赖前置
  • 缺点:提高了开发成本,代码的阅读和书写比较困难,定义方式的语义不顺畅
  • 实现:RequireJS

4. CMD 规范

  • 与 AMD 相似,尽量保持简单,
  • 与 CommonJS 和 Node.js 的 Modules 规范保持了很大的兼容性
  • 缺点:依赖 SPM 打包,模块的加载逻辑偏重
  • 实现:Sea.js

5. ES6 模块

  • 尽量的静态化,使得编译时就能确定模块的依赖关系,以及输入和输出的变量
  • 缺点:原生浏览器还未实现该标准
  • 实现:Babel

5. webpack 特点

  • 代码拆分:有两种组织模块依赖的方式,同步和异步
  • Loader:将各种类型的资源转换成 JavaScript 模块
  • 智能解析:有一个智能解析器,几乎可以处理任何第三方库
  • 插件系统:有一个功能丰富的插件系统
  • 快速运行:使用异步 I/O 和多级缓存提高运行效率

6.webpack安装

  1. 全局安装webpack
npm install -g webpack
  1. 进入项目目录,生成package.json文件
npm init
  1. 安装webpack依赖
npm install webpack --save-dev

7.编译打包

  1. 新建index.html
// 在页面中引入bundle.js
<script src="bundle.js"></script>
  1. 新建入口文件entry.js
alert('It works!')
  1. 编译entry.js并打包到bundle.js
webpack entry.js bundle.js

// 此时会自动生成bundle.js文件
// 运行index.html将弹出:It works!
  1. 新建模块module.js,并修改entry.js
// module.js
module.exports = 'It works from module.js!'

// entry.js
alert('It works.');
alert(require('./module.js')) 

// 再次编译打包,后刷新页面
// 其它模块可同样类似引入

8.引入css文件

  1. 安装loader
npm install css-loader style-loader
  1. 去掉loader前缀
// 通过新建文件webpack.config.js
var webpack = require('webpack')
module.exports = {
  entry: './entry.js',
  output: {
    path: __dirname,
    filename: 'bundle.js'
  },
  module: {
    loaders: [
      {test: /\.css$/, loader: 'style-loader!css-loader'}
    ]
  }
}
  1. 在entry.js中引入style.css
require("./style.css")

9.引入jQuery文件

// 安装jQuery
npm install jquery --save-dev

// 在entry.js中引入
require("jquery")

10.开启监听模式

webpack entry.js bundle.js --watch

11启动本地服务器

启动之后可点击http://localhost:8080/预览页面

// 安装
npm install webpack-dev-server --save-dev

// 启动
$ webpack-dev-server --progress --colors

12.打印错误信息

webpack --display-error-details

相关文章

  • Webpack之前世今生

    1.原始模块加载的弊端 全局作用域下容易造成变量冲突 js文件只能按照固定的顺序进行加载 开发人员必须主观解决模块...

  • 前世今生

    佛说因果,今生果报是由前世之因。 人们常想是否有前世。我觉得前世是有的,昨天便是前世,今天便是今生。昨日所中之因,...

  • 伴浮生

    不念前世,不待来生 有谁在细语今生 不念前世,不待来生 有谁在相思今生 长情伴浮生 得之我之幸

  • 前世今生之A

    不会取名字…A和B是男的,C是女的 前世1 A爱了B一辈子追了B一辈子对B好了一辈子。到头来,伤透了朋友家人的心,...

  • 前世今生之A

    前世2 A其实一点也不淡然,他也一点也不想离开。 他不能回国,因为B的事,他倾尽全力保护保住公司,保住员工们的生活...

  • Unity C#基础之 多线程的前世今生(下) 扩展篇

    在前面两篇Unity C#基础之 多线程的前世今生(上) 科普篇和Unity C#基础之 多线程的前世今生(中) ...

  • 不了了之

    不了情缘,今生了之 前世缘,今生情 欠我三刀,欠你三刀 不了了之

  • 悲伤的轮回

    曾经的我有百万种差别 但有一点 却是一致的 前世之我一如今生之我 今生之我一如来世之我 都是爱你的 只不过 前世之...

  • 你我今生

    你我今生的遇见,许是前世的牵绊,思之如密,念之甘甜。

  • 将军在上之男昭女惜重生三世千年孽缘

    前世!今生!来世再续! 前世欠谁!今生还!来世再续前缘! 前世因!今生续!来世果!

网友评论

      本文标题:Webpack之前世今生

      本文链接:https://www.haomeiwen.com/subject/rcdnkxtx.html