1. 程式人生 > >項目總結二:模塊管理之requireJS

項目總結二:模塊管理之requireJS

pig 所有 依賴 yui 一個 ava archive 狀況 oot

項目開發前期,對究竟用requireJS 還是sea.js 進行討論,最後采用requireJS,但是後期遇到了問題——當谷歌地圖不能加載時,整個頁面卡死的狀況。

requirejs 的作用:

  1. 防止js加載阻塞頁面渲染
  2. 模塊化加載js

①首先創建一個main.js,通過paths的配置會使我們的模塊名字更精煉,paths還有一個重要的功能,就是可以配置多個路徑,如果遠程cdn庫沒有加載成功,可以加載本地的庫:

requirejs.config({
            baseUrl : ‘‘,
            paths : {
                "jquery" : "../webres/scripts/jquery.1.11.3.min",
                
"jqueryui":"../webres/jqueryUI/jqueryui-1.10.4", "bootstrap" : "../webres/bootstrap/js/bootstrap.min", "bootstrapTable" : "../webres/bootstrap-table/bootstrap-table.min" }, shim : { drag : { deps : [ ‘jquery‘ ] }, bootstrap : { deps : [
‘jquery‘ ] }, bootstrapTable : { deps : [ ‘jquery‘, "bootstrap" ] } } });

②最好是在公共頁面中引用:

<script data-main="js/main" src="js/require.min.js"></script>

baseUrl:根路徑

data-main屬性,使指定的js在加載完reuqire.js後,把require.config

的配置加到頁面中 ,然後頁面中就可以直接使用require來加載所有的短模塊名

data-main還有一個重要的功能,當script標簽指定data-main屬性時,require會默認的將data-main指定的js為根路徑,如上面的data-main="js/main"設定後,我們在使用require([‘jquery‘])後(不配置jquery的paths),require會自動加載js/jquery.js這個文件,而不是jquery.js,相當於默認配置了baseUrl:js

shim:指定了模塊名稱和它的依賴數組,上面我們的drag插件依賴於jquery框架。通過這種方式,就可以使用requireJS完成jquery和其插件的加載。

③define函數定義了一個模塊

define(function(require, exports, module) {	
    var ajaxFun = require(‘ajaxFun‘);   
    function mainfunc() {
       
      
    }
    module.exports = mainfunc;
 });    

 

還有一種寫法:

define(function(require, exports, module) {	
	function onload() {

	}
	
	function groupOnChange(){	

	}	
	exports.onload = onload;
	exports.groupOnChange = groupOnChange;
});

  

具體區別詳見:

http://www.cnblogs.com/pigtail/archive/2013/01/14/2859555.html

  

 

項目總結二:模塊管理之requireJS