SeaJS と RequireJS_AngularJS の違いの比較

WBOY
リリース: 2016-05-16 16:28:19
オリジナル
1274 人が閲覧しました

「歴史は過去ではありません。歴史は今起こっています。W3C やブラウザーなどの仕様の急速な発展に伴い、フロントエンドのモジュール開発は徐々にインフラストラクチャになります。最終的にはすべてが歴史になり、未来はより良くなります。」 「—— Yu Bo 氏の元の記事の最後の段落を引用すると、私は個人的に非常に同意します。さて、「将来」の話になりますが、フロントエンドのjsモジュールが発展していけば、そのモジュール形式が将来のWEBの標準仕様となり、実装方法が複数存在する可能性が高いと個人的には考えています。 JSON 形式と同様に、これは最終的に標準となり、ブラウザーによってネイティブに実装されました。

将来の非同期モジュールの標準となる可能性が高いのは誰ですか? SeaJS は CMD 仕様に従い、RequireJS は AMD 仕様に従います。これら 2 つの異なる形式から始めましょう。

CMD

CMD モジュールの依存関係宣言メソッド:

コードをコピーします コードは次のとおりです:

定義(関数 (必須) {
var a = require('./a');
var b = require('./b');
// さらにコード ..
})

CMD の依存関係は近くで宣言され、内部の require メソッドを通じて宣言されます。ただし、これは非同期モジュールであるため、ローダーはこれらのモジュールを事前にロードする必要があるため、モジュールが実際に使用される前にモジュール内のすべての依存関係を抽出する必要があります。ローダーによってオンザフライで抽出されるか、自動化ツールによって事前に抽出されるかにかかわらず、CMD のこの依存関係宣言形式は静的解析を通じてのみ実現できますが、これが CMD の欠点です。

CMD 仕様の欠点

直接圧縮できません: require はローカル変数です。つまり、require 変数が置き換えられると、ローダーと自動化ツールはモジュールの依存関係を取得できなくなります。
モジュールの記述には追加の規則があります。パス パラメーターは文字列操作の対象にすることはできず、変数で置き換えることもできません。そうしないと、ローダーと自動化ツールがパスを正しく抽出できなくなります。
仕様外の契約は、仕様の一部でない限り、より多くの文書を意味します。

注: SeaJS の静的分析は、モジュール パッケージを toString() に配置し、正規表現を使用して必要な部分を抽出し、依存するモジュールのパスを取得することによって実装されます。

AMD

AMD モジュールの依存関係宣言方法:

コードをコピーします コードは次のとおりです:

定義(['./a', './b'], function (a, b) {
// さらにコード ..
})

AMD の依存関係は事前に宣言されています。この利点は、依存関係を静的に解析する必要がないことです。ローダーと自動化ツールの両方で依存関係を直接取得できるため、より強力な実装を作成できる可能性があります。ローダーと分析ツールは有益です。

AMD 仕様の欠点

依存関係を事前に宣言することは、コードを書く上であまり親切ではありません。
内部モジュールと NodeJS モジュールの間には特定の違いがあります。
2 番目の点については特別な説明が必要です。実際、CMD と AMD の非同期モジュールはどちらも同期モジュール仕様 (NodeJS のモジュール) と一致することができません。一方だけが他方よりも同期モジュールに似ています。 AMD を同期モジュールに変換するには、定義関数のラッパーを削除するだけでなく、ヘッダーで require を使用して依存関係を宣言する必要がありますが、CMD では定義関数のラッパーを削除するだけで済みます。

概要

仕様の点では、AMD はよりシンプルかつ厳密で、適用範囲が広くなっています。RequireJS の強力な推進により、海外ではほぼデファクトの非同期モジュール標準となり、主要なライブラリも続々と AMD 仕様をサポートしています。

しかし、SeaJS と CMD の観点から見ると、多くの良いことも実現しています。

1. 比較的自然な依存関係の宣言スタイル
2. 小さいながらも美しい内部実装
3. 緻密な周辺機能設計
4. 中国人コミュニティのサポートの向上

可能であれば、フロントエンド コミュニティ環境との一貫性を保つために、SeaJS も AMD をサポートしてほしいと考えています。最終的には、大多数の開発者が満足するでしょう。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!