正确设置require.js

时间:2015-01-16 10:55:37

标签: javascript angularjs requirejs

这是我的文件

├── public
│   ├── require.js // downloaded from site
│   ├── config.js // generated from grunt-bower-requirejs
│   ├── app
│   ├── css
│   ├── vendor
│   │   ├── angular
│   │   ├── angular-bootstrap
│   │   ├── angular-ui-router
│   │   ├── bootstrap
│   │   ├── jquery
│   │   └── ngstorage
│   └── views

这是我的config.js

require.config({
  shim: {

  },
  paths: {
    angular: "vendor/angular/angular",
    "angular-bootstrap": "vendor/angular-bootstrap/ui-bootstrap-tpls",
    "angular-ui-router": "vendor/angular-ui-router/release/angular-ui-router",
    bootstrap: "vendor/bootstrap/dist/js/bootstrap",
    ngstorage: "vendor/ngstorage/ngStorage",
    require: "vendor/require/build/require.min"
  },
  packages: [

  ]
});

我在index.html中的代码是:

<script data-main="config" src="require.js"></script>
<script src="app/app.js"></script> // for angular

但脚本似乎没有按预期加载。我得到一个错误,#34; angular&#34;在app.js的第1行找不到。

1 个答案:

答案 0 :(得分:0)

paths: { angular: "vendor/angular/angular", "angular-bootstrap": "vendor/angular-bootstrap/ui-bootstrap-tpls", "angular-ui-router": "vendor/angular-ui-router/release/angular-ui-router", bootstrap: "vendor/bootstrap/dist/js/bootstrap", ngstorage: "vendor/ngstorage/ngStorage", require: "vendor/require/build/require.min" }, shim: { "angular' : {"exports" : "angular"}, "angular-bootstrap':["angular"], "angular-ui-router':["angular"] } }

有关垫片的详细信息,请参阅requireJS API。您可能需要检查您的其他库是否遵循AMD specification

例如,您已经包含了ngStorage,请查看它,在vendor / ngstorage / ngStorage.js的顶部,您可以看到如下所示的行:

if (typeof define === 'function' && define.amd) { define('ngStorage', ['angular'], function(angular) {

在这篇文章中,“define('ngStorage',['angular']”告诉requireJS模型名称是ngStorage并且有一个依赖关系:angular。

如果lib包含在“paths”部分中有类似的行,requireJS会将其作为依赖关系加载到AMD,否则你需要编写shim来使你的lib支持AMD规范。

请注意,您可能需要包含jQuery以及查看引导之前。 你应该有的路径 'jquery': '//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min'

在垫片中你需要:“bootstrap”:[“jquery”],