seajs.config(options)
用來進(jìn)行配置的方法。
seajs.config({ // 別名配置
alias: { 'es5-safe': 'gallery/es5-safe/0.9.3/es5-safe', 'json': 'gallery/json/1.0.2/json', 'jquery': 'jquery/jquery/1.10.1/jquery'
}, // 路徑配置
paths: { 'gallery': 'https://a.alipayobjects.com/gallery'
}, // 變量配置
vars: { 'locale': 'zh-cn'
}, // 映射配置
map: [
['http://example.com/js/app/', 'http://localhost/js/app/']
], // 預(yù)加載項(xiàng)
preload: [ Function.prototype.bind ? '' : 'es5-safe', this.JSON ? '' : 'json'
], // 調(diào)試模式
debug: true, // Sea.js 的基礎(chǔ)路徑
base: 'http://example.com/path/to/base/', // 文件編碼
charset: 'utf-8'});
支持以下配置選項(xiàng):
Object
當(dāng)模塊標(biāo)識(shí)很長(zhǎng)時(shí),可以使用 alias
來簡(jiǎn)化。
seajs.config({
alias: { 'jquery': 'jquery/jquery/1.10.1/jquery', 'app/biz': 'http://path/to/app/biz.js',
}
});
define(function(require, exports, module) { var $ = require('jquery'); //=> 加載的是 http://path/to/base/jquery/jquery/1.10.1/jquery.js
var biz = require('app/biz'); //=> 加載的是 http://path/to/app/biz.js});
使用 alias
,可以讓文件的真實(shí)路徑與調(diào)用標(biāo)識(shí)分開,有利于統(tǒng)一維護(hù)。
Object
當(dāng)目錄比較深,或需要跨目錄調(diào)用模塊時(shí),可以使用 paths
來簡(jiǎn)化書寫。
seajs.config({
paths: { 'gallery': 'https://a.alipayobjects.com/gallery', 'app': 'path/to/app',
}
});
define(function(require, exports, module) { var underscore = require('gallery/underscore'); //=> 加載的是 https://a.alipayobjects.com/gallery/underscore.js
var biz = require('app/biz'); //=> 加載的是 path/to/app/biz.js});
paths
配置可以結(jié)合 alias
配置一起使用,讓模塊引用非常方便。
Object
有些場(chǎng)景下,模塊路徑在運(yùn)行時(shí)才能確定,這時(shí)可以使用 vars
變量來配置。
seajs.config({
vars: { 'locale': 'zh-cn'
}
});
define(function(require, exports, module) { var lang = require('./i18n/{locale}.js'); //=> 加載的是 path/to/i18n/zh-cn.js});
vars
配置的是模塊標(biāo)識(shí)中的變量值,在模塊標(biāo)識(shí)中用 {key}
來表示變量。
Array
該配置可對(duì)模塊路徑進(jìn)行映射修改,可用于路徑轉(zhuǎn)換、在線調(diào)試等。
seajs.config({
map: [
[ '.js', '-debug.js' ]
]
});
define(function(require, exports, module) { var a = require('./a'); //=> 加載的是 path/to/a-debug.js});
更多用法可參考:調(diào)試實(shí)踐
Array
使用 preload
配置項(xiàng),可以在普通模塊加載前,提前加載并初始化好指定模塊。
// 在老瀏覽器中,提前加載好 ES5 和 json 模塊seajs.config({
preload: [ Function.prototype.bind ? '' : 'es5-safe', this.JSON ? '' : 'json'
]
});
preload
中的空字符串會(huì)被忽略掉。
注意:preload
中的配置,需要等到 use
時(shí)才加載。比如:
seajs.config({
preload: 'a'});// 在加載 b 之前,會(huì)確保模塊 a 已經(jīng)加載并執(zhí)行好seajs.use('./b');
preload
配置不能放在模塊文件里面:
seajs.config({
preload: 'a'});
define(function(require, exports) { // 此處執(zhí)行時(shí),不能保證模塊 a 已經(jīng)加載并執(zhí)行好});
Boolean
值為 true
時(shí),加載器不會(huì)刪除動(dòng)態(tài)插入的 script 標(biāo)簽。插件也可以根據(jù) debug 配置,來決策 log 等信息的輸出。
String
Sea.js 在解析頂級(jí)標(biāo)識(shí)時(shí),會(huì)相對(duì) base
路徑來解析。詳情請(qǐng)參閱 模塊標(biāo)識(shí)
在 seajs@2.3.0
之前,Sea.js 會(huì)根據(jù) sea.js 的路徑去猜測(cè) base
路徑,一般為路徑上含有 seajs 字符串的上一級(jí)路徑。在 seajs@2.3.0
后,去掉了這個(gè)模糊的猜測(cè)。我們推薦始終手動(dòng)設(shè)置一個(gè)準(zhǔn)確的 base
路徑。
String | Function
獲取模塊文件時(shí),<script>
或 <link>
標(biāo)簽的 charset
屬性。 默認(rèn)是 utf-8
charset
還可以是一個(gè)函數(shù):
seajs.config({ charset: function(url) { // xxx 目錄下的文件用 gbk 編碼加載
if (url.indexOf('http://example.com/js/xxx') === 0) { return 'gbk';
} // 其他文件用 utf-8 編碼
return 'utf-8';
}
});
seajs.config
可以多次運(yùn)行,每次運(yùn)行時(shí),會(huì)對(duì)配置項(xiàng)進(jìn)行合并操作:
seajs.config({
alias: { 'jquery': 'path/to/jquery.js', 'a': 'path/to/a.js'
},
preload: ['seajs-text']
});
seajs.config({
alias: { 'underscore': 'path/to/underscore.js', 'a': 'path/to/biz/a.js'
},
preload: ['seajs-combo']
});
上面兩處 config
運(yùn)行的結(jié)果是:
alias = { 'jquery': 'path/to/jquery.js', 'underscore': 'path/to/underscore.js', 'a': 'path/to/biz/a.js'
};
preload = ['seajs-text', 'seajs-combo'];
即:config
會(huì)自動(dòng)合并不存在的項(xiàng),對(duì)存在的項(xiàng)則進(jìn)行覆蓋。
插件可以給 Sea.js 添加配置項(xiàng),請(qǐng)查看具體插件了解相關(guān)配置。
配置可以直接寫在 html 頁面上,也可以獨(dú)立出來成為一個(gè)文件。
config.js
seajs.config({
...
});
獨(dú)立成一個(gè)文件時(shí),一般通過 script 標(biāo)簽在頁面中同步引入。
常用的配置項(xiàng)是 alias
、paths
、base
,其他配置項(xiàng)有需要時(shí),來查查文檔就會(huì)用了。
更多建議: