RequireJS不适合我

时间:2015-09-24 11:07:57

标签: jquery requirejs cdn velocity.js

我正在开发一个个人项目,我正在使用大量的JavaScript代码,并使用一些库和插件,如jQuery和Velocity.js。我不知道为什么我不能使它工作,我已经遵循RequireJS文档和许多教程,但我总是在控制台中收到错误。

这就是我网站的存放方式:

Main folder
  |
  |index.html
  |
  |
  |——JS folder ——
         |
         |require.js
         |config.js
         |main.js
         |
         |————————

在index.html中我以这种方式调用RequireJS

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

在配置中,我有每个CDN存储库的路径,如下所示:

requirejs.config({
"baseUrl": "js",
"paths": {
  "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js",
  "velocity": "//cdn.jsdelivr.net/velocity/1.2.2/velocity.min.js",
  "velocity-ui": "//cdn.jsdelivr.net/velocity/1.2.2/velocity.ui.min.js",
  "bootstrap": "//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js",
  "main": "main"
}
});

在同一个文件(config.js)中,关闭requirejs.config之后我以这种方式调用main.js文件:

require(['main']);

在main.js中我使用jquery,velocity和velocity-ui。

require([ "jquery", "velocity", "velocity-ui" ], function ($, Velocity) {
 //my code here
 });

之后,我总是在控制台中遇到错误,比如

Error: Script error for: jquery
http://requirejs.org/docs/errors.html#scripterror
---
Error: Script error for: velocity
http://requirejs.org/docs/errors.html#scripterror
---
Error: Script error for: velocity-ui
http://requirejs.org/docs/errors.html#scripterror

我不知道我做错了什么......

2 个答案:

答案 0 :(得分:1)

您应该删除路径中的.js扩展名。 Requirejs Doc说

  

用于模块名称的路径不应包含扩展名,因为路径映射可能适用于目录。在将模块名称映射到路径时,路径映射代码将自动添加.js扩展名。

所以将config.js中的代码更改为以下内容:

&#13;
&#13;
requirejs.config({
    "baseUrl": "js",
    "paths": {
        "jquery": "//ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min",
        "velocity": "//cdn.jsdelivr.net/velocity/1.2.2/velocity.min",
        "velocity-ui": "//cdn.jsdelivr.net/velocity/1.2.2/velocity.ui.min",
        "bootstrap": "//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min",
        "main": "main"
    }
});

require(['main']);
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您没有正确使用require.js。您应该只有一个require()来电并给它回电。项目的所有其余文件都应该包含define()

示例:

main.js应如下所示:

define([ "jquery", "velocity", "velocity-ui" ], function ($, Velocity) {
    //my code here
    // return something
});

并且在config.js中你应该有类似的东西:

require(['main'], function (main) {
    // do something with main module... like init stuff...
});