我使用的是requireJS 2.x.我发现有些教程(和官方文档)有时会使用
requirejs.config({ [...] });
requirejs(["module"]) ...
有时候
require.config({ [...] });
require(["module"]) ...
这两个函数(require和requirejs)之间有什么区别吗?我在文档中找不到任何关于它的文字。 :(
答案 0 :(得分:83)
它们完全一样。
原因是某些环境可能已经有require
,在这种情况下,RequireJS不会覆盖它并允许通过requirejs
使用库
请参阅此提交 - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39
答案 1 :(得分:19)
requirejs
和require
相同吗?从RequireJS 2.1.15开始,全局空间中的require
和requirejs
确实“完全相同”,您可以在控制台中执行此测试就可以证明:
> require === requirejs
true
测试返回true
告诉您它们是完全相同的函数对象。它们不是碰巧具有相似或相同代码的两个函数。它们是同一个对象,期间。
注意,但是当您执行define(['require'], function (require) {
时,传递给该函数的require
通常与全局require
不同。
require
还是requirejs
?这取决于。 RequireJS是AMD的装载机,但它不是城里唯一的装载机。如果您想编写符合AMD spec 100%的代码,那么使用您的代码的人可以使用他们想要的任何加载器而无需修改代码,那么您应该在全局级别使用require
,因为requirejs
特定于RequireJS。另一个AMD加载器不会定义它。 AMD规范定义require
但不定义requirejs
。
如果您要加载定义全局require
的其他内容,则必须在全局级别使用requirejs
以避免冲突。
在模块内部,始终使用define
获取对require
的引用。无论全球空间是否存在冲突,您都应该这样做。
答案 2 :(得分:2)
不清楚的是应该考虑什么"最佳实践":如果requirejs提供了额外的保证"如果某些环境可能已经有需要",那么它不会是总是使用requirejs函数来定义require配置而不是require函数是个好主意吗?
此外,如果不可想象的事情发生并且所讨论的环境不仅已经有了"要求"定义但也有一个" requirejs"界定?这是否意味着我们也应该有一个requirejsjs?等等......?
答案 3 :(得分:0)
他们是相同的 打开已加载的网站
然后打开Chrome控制台
在控制台中键入require并按Enter键
在控制台中输入requirejs并按Enter键
你可以发现它们具有不同名称的相同功能