/**
* AMC
* CMD
* CommonJS
* ES6模块:总结的
*/
/**
* AMD的应用的
* script---data-main="vender/main" src="vender/require.js"
*/
// main.js,require.js为全局添加了define函数,
require(['./add', './square'], function (addModule, squareModule) {
addModule.add(1, 1);
squareModule.square(3);
})
define(function () {
var add = function (x, y) {
return x + y;
}
return {
add: add
};
})
/**
* sea.js--CMD
* seajs.use("./vender/main");
*/
// main.js的引用
define(function (require, exports, module) {
var addModule = require('./add');
console.log(addModule.add(1, 1));
});
// add的
define(function (require, exports, module) {
var add = function (x, y) {
return x + y;
};
module.exports = {
add: add
}
});
/**
* AMD 与 CMD 的区别
* 1,CMD推崇依赖就近,AMD推崇依赖前置
* 2,AMD是提前执行,CMD是延迟执行
* 3,AMD是将需要将模块加载完成再执行代码,而CMD是在require的时候加载模块,加载完成再去执行
*/
/**
* commonJS,AMD和CMD是采用浏览器端的,而服务器端node,采用的是CommonJS规范
* commonJS模块加载模块是同步,AMD加载模块不是同步的
* */
// commonjs
var add = function (x, y) {
return x + y;
};
module.exports.add = add;
// 引入模块的方式
var add = require('./add.js');
console.log(add.add(1, 1));
/**
* es6的模块,commonJS对比
* 1,CommonJS是值拷贝,es6是输出的值引用
* 2,CommonJS是模块运行时加载,ES6是编译时输出接口
*/
// CommonJS是值拷贝,当内部的值发生变化,模块内部变化就不会影响到这个值
// es6是是值引用,当内部的值发生变化的时候,模块内部变化就会影响这个值
// ES6
var firstName = 'Michael';
var lastName = 'Jackson';
var year = 1958;
export { firstName, lastName, year };
// es6引用
import { firstName, lastName, year } from './profile';
// ES6的引用----Babel进行编译--commonJS----webpack打包形成浏览器可以解析的语言