このようなUMDモジュール('js/mymodule.js'):
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
typeof define === 'function' && define.amd ? define(['exports'], factory) :
(factory((global.mymodule = global.mymodule || {})));
}(this, function (exports) { 'use strict';
function myFunction() {
console.log('hello world');
}
}));
このモジュールを次のような HTML ファイルで使用するにはどうすればよいですか? (requirejs、commonjs、systemjs などなし)
<!doctype html>
<html>
<head>
<title>Using MyModule</title>
<script src="js/mymodule.js"></script>
</head>
<body>
<script>
/* HOW TO USE myFunction from mymodule.js ??? */
</script>
</body>
</html>
ご協力いただければ幸いです。
ベストアンサー1
さて、RequireJS、CommonJS、SystemJS などのない環境で実行しています。
重要な点は、factory((global.mymodule = global.mymodule || {}))
これがいくつかのことを実行することです。
真実であれば
global.mymodule
、それはglobal.mymodule = global.mymodule // A noop. factory(global.mymodule)
それ以外の場合は以下と同等です:
global.mymodule = {} factory(global.mymodule)
工場内: ファクトリーでは、 を割り当てることによって、モジュールからエクスポートしたいものをエクスポートする必要があります。つまり、を実行してexports
エクスポートします。myFunction
exports.myFunction = myFunction
工場の外mymodule
: 外部では、エクスポートされた値はグローバル空間にエクスポートされたになります。myFunction
たとえば、 を使用する場合は、 を実行しますmymodule.myFunction(...)
。
明確でない場合に備えて。コード内のファクトリは で始まる関数でありfunction (exports) {
、 を正しく配置していますmyFunction
。