0

我是 require.js 的新手。
我有下一个麻烦。我链接了 require.js :

<script data-main="/Scripts/page/main" src="/Scripts/framework/require.js"></script>

代码 main.js

require.config(
{
    shim: {
        backbone: {
            exports: 'backbone'
        }
    },paths: {
    jquery: "/Scripts/framework/jquery/jquery-1.6.4",
    underscore: "/Scripts/framework/underscore/underscore",
    backbone: "/Scripts/framework/backbone/backbone"
}
});
require(["jquery"], function (jquery) {
// why jquery is undefined?
})

在此处输入图像描述

我尝试像在手册中一样使用它,但不幸的是它不起作用。为什么在 require 函数 jquery 变量中未定义?谢谢你的帮助。

4

2 回答 2

1

问题是你的baseUrl,requireJs 将从哪里加载脚本,是你在data-main属性中指定的那个。从文档:

如果配置中没有明确设置 baseUrl,则默认值为加载 require.js 的 HTML 页面的位置。如果使用 data-main 属性,则该路径将成为 baseUrl

据此,您的路径需要如下所示:

require.config({
  shim: {
    backbone: {
      exports: 'backbone'
    }
  },
  paths: {
    jquery: "../Scripts/framework/jquery/jquery-1.6.4",
    underscore: "../Scripts/framework/underscore/underscore",
    backbone: "../Scripts/framework/backbone/backbone"
  }

您还可以将 设置baseUrl为项目的根目录,如下所示:

require.config({
  baseUrl: "./",
  shim: {
    backbone: {
      exports: 'backbone'
    }
  },
  paths: {
    jquery: "Scripts/framework/jquery/jquery-1.6.4",
    underscore: "Scripts/framework/underscore/underscore",
    backbone: "Scripts/framework/backbone/backbone"
  }
于 2013-09-10T19:35:23.303 回答
0

我刚刚遇到了同样的问题。

我也是新手,但我在这里找到了一个很好的解决方案Loading Backbone and Underscore using RequireJS

基本上是将垫片扩展到:

requirejs.config({

    baseUrl: 'js/lib', 

    shim: {
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['underscore', 'jquery'],
            exports: 'backbone'
        }
    },  

    paths: {
        app: '../app',
        jquery: 'jquery-1.10.2.min',
        backbone: 'backbone.min',
        underscore: 'underscore.min'
    }   
});

requirejs(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {  
    console.log('here');
});

似乎下划线 _ 和骨干取决于 jquery 和下划线导致这个。

它对我有用并且很有意义。

如果没有,请纠正我。

于 2013-11-15T01:37:08.753 回答