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

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

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

有时

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

这两个函数(require和requirejs)是否有区别? 在文档中我找不到任何关于此的信息。 🙁

他们完全一样。

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

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

requirejsrequire相同?

从RequireJS 2.1.15开始,在全局空间中的requirerequirejs确实是“完全一样的”,这可以通过在控制台中执行的testing来certificate:

 > require === requirejs true 

testing返回true告诉你他们是完全相同的function对象 。 它们不是两个恰好具有相似或相同代码的function。 他们是同一个对象,时期。

注意,当你执行define(['require'], function (require) {传递给函数的require通常不同于全局require

你应该使用require还是requirejs

这取决于。 RequireJS是AMD的装载机,但它不是镇上唯一的装载机。 如果你想编写符合AMD规范的代码,那么使用你的代码的人可以使用他们想要的任何loader,而不必修改你的代码,那么你应该在全局级别使用require ,因为requirejs是特定于RequireJS 。 另一个AMD加载器不会定义它。 AMD规范定义了require而不是requirejs

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

在模块内部,总是使用define来获取require的引用。 不pipe全球空间是否有冲突,你都应该这样做。

好吧,他们可能确实是“完全一样”。 那么我们来关注一下为什么你会使用一个和另一个…

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

另外,如果发生不可思议的事情,而且所讨论的环境不仅已经定义了“要求”,而且还定义了“要求”,会发生什么? 这是否意味着我们也应该有requirejsjs? 等等…?

他们是已经加载要求的同一个打开的网站

然后打开Chrome控制台

在控制台inputrequire并按回车

在控制台中键入requirejs,然后按回车

你可以发现它们是不同的名称相同的function