項目總結二:模塊管理之requireJS
阿新 • • 發佈:2017-06-01
pig 所有 依賴 yui 一個 ava archive 狀況 oot 的配置加到頁面中 ,然後頁面中就可以直接使用
項目開發前期,對究竟用requireJS 還是sea.js 進行討論,最後采用requireJS,但是後期遇到了問題——當谷歌地圖不能加載時,整個頁面卡死的狀況。
requirejs 的作用:
- 防止js加載阻塞頁面渲染
- 模塊化加載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