RequireJS:"requirejs"和"require"函数之间的区别

Mat*_*yer 76 javascript require requirejs

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

requirejs.config({ [...] });
requirejs(["module"]) ...
Run Code Online (Sandbox Code Playgroud)

而有时

require.config({ [...] });
require(["module"]) ...
Run Code Online (Sandbox Code Playgroud)

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

Sim*_*ith 84

它们完全一样.

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

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

  • 谢谢:)这应该在文档中注明.代码中的注释并未明确说明. (14认同)

Lou*_*uis 20

requirejsrequire一样吗?

作为RequireJS 2.1.15,requirerequirejs在全球空间确实是"如出一辙",因为可以通过这个测试,你可以在控制台执行得到证实:

> require === requirejs
true
Run Code Online (Sandbox Code Playgroud)

测试返回时true告诉您它们是完全相同的函数对象.它们不是碰巧具有相似或相同代码的两个函数.它们是同一个对象,期间.

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

你应该使用requirerequirejs

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

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

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