我目前正在嘗試學習BackboneJS和隨之而來的東西,但我無法真正地將它運行。 我的問題是,儘快嘗試使用Backbone對象時遇到麻煩。所以我試圖記錄他們兩個,給。Backbone&Underscore是未定義的,加載的想法
undefined main.js:23
undefined main.js:24
代碼如下。你可以看到,我試圖在我的路由器中使用Backbone對象,但是不成功。然後我嘗試了我的main.js,同樣的事情。
我目前正在嘗試學習BackboneJS和隨之而來的東西,但我無法真正地將它運行。 我的問題是,儘快嘗試使用Backbone對象時遇到麻煩。所以我試圖記錄他們兩個,給。Backbone&Underscore是未定義的,加載的想法
undefined main.js:23
undefined main.js:24
代碼如下。你可以看到,我試圖在我的路由器中使用Backbone對象,但是不成功。然後我嘗試了我的main.js,同樣的事情。
您需要使用require shim,因爲Backbone和Underscore不支持AMD開箱即用。
A require shim允許您加載非AMD模塊(請參閱here)。請注意,exports
對象是將用作模塊的對象的名稱。
paths: {
// Major dependecies.
jquery: 'libs/jquery/jquery-1.8.3.min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
// Template dir.
templates: '../templates'
},
shim: {
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
underscore: {
exports: "_"
}
}
另一種方法是將腳本直接包含在HTML中。
<script src="libs/jquery/jquery.js"></script>
<script src="libs/underscore/underscore.js"></script>
<script src="libs/backbone/backbone.js"></script>
我個人認爲它是太更容易讓Backbone(和Underscore和jQuery)脫離Require。你可以用正常的方式加載它們(通過一個腳本標籤),然後完成所有你需要的加載,並且一切都將完美運行。你將會有一些全局變量($,_和Backbone),但除此之外,我發現這種方法存在缺點。
或者,您可以浪費大量時間玩墊片,並將Backbone正確地置入Require-land中......但是如果您不必這樣浪費時間,那麼爲什麼還要浪費時間呢?另外,如果你這樣做,你必須在每個文件的定義調用中包含jQuery/Backbone/Underscore,這樣會浪費時間/精力。
我最終也這樣做了,也保存了代碼行。謝謝 – MartinElvar
我懷疑這是通過require.js(或主幹網不能很好地滿足要求)引用文件的錯誤。檢查瀏覽器的開發人員工具並確保您實際上正在下載文件。 「控制檯」或「網絡」選項卡應該表明您是否成功獲取文件(HTTP代碼200),或者它沒有找到它們(HTTP代碼404),或者它甚至沒有嘗試(「Net」中沒有行)完全)。
此外,請嘗試將require.js完全移出循環,並使用標準<script>
標記直接將文件加載到您的頁面上。這樣你就知道你的文件和變量按預期工作。
是的,這工作,但你可以詳細說明一下嗎? Shim,AMD。謝謝 – MartinElvar
我已經更新了答案。 – greenimpala