CommonJS模版规范
CommonJS
node采用CommonJS模块规范;
有自己的作用域,一个文件里的变量,函数,类都是私有的;
CommonJS的每个模版内部的module对象的exports属性是对外的接口,加载模版本质是加载该模版的module.exports属性;
输入的是输出值的拷贝/复制。
require方法用于加载该模版;
//导出
var exports = module.exports;
exports.name = "15";
//导入
var example = require('./example.js')
example.name//为15
ES6模版规范
ES6
babel,js等工具将ES6规范编译成CommonJS规范;
使用export和import来导入导出模版;
export,export default都是导出常量,函数,文件,模版等,通过inport引入使用;
在一个文件或者模版中,export,import可以有多个;
但是export default仅有一个,和多个export同时存在;
通过export导出时,导入时候需要加{},而export default不需要,不需要知道加载的模版变量名;
let yo = "Muhaha"
export default yo
//导出 yo.js
function yo(){
alert(x+y)
}
export default yo
//导入
import yo from './yo'
yo(1,1)//为2
本质是,输出一个default的变量,系统可以任意命名它;
如果是函数:
//导出 yo.js
function yo(x,y){
alert(x+y)
}
export {yo}
//导人
import {yo} from './yo.js'
yo(1,1)//弹出2
CMD规范是sea.js推崇的规范,就近依赖;
AMD规范,依赖前置;
都是异步加载,AMD会立即加载,CMD当使用时候才加载;