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