82

我正在使用requireJS 2.x。我发现一些教程(和官方文档)有时使用

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

而有时

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

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

4

4 回答 4

88

它们完全相同。

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

看到这个提交 - https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39

于 2012-11-28T16:28:02.143 回答
20

requirejsrequire一样吗?

从 RequireJS 2.1.15 开始,requirerequirejs全局空间中确实“完全一样”,正如您可以在控制台中执行的此测试所证明的那样:

> require === requirejs
true

测试返回true告诉您它们是完全相同的函数对象。它们不是恰好具有相似或相同代码的两个函数。它们是同一个对象,句号。

但是请注意,当您执行时传递给函数define(['require'], function (require) {的 Therequire传递给函数通常与 global不同require

你应该使用requireorrequirejs吗?

这取决于。RequireJS 是一个 AMD 加载器,但它不是镇上唯一的加载器。如果您想编写 100% 符合AMD 规范的代码,以便使用您的代码的人可以使用他们想要的任何加载器而无需修改您的代码,那么您应该require在全局级别使用,因为requirejs特定于 RequireJS。另一个 AMD 加载程序不会定义它。AMD 规范定义require但没有定义requirejs.

如果您正在加载定义全局的其他内容,require则必须requirejs在全局级别使用以避免冲突。

在模块内部,始终使用define来获取对require. 无论全局空间中是否存在冲突,您都应该这样做。

于 2014-11-14T21:50:27.503 回答
2

好的,它们可能确实“完全相同”。然后让我们关注为什么你会使用一个而不是另一个......

不清楚的是什么应该被认为是“最佳实践”:如果 requirejs 提供了额外的保证“如果某些环境可能已经有一个 require”,那么总是使用 requirejs 函数来定义一个 require 配置不是一个好主意吗?比要求功能?

另外,如果发生了不可想象的事情并且所讨论的环境不仅已经定义了“require”而且还定义了“requirejs”,会发生什么?这是否意味着我们也应该有一个requirejsjs?等等...?

于 2014-06-13T13:03:52.880 回答
0

它们是相同的打开网站,已经加载了要求

然后打开 Chrome 控制台

在控制台中输入 require 并回车

在控制台中输入 requirejs 并回车

您会发现它们是相同的功能但名称不同

于 2014-11-14T19:14:06.387 回答