RequireJS:“requirejs”和“require”函数之间的区别

时间:2012-11-28 12:57:45

标签: javascript requirejs require

我使用的是requireJS 2.x.我发现有些教程(和官方文档)有时会使用

requirejs.config({ [...] });
requirejs(["module"]) ...

有时候

require.config({ [...] });
require(["module"]) ...

这两个函数(require和requirejs)之间有什么区别吗?我在文档中找不到任何关于它的文字。 :(

4 个答案:

答案 0 :(得分:83)

它们完全一样。

原因是某些环境可能已经有require,在这种情况下,RequireJS不会覆盖它并允许通过requirejs使用库

请参阅此提交 - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39

答案 1 :(得分:19)

requirejsrequire相同吗?

从RequireJS 2.1.15开始,全局空间中的requirerequirejs确实“完全相同”,您可以在控制台中执行此测试就可以证明:

> 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键

你可以发现它们具有不同名称的相同功能