2

我对 Backbone 还很陌生,今天才开始尝试学习 AMD。我从 RequireJS 的网站安装了 RequireJS-jQuery 库。所以这是我的脚本标签,里面有 Laravel 路径调用:

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

我试图确保一切都正确加载,所以我正在尝试console.log我的依赖项。Backbone 返回一个对象就好了。下划线和 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。

我尝试关注这篇文章,但无法正常工作。我正在使用 AMD 版本的 Backbone 和 Underscore。为什么不下划线和 jQuery console.log

4

1 回答 1

2

当通过 require.js 请求任何文件时,它必须符合标准 AMD 定义,以便 IIFE 定义参数。

例如,在 jQuery 库中,他们添加了一个导出定义:

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

这允许您$在 IIFE 中引用。

Shimming 添加了一个导出定义(类似于上面的 jQuery),所以如果你愿意,你可以让 _、$ 和 Backbone 指向适当的引用......但就个人而言,我不依赖于参数,而是依赖于全局评估,为依赖项设置必要的垫片,否则,对于我自己的所有模块(我每个文件定义为 AMD 模块),我使用内联 require 定义。

例如:

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);
});
于 2013-01-24T20:10:32.770 回答