使用requirejs加載模塊,模塊的定義得遵照AMD規範,也即定義模塊的時候使用以下函數定義模塊:函數
1 define(function(){ 2 var private = function(){ 3 console.log('私有方法...'); 4 }; 5 return { 6 public:function(){private();} 7 }; 8 });
即便用define包括模塊代碼,若是想在requirejs中嵌入本身之前的某些代碼,可是這些代碼沒有遵照AMD規範,該怎麼辦呢?騷年不用擔憂,require的config中的shim能幫你解決痛苦!例如本人的文件目錄結構以下:requirejs
我想要在quikTip.js文件中使用framewokr.js提供的對象,可是framework.js是不遵照AMD規範的,在quikTip.js文件中require framework模塊以前必須先處理下framework.js使其符合AMD規範,代碼以下:ui
1 require.config({ 2 baseUrl:'js/utily',//指定js文件的基路徑 3 shim:{ 4 'framework':{//這個鍵名爲要載入的目標文件的文件名,不能隨便命名不然加載framework.js文件後是拿不到改文件對外提供的接口的。由於這個坑了哥一下午!!! 5 exports:'PXJSFrame'//exports的值爲framework.js提供的 對外接口的名稱 6 } 7 } 8 }); 9 require(['framework'],function(frame){ 10 var PXJSFrame = frame; 11 console.log(frame);//此處就會打印framework.js中對外提供的接口對象啦哈啊哈 12 }