4

我有一个 BackboneJs + jquery 代码,现在我正在尝试使用 requireJs 对其进行模块化。在我的代码中,我使用了额外的 jquery 插件,如nanoscroller等。

早些时候只调用脚本就足够了:

<script type="text/javascript" src="../javascript/jquery.nanoscroller.js"></script>

现在我试图通过以下方式调用脚本:

define([
  'jQuery',
  'Underscore',
  'Backbone',
  'text!templates/landingTemplate.html',
  'library/jquery/jquery.nanoscroller.js'
], function($, _, Backbone, LandingTemplate){
var LandingView = Backbone.View.extend({

但我收到以下错误:

Error: jQuery is not defined
Source File: http://localhost:8080/sample/Main%20App/Backbone%20+%20Require.js%20Impl/js/library/jquery/jquery.nanoscroller.js

我尝试了几件事:使用“require”而不是“define”,但它没有用。我不确定我在这里错过了什么。请帮助。

谢谢,科马尔。

4

2 回答 2

2

The error was not because the Jquery was not properly defined. It was because the nanoscroller library was getting loaded before jQuery was. The solution was use the "order" plugin to make sure jQuery is loaded before the nanoscroller library is loaded. Following is how the issue got resolved for me:

require(['order!jQuery', 'order!library/jquery/jquery.nanoScroller'], function ($) {
     $("#myFields").nanoScroller();
}
于 2012-05-11T06:58:57.873 回答
2

jQuery 实际上将自己定义为一个命名模块:

define( "jquery", [], function () { return jQuery; } );

通常不鼓励您添加自己的模块名称,但对于 jQuery,您只需使用路径配置告诉 RequireJS 在哪里可以找到库:

require.config({
    paths: {
        jquery: 'lib/jquery',
    }
});

这应该允许你只jquery在你的requiredefine调用中使用。

配置 RequireJS 的方法不止一种,您可以在 API 文档中阅读

于 2012-05-09T09:57:31.510 回答