1.目的
client のJavasScriptのObjectが大きくなり過ぎたのでmodule化する
2.既存のcodeからの変更箇所
(1) 元のjsの< script> のtypeを変更
(2) 元のjsから対象のfunctionをmoduleのfileに移動
(3) exportとimportを追加
3.ファイルレイアウト
—main.html
|— pages
| |— sub.html
|
|— js
|—sub.js
|—sub_module.js
4.main.html内に./pages/sub.htmlを組み込む
<iframe src="pages/sub.html" id="Page.sub"></iframe>
5.sub.htmlに記述する< script> のtype
元のsub.jsのtypeを”text/javascript”から”module”に変更する
追加するsub_module.jsを”module”にする
・変更前
<script type="text/javascript" src="../js/sub.js"></script>
・変更後
<script type="module" src="../js/sub_module.js"></script> <script type="module" src="../js/sub.js"></script>
6.functionをmoduleのfileに移動
元:sub.js
先:sub_module.js
7.functionにexportを追加
・sub_module.js
export function api() { console.log("This api is called."); }
8.importをsrcの先頭に追加
・sub.js
import { api } from '../js/sub_module.js'; api() // This api is called.
9. async で定義していたfunctionはどうなるか?
問題なく動作する
・export側 ( sub_module.js )
export async function api_search() { console.log("This api_search is called."); }
・import側 ( sub.js )
import { api_search } from '../js/sub_module.js'; api_search(); //This api_search is called.