分爲 相對 與 頂級 標識。以.
或..
開頭,則爲相對標識 。以小駝峯字符串
開關,則爲頂級標識。javascript
// 假設 base 路徑是:http://example.com/assets/ // 在模塊代碼裏: require.resolve('gallery/jquery/1.9.1/jquery'); // => http://example.com/assets/gallery/jquery/1.9.1/jquery.js
Seajs除了相對與頂級標識以外,還可使用普通路徑來加載模塊。java
就到當前頁面的腳本分析(能夠右鍵查看源碼)jquery
//sea.js的路徑,即 base 路徑,相對於當前頁面 <script src="http://yslove.net/actjs/assets/sea-modules/seajs/2.1.1/sj.js"></script> <script type="text/javascript"> //配置Seajs seajs.config({ alias: { //頂級標識,基於 base 路徑 'actjs': 'actjs/core/0.0.7/core.js', // => http:// 'position': 'actjs/util/0.0.2/position.js' } }); seajs.config({ alias: { //普通路徑,相對於當前頁面 'affix': '../../actjs/assets/widget/src/widget-affix.js', //相對標識,相對於當前頁面 'init': './src/init.js' } }); </script>
開始的時候會以爲Seajs的路徑有點不習慣,由其是Base路徑。切記Base路徑就是sea.js的那個文件的上級路徑,而後全部頂級標識,相對標識都是相對於這個Base來調整。ui
任何一個模塊的運行都涉及到兩個步驟:模塊定義
和 模塊執行
,上面的代碼兩個步驟都包括在內。而使用了 Sea.js ,咱們不但願用戶去手動寫 script
標籤引用模塊。但願只須要 seajs.use
模塊的文件路徑便可(入口惟一):spa
seajs.use('path/to/module', function(Module) { // Module });
Sea.js 會自動插入 script 標籤,完成定義步驟,而後執行模塊,拿到模塊的輸出。因此當一個文件裏有多個 define 時,只能用 ID 是否匹配 use 中的路徑來判斷是否主模塊。.net
固然能夠迴避掉這個原則,你只須要本身負責模塊的定義部分,再本身 seajs.use
以前定義好的模塊 ID 就行。code
<!-- 各類模塊的定義 define define define --> <script src="http://example.com/modules.js"></script> <script> // 這時 use 的第一個參數就能夠沒必要是文件路徑了,由於已經有定義好的模塊 ID 了 seajs.use('jquery', function($) { // $ }); </script>
或者經過 alias 來幫助 ID 匹配上最終的路徑,這樣就和 RequireJS 的方案基本一致了。ip
// lib/jquery-1.7.2.js 的內容以下 define('$', funtion(require, exports, module) { // jQuery });
這樣就不須要本身去引用上面的文件,能夠直接經過 seajs.use 調用。字符串
seajs.config({ alias: { $: 'lib/jquery-1.7.2.js' } }); seajs.use('$', function() { // Got $ ! });