webpackを導入しようと思い、公式サイトを見たところ、JavaScriptでの依存性の扱い方について取り上げられていたので、備忘を兼ねてまとめてみました。

1. 昔ながらの方法

<script src="foo.js"></script>
<script src="bar.js"></script>
<script src="foobar.js"></script>

一番オーソドックスですが、ネームスペースの衝突や依存性解決の順番等考慮すべきことが多く、大規模開発では特に問題が顕著となります。

また、依存性の表現にHTMLを利用することになりますし、依存関係が不明瞭になりがちです。

必要性に応じて読み込みを行う訳でもないので、パフォーマンスもあまりよくありません。

* async(html5以降、利用可能になった段階で実行する)やdefer(ページのパース完了時に読込まれる)を利用すれば

 

2. synchronouse require(同期による依存性解決)

node.js, browserifyで用いられている方式。npmによってこの方式で多くのモジュールが管理されている。

ネットワークリクエストが非同期なのに対し、同期処理で依存性を解決するのはあまりよろしくない。

→ネットワークの応答を待つ必要がある。並列でモジュールをロードできない。

(node.jsのように元々サーバーサイドで検討されていた方式のため、FileIOのコストが少ないという前提があった。これをクライアントに持っていくと、サーバではFileIOだったものがネットワーク通信となってしまう。)

 

3. AMD(Asynchronous Module Definition)非同期モジュール定義

2.の問題点を解決した方法。require.jsで用いられる。

 

4.EcmaScript6の方式

将来的には期待できる方式。現状ではマルチブラウザを考えると採用できない。

Leave a Reply

Your email address will not be published. Required fields are marked *