1 var loder = {}; 2 var define = loder.define = function(id,deps,factory){ 3 loader[id] = factory; 4 };
/
)分隔的多項組成。.
或 ..
。.js
。.
或 ..
,則該模塊標識是相對標識.
或 ..開頭
頂級路徑,不以
.或 ..及
斜線(/
)開頭"http://"
、"https://"
、"file:///"
等協議標識開頭的seajs/x.y.z
字串,也能夠指定seajs.config({base:});require
所在模塊的標識來解析base
基礎路徑解析。(頂級標識由字符串開頭)模塊定義中require
和 require.async
的相對路徑相對當前模塊路徑來解析。
若是咱們能理解其模塊標識解析設計的出發點,那麼就能夠輕易的理解這些而不用記憶這麼多:javascript
目錄結構以下:css
www
--app --blog index.html --sea-modules --seajs
--2.2.0
sea.js
--blog
--user
--1.0.0
main.js
--static
--user
--src
a.js
b.js
main.js
--dist
main.js
package.json
Makefile
// /www/static/user/src/a.js define(function(require,exports,module){ module.exports = function(){ // .......................... }; });
// /www/static/user/src/b.js define(function(require,exports,module){ module.exports = function(){ // .......................... }; });
// /www/static/user/src/main.js define(function(require,exports,module){
var a = require('./a"); var b = require('./b");
// ..............
});
// /www/static/user/package.json { family:"blog", name:"user", version:"1.0.0", spm:{ output:["main.js"] } }
// /www/static/user/Makefile
build: @spm build deploy: @rm -rf ../../sea-modules/blog/user @mkdir ../../sea-modules/blog/user @mkdir ../../sea-modules/blog/user/1.0.0 @cp dist/*.* ../../sea-modules/blog/user/1.0.0 @echo @echo " deploy to seajs-modules/blog/user/1.0.0" @echo
// /www/static/user/dist/main.js
define("blog/user/1.0.0/main",["./a","./b"],function(require){ var a = require('./a"); var b = require('./b"); }); define("blog/user/1.0.0/a",[],function(require,exports,module){ // ....................... }); define("blog/user/1.0.0/b",[],function(require,exports,module){ // ....................... });
而後運行make deployhtml
會將 ../dist/main 部署到 /www/sea-modules/blog/user/1.0.0/main.jsjava
在頁面中如何加載模塊呢?json
<!-- www.expample.com/app/blog/index.html --> <script src="/sea-modules/seajs/2.4.0/sea.js" id="seajson"></script> <script> seajs.config({charset:"gbk"}); seajs.use("blog/user/1.0.0/main"); </script>