本文以初學身份對比RequireJS和jQuery來講明前者的優勢,若使用其它庫,能夠「眼動」將jQuery替換爲你所用的js庫;數組
「模塊化」,實現某一功能的方法獨立化,使其能夠複用;這一高大上的名詞,按個人理解,和jQurey插件的功能同樣;那爲何須要學習RequireJS呢?模塊化
jQuery,是將jQuery定義爲全局變量,在腳本的任何地方都能調用jQuery中的方法;函數
對比於jQuery,RequireJS的優勢就是,能夠將各依賴關係(依賴關係---js庫,指你須要引用這個庫才能作其餘功能)聲明,並將各個依賴關係做爲函數參數處理,便可以把jQuery等js庫的做用域定義爲局部(函數內部);學習
RequireJS是爲實現模塊化存在的,其核心功能有兩個:定義模塊define()和調用模塊require();ui
定義模塊define(),建一個功能庫:插件
//推薦一個模塊爲一個單獨的js文件;
無依賴關係的模塊:code
define({ name1:'value1', name2:'value2' })
無依賴關係,但須要處理一些初始化任務:作用域
define(function(){ })
有依賴關係的模塊:回調函數
define('module name',[],function(){ //第一個參數爲模塊名稱,可選項--不建議命名; //[]表示依賴關係的數組列表; //function(){}回調函數,當指定模塊都加載成功後被調用; //加載的模塊以參數形式傳入該函數中,從而在回調函數內部就能夠使用這麼模塊; //參數和模塊的數量和次序要一一對應; //或者經過arguments[]來調用依賴; // //require()加載這個模塊以前會先加載依賴關係; //模塊應該返回一個本模塊/函數 return { // 屬性名:值, // 方法名:function(){} //模塊名默認爲腳本文件名; //} })
調用模塊require():io
require([],function(){ //[]表示依賴關係的數組列表; //function(){}回調函數,當指定模塊都加載成功後被調用; //加載的模塊以參數形式傳入該函數中,從而在回調函數內部就能夠使用這個模塊的屬性或方法; //參數和模塊的數量和次序要一一對應; //或者經過arguments[]來調用依賴; })