8

JavaScript とその多くのライブラリ (jQuery、RequireJS ) を使用すると、多くの優れた Web サイトを作成できますが、より大きな Web サイトを構築することを考えると、型の安全性が欠けていることが気がかりです。

Google には、JSDoc で JavaScriptに注釈を付けて型チェックを行うことができる素晴らしいクロージャ コンパイラがあります。その豊富な型システムを試してみた結果、これにより、より長期間の JavaScript プロジェクトの保守性が大幅に向上することが期待できます。

唯一の問題は、 RequireJS のようなAMDライブラリではうまく動作しないことです。JavaScript ファイルを連結し、それを排除してスコープを処理する実験的な--transform_amd_modulesフラグがあります。ただし、これはややアンチパターンのようであり、RequireJS の利点のほとんどが取り除かれています (ただし、モジュラー ファイル構造は維持されています)。将来的にどれだけの支援が得られるかという問題もある

RequireJS のメリットを犠牲にしてではなく、型の安全性を最終目標としている場合、私の最善の策は何でしょうか?

PS: 私は RequireJS を選択した AMD ライブラリとして使用しましたが、別の AMD ライブラリで動作するソリューションに反対するつもりはありません。

4

1 に答える 1

10

Closure Compilerはさまざまな JavaScript ライブラリで使用できますが、独自のモジュールと依存関係システムを持つClosure Libraryを使用すると、最大のメリットが得られます。Closure Library を使用する Web アプリケーションは、一般に 1 つの JavaScript ファイルにコンパイルされるため、非同期モジュールの読み込みは必要ありません。ただし、Closure は、非同期でロードできるモジュールをサポートしています。Chad Killingsworthは、こ​​こでモジュールをセットアップする方法の良い例を提供しました。さらに、plovrツールは、使用を簡素化する追加モジュールのサポートを提供します。

Closure Compiler を使用することに決めた場合 (そして大規模なAMDコードベースに縛られていない場合)、Closure Library とそのモジュール/依存関係システムを新しいコードに採用することで、生産性を最大化できる可能性があります。AMDコードベースを使用する予定がある場合は、おっしゃったように、新しい実験的なコンパイラがフラグ--transform_amd_modulesを立てて--process_common_js_modules役立つかもしれませんが、注釈のないライブラリを使用すると、コンパイラの能力の多くを逃します.

将来的には、ECMAScript Harmony モジュールが正式な標準になると、Closure、Dojo、YUI などのライブラリが最終的にその標準に準拠する可能性があります。これにより、最終的には異なるライブラリから JavaScript コードをシームレスに統合できるようになるかもしれません。それまでの間、JavaScript アプリケーションを作成し、型チェック、デッドコードの除去、縮小化、高度なメモリ管理、ブラウザにとらわれない、驚異的な標準ライブラリを楽しみたい場合は、Closure Compiler を Closure と組み合わせて使用​​することを強くお勧めします。としょうかん。

于 2012-05-28T22:39:43.973 に答える