WebPack入门

前端模块化打包工具
“高内具,低耦合”
"Everything is a module"(万物皆模块)

1、什么是模块化

是一种将系统分离成独立功能部分的方法,严格定义模块接口、模块间具有透明性。

1.1、模块化历史

1.1.1、无模块化时代

  • 全局变量泛滥;
  • 命名冲突;
  • 依赖关系管理。
//a.js
var a = function(){
  alert('a');
}
//b.js
var b = function(){
  a();
}
//index.html
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>

1.1.2、模块萌芽时代

  • 使用立即执行函数(IIFE)
//实例1:
var moduleA = function(){
  var a, b;
  return {
    message: function(c){
      alert(a + b + c);
    }
  }
}();
//实例2:
(function(window){
  window.jQuery = window.$ = jQuery;
})(window);

1.1.3、现代模块时代

1.1.3.1、CommonJS

var math = require('math');
math.add(2, 3);//5

1.1.3.2、AMD(RequireJS)/CMD(SeaJS)

AMD是RequireJS在推广过程中对模块定义的规范化产出;
CMD是SeaJS在推广过程中对模块定义的规范化产出。
区别:

  • 从依赖的模块,AMD是提前执行,CMD是延迟执行;
  • 从依赖的位置,AMD推崇依赖前置,CMD推崇依赖就近。
//AMD:
define(['./a', './b'], function(a, b){
  //依赖必须在开始就书写
  a.doSomething();
  b.doSomething();
});
require(['math'], function(math){
  math.add(2, 3);
});

//CMD:
define(function(require, exports, module){
  var a  = require('./a');//依赖就近书写
  a.doSomething();
  var b = require('./b');//依赖就近书写
  b.doSomething();
});

1.1.3.3、ES6(Module)

import math from 'math';
math.add(2, 3);//5

2、为什么使用WebPack

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 什么是模块化开发? 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js...
    半世韶华忆阑珊阅读 3,848评论 0 0
  • 随着前端业务复杂度的增加,模块化成为一个大的趋势。而在ES6还未被浏览器所支持的情况下,commonjs作为ES6...
    吴高亮阅读 4,638评论 0 3
  • 前言 众所周知目前比较火的工具就是gulp和webpack,但webpack和gulp却有所不同,本人两者的底层研...
    cduyzh阅读 5,195评论 0 13
  • 什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)...
    梅_梅阅读 2,939评论 0 2
  • 今天媽媽放假就去學校幫我辦理手續,太巧了那兩位老師都不在,她們叫我去找機長。我還猶猶豫豫,還真的挺害羞的,我還拉著...
    芹Danae阅读 1,066评论 0 0