Requirejs 如何使用r.js获取单个javascript页面
我第一次尝试使用requireJS,效果非常好! 我现在想使用优化器,在浏览器中运行代码时遇到一些问题 我有这些JS文件:Requirejs 如何使用r.js获取单个javascript页面,requirejs,Requirejs,我第一次尝试使用requireJS,效果非常好! 我现在想使用优化器,在浏览器中运行代码时遇到一些问题 我有这些JS文件: /public/javascripts/build.js /public/javascripts/main.js /public/javascripts/lib/jquery.min.js /public/javascripts/lib/require.min.js /public/javascripts/a.js /public/javascripts/b.js /pu
- /public/javascripts/build.js
- /public/javascripts/main.js
- /public/javascripts/lib/jquery.min.js
- /public/javascripts/lib/require.min.js
- /public/javascripts/a.js
- /public/javascripts/b.js
- /public/javascripts/c.js
require.config({
paths: {
'jQuery': 'lib/jquery.min.js'
},
shim: {
'jQuery': {
exports: '$'
}
}
});
require(['a.js'], function(A){
var Entity = new A();
});
build.js
({
baseUrl: ".",
paths: {
requireLib: "lib/require.min",
jquery: "lib/jquery.min"
},
name: "main",
out: "main-built.js",
include: ["requireLib"]
})
另外,我想知道为什么我们必须将库的路径指定到build.js而不是其他javascript文件中
当我不使用优化器而只加载文件时
它工作得很好,但是当我运行r.js-o./public/javascripts/build.js
并且只加载
我得到一个错误未捕获类型错误:未定义不是缩小代码中的函数
怎么解释呢
下面是我在运行r.js时得到的日志
Tracing dependencies for: main
Uglifying file: /public/javascripts/main-built.js
/public/javascripts/main-built.js
----------------
/public/javascripts/lib/require.min.js
/public/javascripts/a.js
/public/javascripts/b.js
/public/javascripts/lib/jquery.min.js
/public/javascripts/c.js
/public/javascripts/main.js
这绝对是错误的:
require(['a.js'], function(A){
var Entity = new A();
});
您不应该在提供给require
或define
的依赖项列表中使用扩展名。模块的命名应不带扩展名。所以这里是'a'
,而不是'a.js'
。使用'a.js'
将导致RequireJS在优化器运行后无法加载您真正想要的内容。假设您有一个名为a.js
的文件,该文件具有:
define(function () {
return function () {};
});
优化器会将其包含到您的main build.js
文件中,如下所示:
define("a", function () {
return function () {};
});
注意定义的第一个参数现在是“a”
。这是由r.js
添加的。这是模块的名称。加载main build.js
时,将定义名为“a”
的模块。当您将require
与“a.js”
一起使用时,您是在告诉RequireJS您希望在名为a.js
的文件中找到某个内容,因此RequireJS将查找该内容,并忽略main builded.js
中的内容
另外,jQuery1.8或更高版本不需要垫片。我刚刚添加了
shim: {
'jQuery': {
exports: '$'
}
}
在build.js文件中,它可以完美地工作
谢谢 这些路径在你的问题中没有加起来。只需提到一点:r.js
跟踪显示了/public/javascripts/main build.js
中的内置文件。但是你说你用
加载它。你能编辑这个问题,使你的路径一致吗?还要确保没有打字错误mains.js
看起来像一个打字错误,因为它在其他任何地方都是main
@Louis谢谢你的帮助,我刚刚把它搞错了!关于main build.js
文件,这只是堆栈上的一个错误。您的路径仍然不正确。我已将我使用的文件中的所有路径添加到我的项目目录中,您仍然没有哪些路径?我认为这里存在语言问题。短语“您的路径不累加”意味着“您的路径不一致”。问题开头的路径列表显示main.js
的路径是/public/javascripts/main.js
,但是r.js
的输出显示了该路径。这是一条不同的路径,与第一条路径不一致。