一、define 函數(shù)定義模塊
- 可重用的代碼塊(模塊)有特定的使用目的或行為屋剑。我們可以使用RequireJS提供的define()函數(shù)來定義模塊。三個參數(shù)分別為本模塊命名的值、本模塊的各個依賴項岁忘、模塊自身代碼
define(
moduleName, //可選,如果不寫,則默認為本模塊所在文件的文件名
dependencies, //可選深员,一個數(shù)組负蠕,此數(shù)組包含此文件所需的各個依賴項
function (parameters) {
//各個依賴項成功加載后所運行的函數(shù)
// parameters中包含的各個值來自于依賴項,與dependencies參數(shù)中的各個依賴項形成對應(yīng)關(guān)系
}
)倦畅;
例如:define(["lib/jquery-1.10.2"], function($){
//這里放的是jquery加載完成后要執(zhí)行的模塊代碼
// define函數(shù)第一個參數(shù)指出jquery庫的位置遮糖,匿名函數(shù)中的參數(shù)($)與之對應(yīng)。
});
模塊別名配置:
require.config({
paths: {
"jquery": "lib/jquery-1.10.2"
}
});//現(xiàn)在就可以用"jquery"作為依賴項名稱
二叠赐、require 加載依賴
- define適合于聲明模塊便于以后使用欲账,require適用于不需要建立可重用的模塊、只需加載各個依賴直接執(zhí)行的場合芭概。兩者的使用方法一樣
例如:require(["lib/jquery-1.10.2"], function($){
//這里放的是jquery加載完成后要執(zhí)行的模塊代碼
// reuire函數(shù)第一個參數(shù)指出jquery庫的位置赛不,匿名函數(shù)中的參數(shù)($)與之對應(yīng)。
});
三罢洲、加載非規(guī)范的模塊
- 理論上踢故,require.js加載的模塊,必須是按照AMD規(guī)范惹苗、用define()函數(shù)定義的模塊殿较。但是實際上,雖然已經(jīng)有一部分流行的函數(shù)庫(比如jQuery)符合AMD規(guī)范桩蓉,更多的庫并不符合淋纲。那么,require.js是否能夠加載非規(guī)范的模塊呢触机?
回答是可以的帚戳。
這樣的模塊在用require()加載之前,要先用require.config()方法儡首,定義它們的一些特征片任。
舉例來說,underscore和backbone這兩個庫蔬胯,都沒有采用AMD規(guī)范編寫对供。如果要加載它們的話,必須先定義它們的特征氛濒。
require.config({
shim: {
'underscore':{
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
配置不兼容的模塊产场。具體來說,每個模塊要定義(1)exports值(輸出的變量名)舞竿,表明這個模塊外部調(diào)用時的名稱京景;(2)deps數(shù)組,表明該模塊的依賴性骗奖。