瞭解模塊化思想 爲後面的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是預加載