核心提示:以功能块为单位进行程序设计,实现求解算法的方法称为模块化,原则是高内聚,低耦合,高内聚是尽量减少不同文件中的函数的交叉引用,低耦合是模块与模块之间要相互独立,模块化的目的是为了降低程序设计的复杂度,使...
以功能块为单位进行程序设计,实现求解算法的方法称为模块化,原则是“高内聚,低耦合”,高内聚是尽量减少不同文件中的函数的交叉引用,“低耦合”是模块与模块之间要相互独立,模块化的目的是为了降低程序设计的复杂度,使程序设计、调试和维护等操作简单化。模块化的产生是由于网站页面复杂度暴露出的,比如全局变量的冲突,函数命名冲突,依赖关系处理,实例中b.js依赖a.js,标签书写顺序必须按照先后排列。因此js模块化编程已经成为一个迫切的需要。
当下流行的模块化规范主要有,AMD、CMD、COMMONJS
AMD 是RequireJS 在推广过程中对模块化定义的规范化产出(异步加载 依赖前置)
define(['package/lib'],function foo(){ lib.log('hello world') } return { foo:foo } )
CMD 是SeaJS 在推广过程中对模块化定义的规范化产出 (同步 即用即返回 依赖就近)
define(function(require,exports,module){ var $ = require('jqury'); var Spinning = require('./spinning') })
COMMONJS 是module.exports ?在node.js 定义的
exports.area = fucntion(r){ return Math.PI*r*r };
ES6标准模块支持
主要特性 export/import?
import {name,clolr, weight} from "./car" //导入时可以对模块重命名 import {name as busName} from "./car" //如果没有模块输出也可加载其他模块 import lodash //通过*整体加载某个文件 import *as car from "./car" console.log(car.name); console.log(car.color);
模块化的具体用法可以查看:
https;//github.com/tc39/ecma262ES6解析需要babel:
http://babeljs.io/