2015-11-02 85 views
0
<head> 
    <script language="javascript" src="require.js" data-main="scripts/main" >  
    </script> 
    <script type="text/javascript" src="scripts/app.js"> </script> 
    </head> 

的main.js具有所有由app.js(角模塊)所需的必要的庫,因此我想確保app.js僅在所有的庫之後被加載main.js通過require調用解決。但由於要求js採用異步方式,app.js文件在加載main.js文件中的庫之前被加載,因此會錯誤地解析app.js.加載腳本需要JS

請仔細閱讀您的建議,以便在main.js完全加載之前限制app.js的加載。

感謝 Santhosh

+0

請參閱http://stackoverflow.com/questions/13225245/require-js-synchronous – Shohel

+0

我是第一次加載它,因此我無法在鏈接共享中使用該建議 – Santhosh

+0

您應該有'data-main =「 scripts/app「'和'app.js'應該寫成require.js模塊。 – Quentin

回答

0

如果您在head標籤寫這樣的腳本,它不是同步的瀏覽器加載。與瀏覽器中的app.js相比,main.js花了很長時間加載。因此你得到這個錯誤。嘗試通過main.js文件加載app.js

您必須使用shim : {}來定義requireJS配置文件中的依賴項。

main.js

require.config({ 

paths: { 
    'angular': '../lib/angular/angular', 
    'angular-route': '../lib/angular-route/angular-route', 
    'domReady': '../lib/requirejs-domready/domReady' 
}, 

/** 
* for libs that either do not support AMD out of the box, or 
* require some fine tuning to dependency mgt' 
*/ 
shim: { 
    'angular': { 
     exports: 'angular' 
    }, 
    'angular-route': { 
     deps: ['angular'] 
    } 
}, 

deps: [ 
    // kick start application... see bootstrap.js 
    './bootstrap' 
] 
}); 

在你必須引導你的角度應用,然後main.js必須從bootstrap.js叫app.js

bootstrap.js

define([ 
    'require', 
    'angular', 
    'app', 
    'routes' 
], function (require, ng) { 
'use strict'; 

/* 
* place operations that need to initialize prior to app start here 
* using the `run` function on the top-level module 
*/ 

require(['domReady!'], function (document) { 
    ng.bootstrap(document, ['app']); 
    }); 

}); 

這裏在引導文件中,你的app.js被調用,所以你總是在main.js之後調用app.js

有關使用requireJS進行角度轉換的更多信息,請參閱startersquad示例。

閱讀documentation瞭解更多信息。

+0

你好gaurav!這裏我的問題是app.js是一個角度模塊,角度依賴關係在main.js中定義。但是在main.js完全加載之前,app.js會被加載。此外app.js沒有定義功能,因爲根據要求,這是獨立的需求框架 – Santhosh

+0

以及上述模塊我想將模塊數組動態地傳遞給bootstrap.js。這是可能的,作爲一個新手在JS我是一點點在這裏。我們可以傳遞一個依賴數組到main.js文件,同時在html中聲明它,因此我可以將它傳遞給bootstrap。 – Santhosh

+0

在main.js中,您只定義了JS文件的路徑,並定義了依賴關係(如果存在其他JS)。但是你的應用程序實際上是從bootstrap.js開始 –