我正在使用requireJS2.x。我发现有些教程(和官方文档)有时会使用
requirejs.config({ [...] });
requirejs(["module"]) ...
有时
require.config({ [...] });
require(["module"]) ...
这两个函数(require和requirejs)之间有什么区别吗?我在文档中找不到关于此的任何单词。:(
我正在使用requireJS2.x。我发现有些教程(和官方文档)有时会使用
requirejs.config({ [...] });
requirejs(["module"]) ...
有时
require.config({ [...] });
require(["module"]) ...
这两个函数(require和requirejs)之间有什么区别吗?我在文档中找不到关于此的任何单词。:(
Answers:
他们是完全一样的。
原因是某些环境可能已经有一个require
,在这种情况下RequireJS不会覆盖它,并允许通过以下方式使用该库requirejs
看到这个提交-https: //github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39
requirejs
像访问require
本地变量一样访问。我发现这在React组件中很有用,可以在中加载其他脚本componentDidMount
。
requirejs
和require
相同吗?作为RequireJS 2.1.15的,require
并requirejs
在全球空间确实是“如出一辙”,因为可以通过这个测试,你可以在控制台执行得到证实:
> require === requirejs
true
测试返回的结果true
告诉您它们是完全相同的功能对象。它们不是碰巧具有相似或相同代码的两个函数。它们是同一对象,同一时期。
注意,但是,当您执行时define(['require'], function (require) {
,require
传递给函数通常不同于global require
。
require
还是requirejs
?这取决于。RequireJS是AMD装载机,但不是镇上唯一的装载机。如果您要编写符合AMD规范100%的代码,以便使用您代码的人可以使用他们想要的任何加载程序而不必修改您的代码,则应require
在全局级别使用,因为requirejs
特定于RequireJS。另一个AMD装载程序将不对其进行定义。AMD规范定义require
但不定义requirejs
。
如果要加载其他定义全局的内容,require
则必须requirejs
在全局级别使用以避免冲突。
在模块内部,始终用于define
获取对的引用require
。无论全球范围是否存在冲突,您都应该这样做。
好吧,它们的确可能是“完全相同”。然后让我们集中讨论为什么要使用一个相对于另一个...
尚不清楚应该被视为“最佳实践”的是什么:如果requirejs提供了额外的保证“如果某些环境可能已经有需求”,那么始终使用requirejs函数来定义一个require配置不是一个好主意。比require函数?
另外,如果发生了无法想象的事情,并且所讨论的环境不仅已经定义了“ require”,而且还定义了“ requirejs”,会发生什么?这是否意味着我们也应该有一个requirejsjs?等等...?
$
和和jQuery
一样。只是为了提供后备,并在环境已使用的情况下成为好公民require
。这是一个非常好的例子,建议使用require
,但不是必须的-github.com/amdjs/amdjs-api/blob/master/AMD.md#global-variables-
他们是Same Open网站,已加载要求
然后打开Chrome控制台
在控制台中键入require,然后按Enter
在控制台中键入requirejs,然后按Enter
您会发现它们是相同的功能,但名称不同