82

requireJS2.xを使用しています。一部のチュートリアル(および公式ドキュメント)で使用されることがあることがわかりました

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

そして時折

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

これらの2つの関数(requireとrequirejs)に違いはありますか?ドキュメントでそれについての単語を見つけることができませんでした。:(

4

4 に答える 4

88

それらはまったく同じです。

その理由は、一部の環境にはすでにが含まれている可能性があるためです。requireその場合、RequireJSはそれを上書きせず、ライブラリの使用を許可します。requirejs

このコミットを参照してください-https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39

于 2012-11-28T16:28:02.143 に答える
20

requirejsそしてrequire同じですか?

RequireJS 2.1.15の時点でrequirerequirejsグローバルスペースでは、コンソールで実行できるこのテストから明らかなように、実際には「まったく同じ」です。

> require === requirejs
true

テストが返すtrueことは、それらがまったく同じ関数オブジェクトであることを示しています。これらは、たまたま類似または同一のコードを持つ2つの関数ではありません。それらは同じオブジェクト、期間です。

ただし、実行する場合define(['require'], function (require) {require関数に渡されるものは通常、グローバルとは異なるrequireことに注意してください。

使用する必要がありますrequirerequirejs

場合によります。RequireJSはAMDローダーですが、町で唯一のローダーではありません。AMD仕様に100%準拠するコードを記述して、コードを使用するユーザーがコードを変更せずに必要なローダーを使用できるようにする場合は、RequireJSに固有requireであるため、グローバルレベルで使用する必要があります。requirejs別のAMDローダーはそれを定義しません。AMD仕様では定義されていますが、定義されてrequireいませんrequirejs

グローバルを定義する他のものをロードする場合は、競合を回避するためにグローバルレベルでrequire使用する必要があります。requirejs

モジュール内では、常にを使用defineしてへの参照を取得しますrequire。グローバル空間で競合があるかどうかに関係なく、これを行う必要があります。

于 2014-11-14T21:50:27.503 に答える
2

OK、それらは確かに「まったく同じ」かもしれません。次に、一方を使用する理由ともう一方を使用する理由に焦点を当てましょう...

不明確なのは、「ベストプラクティス」と見なすべきものです。requirejsが「一部の環境にすでにrequireがある場合」に追加の保証を提供する場合は、requirejs関数を常に使用してrequire構成を定義することをお勧めします。 require関数よりも?

また、考えられないことが起こり、問題の環境に「require」がすでに定義されているだけでなく、「requirejs」も定義されている場合はどうなりますか?それは、requirejsjsも必要であることを意味しますか?等々...?

于 2014-06-13T13:03:52.880 に答える
0

それらはロードされた同じオープンウェブサイトであり、すでに必要です

次にChromeコンソールを開きます

コンソールにrequireと入力し、Enterキーを押します

コンソールにrequirejsと入力し、Enterキーを押します

それらは異なる名前の同じ機能であることがわかります

于 2014-11-14T19:14:06.387 に答える