ダイナミックに挿入されたJavaScriptファイルのネームスペースは可能ですか?ネームスペース動的にロードされるjavascriptファイルの内容
私はscript
タグを作成してJavaScriptファイルを動的にインクルードしてDOMに挿入できますが、このインクルードファイルを名前空間にすることはできますか?したがって、ファイルにbar
という名前の関数がある場合、名前空間、たとえばfoo
:foo.bar()
にアクセスしたいと考えています。
ダイナミックに挿入されたJavaScriptファイルのネームスペースは可能ですか?ネームスペース動的にロードされるjavascriptファイルの内容
私はscript
タグを作成してJavaScriptファイルを動的にインクルードしてDOMに挿入できますが、このインクルードファイルを名前空間にすることはできますか?したがって、ファイルにbar
という名前の関数がある場合、名前空間、たとえばfoo
:foo.bar()
にアクセスしたいと考えています。
名前空間をファイル自体を変更せずに動的にロードするときに、そのファイルに定義されているすべてのものに名前空間を追加することを意味する場合、答えは「いいえ」です。
はい、CommonJS Modules/1.1は1つの方法しか指定していません。
私はこれをサーバー側のNode.jsとだけ使用しましたが、CommonJS準拠のブラウザで動作するように作成された他のライブラリがあると思います。サーバ/ブラウザ用の複数のモジュール仕様があることに注意してください。
module.exports.bar = Bar;
function Bar() {
// code
}
と使用方法を::
モジュールはただのjavascriptの他の作品のよう書かれている、唯一の追加は、あなたが公開したいものをエクスポートされ、実際に行われている何
var foo = require('mymodule');
foo.bar();
背景は、コード全体が別の関数にラップされ、エクスポートはそのプロパティです。
また、Michael Bolin talked about similar problem in his talk about 'with' keyword at JSConf。
+1教育ビデオ用。新しいことを学ぶのはうれしいです:) –
CurlJS、requireJSは、ブラウザ上で同じように動作し、すぐに動作するAMDモジュールをサポートしています。 browserifyのようなツールを使用すると、Modules/1.1バンドルを作成できます。 – Raynos
私はまだこれで遊んでいない。しかし、1つの質問には、jsファイルに含まれるそれぞれのファイルをピックアップするために 'require'のプロパティをエクスポートする必要がありますか?その場合、サードパーティ製のjsファイルを含めるときに名前空間を取得するにはどうすればよいですか? –