前端模块化规范
Q: 为什么要有模块?
A: 为了代码复用。
Q:为什么要有模块化规范?
A: 为了约束大家统一模块的写法。
CommonJS
Node.js采用的便是CommonJS规范
var a = require('moudleA')
a.doSomething()
这种加载是同步加载(因为服务端是直接从磁盘读取文件,所以可以做到同步加载)。
AMD (Asynchronous Module Definition )
require(['moudleA'],function(a){
a.doSomething()
})
require.js和curl.js采用的便是AMD规范
wiki:AMD (中文版)
CMD(Common Module Definition)
sea.js遵循的是CMD规范,CMD规范和AMD规范的区别:
CMD推崇 as lazy as possible ,依赖就近。
AMD推崇依赖前置
//CMD
define(funciton(require,exports,moudle){
var a = require('moudleA')
a.doSomething()
//省略100行
var b = require('moudleB')
b.doSomething()
})
//AMD
define(['moudleA','moudleB'],function(a,b){
a.doSomething()
//省略100行
b.doSomething
})
ES6 module
基本用法:
//moudleA.js
export function a(){
doSomething()
}
//main.js
import {a} from './moudleA'
a()
//moudleA.js
export default function a(){
doSomething()
}
//main.js
import whatever from './moudleA'
whatever()
感谢阅读,如有错误,欢迎指出。