2013-01-24 38 views
1

我對Backbone相當陌生,今天剛開始嘗試學習AMD。我從RequireJS的網站安裝了RequireJS-jQuery庫。所以這是我的腳本標籤,其中有Laravel路徑調用:jQuery和Underscore未在RequireJS中加載

<script data-main="{{ path('js/main') }}" 
src="{{ path('js/libs/requirejs/require-jquery.js') }}"></script> 

我想正確確保一切加載,所以我想我的console.log依賴。骨幹返回一個對象就好了。 Underscore和jQuery不。這裏是我的main.js文件:

require.config({ 
    baseUrl: '../js/', 
    paths: { 
     jquery: 'libs/jquery/jquery-1.8.3.min', 
     underscore: 'libs/underscore/underscore-min', 
     backbone: 'libs/backbone/backbone-min' 
    } 
}); 

if (typeof define === "function" && define.amd && define.amd.jQuery) { 
    define('jquery', [], function() { return jQuery; }); 
} 

//the "main" function to bootstrap your code 
require(['jquery', 'underscore', 'backbone', 'app'], 
    function() { 
     var App = require('app'); 
     //App.initialize(); 
     console.log($); 
     console.log(_); 
     console.log(Backbone); 
}); 

我有幾個問題,我需要爲jQuery的路徑,因爲它是RequireJS,jQuery庫的一部分?二,這是什麼關於勻場?我是否需要爲此付諸實施?我正在使用RequireJS-jQuery的v 2.1.4。

我試過以下this post,但無法正常工作。我使用的是Backbone和Underscore的AMD版本。爲什麼不會下劃線和jQuery console.log

+0

當我說,他們不會CONSOLE.LOG我的意思是,它返回'函數()' – sehummel

回答

2

當通過require.js需要任何文件時,它必須符合標準的AMD定義,以便IIFE定義一個參數。

舉例來說,在jQuery庫,他們已經增加了一個出口定義:

if (typeof define === "function" && define.amd && define.amd.jQuery) { 
    define("jquery", [], function() { return jQuery; }); 
} 

,讓您在IIFE參考$。如果你想讓你可以有_,$和Backbone指向適當的引用......但是個人而言,我不是依賴於參數,而是隻需依靠全球評估,爲我所有的模塊(其中我定義每個文件作爲AMD模塊)設置必要的墊片依賴關係,否則,我使用內聯需求定義。

例如:

require(['jquery','underscore','backbone', 'my-module'],function(){ 
    var MyModule = require('my-module'); 
}); 

希望上面是有意義的。

〜此基礎上你的代碼,請嘗試:

require(['jquery', 'underscore', 'backbone', 'app'], 
    function() { 
     var App = require('app'); 
     //App.initialize(); 
     console.log($); 
     console.log(_); 
     console.log(Backbone); 
}); 
+0

所以我把你的第一行代碼在我的main.js? – sehummel

+0

我試過了,它似乎沒有工作。 jQuery仍然不是console.logging。 – sehummel

+0

好吧,我的觀點更爲重要,不是依賴匿名函數中的參數定義,而是使用內聯定義,並假定模塊已被加載。即擺脫'功能($,_,Backbone,App)',而是使用內聯的需求定義你的'App',即require('app')'和$或jQuery應該存在,因爲你需要它。 –