了解模块化思想 为后面的node学习打基础
命名冲突 文件依赖
https://github.com/seajs/seajs/issues/547html
http://seajs.orgnode
define(function (require, exports, module) {});
//使用单个模块,回调函数中的obj就是模块中的exports对象 seajs.use("modules/demo1/calc.js", function (obj) { console.log(obj.add(5,6)); console.log(obj.mul(5,6)); });
//使用多个模块 seajs.use(["modules/demo1/calc.js","modules/demo1/power.js"] , function (o1,o2) { //o1 对应calc模块中的exports对象 console.log(o1.add(1,2)); //o2 对应power模块中的exports对象 console.log(o2.power(5)); });
define(function (require, exports, module) { exports.add = function (a, b) { return a + b; } exports.sub = function (a, b) { return a - b; } });
//使用module.exports导出成员和exports用法同样 define(function (require, exports, module) { module.exports.add = function (a, b) { return a + b; } module.exports.sub = function (a, b) { return a - b; } });
//使用module.exports导出对象,exports不能够 define(function (require, exports, module) { //能够使用module.exports导出对象 module.exports = { add: function (a, b) { console.log("module"); return a + b; }, sub: function (a, b) { return a - b; } }; });
define(function (require, exports, module) { //依赖另外一个模块,js后缀能够省略 var o = require("./power"); module.exports = { add: function (a, b) { console.log("module"); return a + b; }, sub: function (a, b) { return a - b; }, three: function (a) { return o.power(a) * parseInt(a) ; } }; });
seajs.config({ //设置路径 base: "modules/demo4", //设置别名 alias: { c: "calc", p: "power" } });
function loadJS(path, callback) { var head = document.getElementsByTagName("head")[0]; var node = document.createElement("script"); node.src = path; head.appendChild(node); //浏览器兼容处理 var supportOnload = "onload" in node; if(supportOnload) { node.onload = function () { callback(); } }else{ node.onreadystatechange = function () { if(node.readyState == "loaded" || node.readyState == "complete") { callback(); } } } } //调用 loadJS("js/test.js", function () { test(); })
CMD是懒加载 AMD是预加载