【发布时间】:2014-05-16 11:48:16
【问题描述】:
我正在尝试使用 RequireJS 加载 Parse JS (parse.com) 和 Bootstrap JS。我无法让它与这些库一起使用,但其他库似乎可以正常工作(例如backbone.js)。
我已确保将其包含在我的 index.html 文件中:
<script data-main="js/main" src="js/libs/require/require.js"></script>
我的 main.js 文件是这样的:
require.config({
paths: {
jquery: 'libs/jquery/jquery-min',
underscore: 'libs/underscore/underscore-min',
backbone: 'libs/backbone/backbone-min',
bootstrap: 'libs/bootstrap/bootstrap-min',
parse: 'libs/parse/parse-min',
templates: '../templates'
}
});
require([
// Load our app module and pass it to our definition function
'app',
], function(App){
// The "app" dependency is passed in as "App"
// Again, the other dependencies passed in are not "AMD" therefore don't pass a parameter to this function
App.initialize();
});
最后我的 app.js 是:
// Filename: app.js
define([
'jquery',
'underscore',
'parse',
'bootstrap',
'router' // Request router.js
], function($, _, Parse, Bootstrap, Router){
var initialize = function(){
*console.log(Parse);*
// Pass in our Router module and call it's initialize function
Router.initialize();
};
return {
initialize: initialize
};
});
如果相关的是我的文件结构:
/* File Structure
├── js
│ ├── libs
│ │ ├── jquery
│ │ │ ├── jquery-min.js
│ │ ├── backbone
│ │ │ ├── backbone-min.js
│ │ └── underscore
│ │ │ ├── underscore-min.js
│ │ └── parse
│ │ │ ├── parse-min.js
│ │ └── bootstrap
│ │ │ ├── bootstrap-min.js
│ │ └── require
│ │ │ ├── require.js
│ ├── router.js
│ ├── app.js
│ ├── main.js // Bootstrap
│ └── text.js //Require.js plugin
└── index.html
我看到我的 parse/bootstrap JS 文件正在由浏览器在 firebug 控制台选项卡中加载,但是 app.js 中的 console.log 语句返回 null。当我打印 Router、_ 或 $ 时,它们不为空。
我在这里做错了什么?任何指针?谢谢!
【问题讨论】:
-
您真的是说
console.log语句打印null而不是undefined?我问是因为获得null是非常不寻常的,并且表明问题不在于RequireJS 本身。缺少的shim不会给你null。paths中的错误值不会为您提供null等。 -
是的 - 它打印为空。原来我使用的是一个非常旧版本的 require js。我通过更新 require js 版本并执行 shimconfig 解决了我的问题,如下所述。
标签: javascript twitter-bootstrap backbone.js requirejs require