4

我一直在研究John Papa的SPA複數課程。如何在Require.js中引用捆綁的js文件(asp.net mvc4)?

在他的main.js中,他給出了捆綁中包含的每個js庫的名稱。

(function() { 
var root = this; 

define3rdPartyModules(); 


function define3rdPartyModules() { 
    // These are already loaded via bundles. 
    // We define them and put them in the root object. 
    define('jquery', [], function() { return root.jQuery; }); 
    define('ko', [], function() { return root.ko; }); 
    define('amplify', [], function() { return root.amplify; }); 
    define('infuser', [], function() { return root.infuser; }); 
    define('moment', [], function() { return root.moment; }); 
    define('sammy', [], function() { return root.Sammy; }); 
    define('toastr', [], function() { return root.toastr; }); 
    define('underscore', [], function() { return root._; }); 
} 

})(); 

但是,root在這裏是什麼?


通過這樣做,我們就可以調用這些短名稱在define聲明:

define('vm.session', 
['ko', 'datacontext', 'config', 'router', 'messenger', 'sort'], 
function (ko, datacontext, config, router, messenger, sort) { 

現在,我不知道該怎麼做。所以我的工作define說法是醜陋:

define('vm.admin.outfitters', 
['/Scripts/lib/jquery-1.8.1.js', '/Scripts/lib/jsrender.js', ...], function(){... 

我知道有一定有一個更好的辦法。所有這些js文件已經包含在腳本包中。我如何參考這些腳本?

+0

嗨@Blaise ...我試圖使用requirejs捆綁和縮小,但我不知道如何把它的工作!你有沒有可以提供給我的示例代碼?謝謝。 – rpf

回答

4

RE:根

RequireJS和AMD準備庫,從全球範圍內(如KO的東西)刪除對象。一些插件希望它們在全局範圍內,所以我們可以填充這些插件或將對象彈回全局範圍。後者是這個代碼中發生的事情。主要是針對Knockout的插件。

RE:你定義報表

第一個參數是的模塊的名稱,那麼你的罰款那裏。第二個參數是RequireJS知道的模塊列表。第三個參數是表示它的匹配變量。所以在你的代碼中你可能有這樣的東西...

define('vm.admin.outfitters', 
['jquery', 'jsrender'], function($, jsrender) { 
+0

謝謝。現在看來,我已經做到了。但它仍然讓我感到困惑。順便說一句,你的課程非常有價值,但對我們很多人來說有點太快了。 :-) – Blaise