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
是requirejs
并require
相同?
从RequireJS 2.1.15开始,在全局空间中的require
和requirejs
确实是“完全一样的”,这可以通过在控制台中执行的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