http://requirejs.org/jquery
之前頁面js文件不少,因此不少js依次寫在頁面中加載數組
(1)實現js文件的異步加載,避免網頁失去響應;異步
(2)管理模塊之間的依賴性,便於代碼的編寫和維護函數
require.js的加載:全部的js都放在js子目錄下面requirejs
<script src="js/require.js" data-main="js/main"></script>ui
data-main屬性的做用是指定網頁程序的主模塊,require一個js文件的時候,默認加載路徑就是data-main指定的目錄,即js/main.js文件所在的目錄,也能夠經過配置文件修改spa
主模塊的寫法:code
require(['jquery', 'underscore', 'backbone'], function($, _, Backbone){ //some code here });
require()函數接受兩個參數,第一個是數組表示所依賴的模塊,第二個參數是一個回調函數blog
模塊的加載: ip
require.config({ baseUrl: "js/lib", //直接改變及目錄,若是在js/lib目錄下面 paths: { "jquery": "jquery.min",//若是某個模塊在另外一臺主機上也能夠直接指定網址 "underscore": "underscore.min", "backbone": "backbone.min" } });
AMD模塊的寫法:
require.js加載的模塊採用AMD規範,就是模塊必須採用define()函數來定義依賴myLib模塊
define(['myLib'], function(myLib){ function foo(){ myLib.doSomething(); } return { foo : foo }; });
加載非規範的模塊:
再用require()加載以前,要先用require.config()方法定義它們的一些特徵
exports值代表這個模塊外部調用時的名稱,deps數組代表該模塊的依賴性
require.config({ shim: { 'underscore':{exports:'_'}, 'backbone':{deps: ['underscore', 'jquery']} 'exports': 'Backbone' } });