RequireJS 2.xを使用しています。一部のチュートリアル(および公式ドキュメント)では、
requirejs.config({ [...] });
requirejs(["module"]) ...
そして時折
require.config({ [...] });
require(["module"]) ...
これらの2つの関数(requirejsとrequirejs)に違いはありますか?私はドキュメントでそれについての言葉を見つけることができませんでした。 :(
それらはまったく同じです。
その理由は、一部の環境には既にrequire
が存在する可能性があるためです。その場合、RequireJSはそれを上書きせず、requirejs
を介したライブラリの使用を許可します
このコミットを参照してください- https://github.com/jrburke/requirejs/commit/be45948433b053921dc6a6a57bf06d04e13b3b39
requirejs
とrequire
は同じですか?RequireJS 2.1.15の時点で、コンソールで実行できるこのテストで証明できるように、グローバルスペースのrequire
とrequirejs
は実際に「まったく同じ」です。
_> require === requirejs
true
_
テストがtrue
を返すことは、それらがまったく同じ関数オブジェクトであることを示しています。これらは、類似または同一のコードを持つ2つの関数ではありません。それらは同じオブジェクト、期間です。
ただし、define(['require'], function (require) {
を実行すると、関数に渡されるrequire
は通常、グローバルrequire
とdifferentになります。
require
またはrequirejs
を使用する必要がありますか?場合によります。 RequireJSはAMDローダーですが、町で唯一のローダーではありません。 AMD spec に100%準拠するコードを書きたい場合は、コードを使用する人がコードを変更せずに好きなローダーを使用できるようにするには、グローバルレベルでrequire
を使用する必要があります、requirejs
はRequireJSに固有であるため。別のAMDローダーでは定義されません。 AMDの仕様ではrequire
は定義されていますが、requirejs
は定義されていません。
グローバルrequire
を定義する他の何かをロードする場合、競合を避けるためにグローバルレベルでrequirejs
を使用する必要があります。
モジュール内では、常にdefine
を使用してrequire
への参照を取得します。グローバルスペースに競合があるかどうかに関係なく、これを行う必要があります。
確かに、それらは「まったく同じ」かもしれません。次に、一方を使用する理由と他方を使用する理由に焦点を当てましょう...
不明確なのは、「ベストプラクティス」と見なされるべきものです。requirejsが「一部の環境に既にrequireがある場合」という追加の保証を提供する場合、requirejs関数を使用して常にrequire構成を定義することは得策ではありませんrequire関数よりも?
また、考えられないことが起こり、問題の環境に「require」がすでに定義されているだけでなく、「requirejs」も定義されている場合はどうなりますか?つまり、requirejsjsも必要だということですか?等々...?
ロード済みのSame Open Webサイトは既に必要です
次にChromeコンソールを開きます
コンソールでrequireと入力し、Enterを押します
コンソールでrequirejsと入力し、Enterキーを押します
異なる名前の同じ関数であることがわかります