2013-01-24 33 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应该存在,因为你需要它。 –