對 Sea.js 進行配置 seajs.config


配置

可以對 Sea.js 進行配置,讓模塊編寫、開發調試更方便。


seajs.config seajs.config(options)

用來進行配置的方法。

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/']
  ],

  // 預加載項
  preload: [
    Function.prototype.bind ? '' : 'es5-safe',
    this.JSON ? '' : 'json'
  ],

  // 調試模式
  debug: true,

  // Sea.js 的基礎路徑
  base: 'http://example.com/path/to/base/',

  // 文件編碼
  charset: 'utf-8'
});

支持以下配置選項:

alias Object

當模塊標識很長時,可以使用 alias 來簡化。

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,可以讓文件的真實路徑與調用標識分開,有利於統一維護。

paths Object

當目錄比較深,或需要跨目錄調用模塊時,可以使用 paths 來簡化書寫。

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 配置可以結合 alias 配置一起使用,讓模塊引用非常方便。

vars Object

有些場景下,模塊路徑在運行時才能確定,這時可以使用 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 配置的是模塊標識中的變量值,在模塊標識中用 {key} 來表示變量。

map Array

該配置可對模塊路徑進行映射修改,可用於路徑轉換、在線調試等。

seajs.config({
  map: [
    [ '.js', '-debug.js' ]
  ]
});
define(function(require, exports, module) {

  var a = require('./a');
     //=> 加載的是 path/to/a-debug.js

});

更多用法可參考:調試實踐

preload Array

使用 preload 配置項,可以在普通模塊加載前,提前加載並初始化好指定模塊。

// 在老瀏覽器中,提前加載好 ES5 和 json 模塊
seajs.config({
  preload: [
    Function.prototype.bind ? '' : 'es5-safe',
    this.JSON ? '' : 'json'
  ]
});

preload 中的空字符串會被忽略掉。

注意preload 中的配置,需要等到 use 時才加載。比如:

seajs.config({
  preload: 'a'
});

// 在加載 b 之前,會確保模塊 a 已經加載並執行好
seajs.use('./b');

preload 配置不能放在模塊文件里面:

seajs.config({
  preload: 'a'
});

define(function(require, exports) {
  // 此處執行時,不能保證模塊 a 已經加載並執行好
});

debug Boolean

值為 true 時,加載器不會刪除動態插入的 script 標簽。插件也可以根據 debug 配置,來決策 log 等信息的輸出。

base String

Sea.js 在解析頂級標識時,會相對 base 路徑來解析。詳情請參閱 模塊標識

注意:一般請不要配置 base 路徑,把 sea.js 放在合適的路徑往往更簡單一致。

charset String | Function

獲取模塊文件時,<script> 或 <link> 標簽的 charset 屬性。 默認是 utf-8

charset 還可以是一個函數:

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 可以多次運行,每次運行時,會對配置項進行合並操作:

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 運行的結果是:

 alias = {
   'jquery': 'path/to/jquery.js',
   'underscore': 'path/to/underscore.js',
   'a': 'path/to/biz/a.js'
 };

 preload = ['seajs-text', 'seajs-combo'];

即:config 會自動合並不存在的項,對存在的項則進行覆蓋。

插件的配置

插件可以給 Sea.js 添加配置項,請查看具體插件了解相關配置。

配置文件

配置可以直接寫在 html 頁面上,也可以獨立出來成為一個文件。

config.js

seajs.config({
  ...
});

獨立成一個文件時,一般通過 script 標簽在頁面中同步引入。


常用的配置項是 aliaspathsbase,其他配置項有需要時,來查查文檔就會用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM