requirejs与seajs
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
对于依赖的模块,AMD 是提前执行,CMD 是延迟执行
// CMD define(function(require, exports, module) { var a = require('./a') a.doSomething() // 此处略去 100 行 var b = require('./b') // 依赖可以就近书写 b.doSomething() // ... }) // AMD 默认推荐的是 define(['./a', './b'], function(a, b) { // 依赖必须一开始就写好 a.doSomething() // 此处略去 100 行 b.doSomething() ... })
写法对比:
配置文件
require.config({ baseUrl:'/js', //根路径 path:{ 'jquery':'./query.js', 'bootstrap':'./bootstrap', 'backone':'./backone', 'modernizr':',.modernizr' }, shim:{ 'modernizr':{ exports:'modernizr' //不支持amd }, 'bootstrap':['jquery'] //依赖 }, map:{ '*':{ 'jquery':'./jquery1.2.4' //默认版本 }, 'jq2':{ 'jquery':'./jquery2.2.4' //升级版本 } }, waitSecound:0, //下载js等待时间默认7s,0为一直等待,否则报失败信息 })
seajs.config({
//设置路径
paths: {
'gallery': 'https://a.alipayobjects.com/gallery'
},
// 设置别名,方便调用
alias: {
'underscore': 'gallery/underscore'
},
debug:false,
// 文件编码
charset: 'utf-8'
});
模块定义:
//app.js require define([],function(){ var add = function(msg, callback) { console.log(msg); callback(); }; return add; }); //app.js seajs define(function(require,exports,module){ module.exports = { add : function(msg, callback) { console.log(msg); callback(); } } });
使用模块:
//requirejs define(['app'], function(app) { app.add("Hello World", function () { console.log("成功"); }); }); //seajs seajs.use(['app'],function(app){ app.add("Hello World", function () { console.log("成功"); }); })