Open ccjoe opened 7 years ago
放大模式这里不是很理解,能否写的详细一点呢,谢谢
@sunshine940326 放大模式,如上所述当一个模块很复杂很大的时候, 需要将这个模块分解成多个模块。
var module1 = (function(){
var _count = 0;
var m1 = function(){};
var m2 = function(){};
return {
m1 : m1,
m2 : m2
};
})();
var module2 = (function (mod){
mod.m3 = function () {};
return mod;
})(module1);
如上代码假设module1是个很大的模块, module1实现了一部分逻辑, 那么属于module1但又相对较独立的模块可以独立出来写在module2. module1的方法有m1,m2 module2的方法有m1,m2,m3
module2 放大了module1模块的内部逻辑,module2最后return 的结果是扩展了的module1。
title: JS模块化演变及组件化 speaker: Joe Liu date: 2015年3月8日 keyword: 模块化, 组件化, 构建
Table Of Contents
No Modular [5-10min] (1) {:&.fadeIn}
JS Modular [15-20min] (2-3)
Componentizes [15-20min] (4-5)
No Modular
背景 {:&.moveIn}
问题
优化
基本的模块化封装
原始写法
对象写法
立即执行函数(Immediately-Invoked Function Expression,IIFE)写法
放大模式
如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这时就有必要采用"放大模式"(augmentation)
宽放大模式(Loose augmentation)
输入全局变量
JS Modular
require.js (AMD)
[magic data-transition="cover-circle"]
AMD规范包含以下内容
如果factory为对象,则该对象即为模块的返回值
// 暴露公共方法 return { b: b, c: c } }); require('ModuleNameOrFileName', function(ModuleNameOrFileName){ //do sth });
node.js(server CMD)
sea.js(browser CMD) {:&.moveIn}
define(function(require, exports, module) {
{:&.moveIn}});
{:&.moveIn}UMD(Universal Module Definition)
ES6(ECMAScript 6/2015年6月17日发布)
European Computer Manufacturers Association [Ecma国际]
简单ES6模块化
项目中ES6模块化:gom-es6
项目中ES6构建: (browserify构建示例(gom-es6)/ webpack构建示例(vue-ratchet))
组件化(Componentizes) 参见另一篇......