ホームページ ウェブフロントエンド フロントエンドQ&A さまざまなフロントエンドモジュラー仕様

さまざまなフロントエンドモジュラー仕様

Dec 10, 2016 am 09:47 AM

いくつかの重要なポイントを記録して、証拠とともにいつでも覚えておけるようにします。

モジュール化への道のりを振り返る 以前、自分のモジュール化への道のりを簡単に振り返りましたが、内容が雑多すぎて、フロントエンドのモジュール化を完全に理解するのに不便でした。過去数日間、何人かのフロントエンド担当者にインタビューしたところ、私を殺しに来た専門家を除いて、ほとんどの人はモジュール化に比較的馴染みがなく、モジュール化が何なのかさえ聞いたことがないことがわかりました。世界で人気の 3 つのフレームワーク: React、Angular(2)、および Vue。それらの最大の類似点は、モジュール性とコンポーネント化です。また、Nodejs から派生したさまざまなフロントエンド構築ツールもあります: Webpack、Gulp、Systemjs、それらを使用するための基礎もモジュール化とコンポーネント化です。モジュール化やコンポーネント化がなく、プロジェクトはスムーズに実行されており、これらの構築ツールを使用できると主張するのであれば、それを忘れるしかありません。なぜわざわざそんなことをするのでしょうか。プロジェクトの規模に関係なく、モジュール化は、一方では作業効率を向上させ、他方ではフロントエンドを改善するためによく理解し、実践する必要があることがわかります。レベル;

モジュール化の利点については、ネット上で多くは語られませんが、さらに重要なのは、モジュール化に基づいてチームメンバー間で暗黙の了解が形成され、チーム内のプライベート ウェアハウス、統合管理、バックエンドでパッケージを呼び出すという目標の達成は、これまでと同様に自然なことです

すべては CommonJS から来ています:

心配しないでください。 CommonJS は JS の歴史的な理由により、当初はモジュール化されず、ブラウザ側のデファクトスタンダードになりました。この問題を解決するために CommonJS 仕様が提案され、JS がブラウザ側だけでなくあらゆる場所で動作することが期待されました。その後、Nodejs は CommonJS 仕様をサーバー側に実装し、ブラウザーの小規模な環境からフロントエンドとバックエンドの通信という大規模な環境に JS をプルしました。 みにくいアヒルの子はついに白い白鳥になりました。

CommonJS の仕様によれば、ファイルはモジュールを参照およびロードするために使用され、モジュールを定義およびエクスポートするために使用され、モジュールを識別するために使用されます。モジュールの読み取りにより、取得と実行は同期的なファイル操作であるため、CommonJS はサーバー側の Nodejs によってのみ実行できます。ここで Nodejs のモジュール化を確認できます。Browserify により、JavaScript 間の移動が可能になります。フロントエンドとバックエンド; ただし、ブラウザ側では、この同期操作は適用されません。少なくとも時間がかかり、後続のコードの実行がブロックされるため、CommonJS はブラウザ側で 2 つの主要なブランチを派生させました。非同期モジュール定義) および CMD (共通モジュール定義);

AMD (非同期モジュール定義) :

AMD は、define(id?, dependency?, Factory)、requires([dependency]、 function(){}) を使用してモジュールを呼び出し、ロードが完了した後にコールバック関数を実行する方法を使用します。同期順序での実行という観点からは理解できません。複数のファイルが非同期で並列にロードされますが、ロード順序によってはどれが最初に実行されるかは予測できませんが、すべての依存関係が実行され、結果は次のようになります。最後に一緒に呼び戻されます。

CMD (共通モジュール定義):

CMD は SeaJS で表され、モジュールの定義とロードの方法が RequireJS とは少し異なります。 、factory) を使用してモジュールを定義しますが、SeaJS はモジュールをロードするために最も近い依存関係メソッドを使用します。一般に、モジュールは依存関係に依存せず、統一された方法で記述されます。依存モジュールは seajs.use([dependency], function(mod,[mod]){}); によって使用されますが、基本的にはモジュールの非同期ロードですが、ロードと実行のタイミングが異なります。 RequireJS との比較

それに比べると、Seajs と Requirejs はどちらも非常に優れたフロントエンドのモジュラー構成ソリューションであり、それぞれに独自の利点があります。Requirejs は、メイン コード ロジックをコールバックする前に、すべてのフロントエンドの依存関係がロードされて実行されるまで待機する必要があります。不足していると言えば、フロントエンドの依存関係を最適化する必要があることだけですが、Seajs は依存モジュールをプリロードするだけで実行せず、近くで使用します。現時点では遅延が発生する可能性があります。

Seajs について 簡単な理解:

Seajs は必要ない場合は使用しないでください

Seajs を上手に使いましょう!

ツールは生産性にとって非常に重要です:

ブラウザ側で一般的なモジュラー仕様は AMD と CMD ですが、ツールの助けを借りて、Gulp、Webpack などの CommonJS 仕様をブラウザ側でシミュレートすることができます。このツールを使用すると、Nodejs を作成するのと同じように開発環境でフロントエンド JS コードを作成でき、ブラウザで実行できる JS にパッケージ化されます。同様に、コード ブロックの非同期呼び出しも可能です。 UMD (ユニバーサル モジュール仕様):

JS がフロントエンドとバックエンドの両方で使用できるようになったことで、JS モジュールはブラウザとサーバーの両方で実行できるようになりました。UMD ソリューションは、AMD と CommonJS の統合です。 JS モジュール化のクロスプラットフォーム仕様:

(function(root, factory){
if(typeof define ==='function'&& define.amd){
// AMD
define(['jquery'], factory);
}elseif(typeof exports ==='object'){
// Node, CommonJS之类的
module.exports = factory(require('jquery'));
}else{
// 浏览器全局变量(root 即 window)
root.returnExports = factory(root.jQuery);
}
}(this,function($){
// 方法
function myFunc(){};
// 暴露公共方法
return myFunc;
}));
ログイン後にコピー

ES6 モジュール化:

ES6 は、新しい JavaScript 標準として、モジュールのバフを備えており、インポートとエクスポートを通じてモジュールをインポートおよびエクスポートします。基本的な考え方は CMD や AMD と似ていますが、もちろん、より多くの構文がサポートされています。現在のブラウザ環境では、より使いやすく、理解しやすくなっていますが、安心して使用するには、依然としてツールの力を利用する必要があります

つまり、フロントエンドのモジュール化は必須です。 !私たちは現状に満足することはできません。たとえいくつかのランダムなことをしたとしても、それでも何度でもうまくいきます。なぜなら、私たちよりも一生懸命働いている偉大なマスターがあまりにもたくさんいるからです。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Nodeのメモリ制御に関する記事 Nodeのメモリ制御に関する記事 Apr 26, 2023 pm 05:37 PM

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

Node の File モジュールについて詳しく説明しましょう Node の File モジュールについて詳しく説明しましょう Apr 24, 2023 pm 05:49 PM

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ Mar 16, 2024 pm 12:09 PM

PHP と Vue: フロントエンド開発ツールの完璧な組み合わせ 今日のインターネットの急速な発展の時代において、フロントエンド開発はますます重要になっています。 Web サイトやアプリケーションのエクスペリエンスに対するユーザーの要求がますます高まっているため、フロントエンド開発者は、より効率的で柔軟なツールを使用して、応答性の高いインタラクティブなインターフェイスを作成する必要があります。フロントエンド開発の分野における 2 つの重要なテクノロジーである PHP と Vue.js は、組み合わせることで完璧なツールと見なされます。この記事では、PHP と Vue の組み合わせと、読者がこれら 2 つをよりよく理解し、適用できるようにするための詳細なコード例について説明します。

クロスドメインの問題を解決するにはどうすればよいですか?一般的なソリューションの簡単な分析 クロスドメインの問題を解決するにはどうすればよいですか?一般的なソリューションの簡単な分析 Apr 25, 2023 pm 07:57 PM

クロスドメインは開発においてよく遭遇するシナリオであり、インタビューでもよく議論される問題でもあります。一般的なクロスドメイン ソリューションとその背後にある原則を習得すると、開発効率が向上するだけでなく、面接でのパフォーマンスも向上します。

フロントエンドの面接官からよく聞かれる質問 フロントエンドの面接官からよく聞かれる質問 Mar 19, 2024 pm 02:24 PM

フロントエンド開発のインタビューでは、HTML/CSS の基本、JavaScript の基本、フレームワークとライブラリ、プロジェクトの経験、アルゴリズムとデータ構造、パフォーマンスの最適化、クロスドメイン リクエスト、フロントエンド エンジニアリング、デザインパターン、新しいテクノロジーとトレンド。面接官の質問は、候補者の技術スキル、プロジェクトの経験、業界のトレンドの理解を評価するように設計されています。したがって、候補者はこれらの分野で自分の能力と専門知識を証明するために十分な準備をしておく必要があります。

フロントエンド開発に Go 言語を使用するにはどうすればよいですか? フロントエンド開発に Go 言語を使用するにはどうすればよいですか? Jun 10, 2023 pm 05:00 PM

インターネット技術の発展に伴い、フロントエンド開発の重要性がますます高まっています。特にモバイル デバイスの人気により、効率的で安定しており、安全で保守が容易なフロントエンド開発テクノロジーが必要です。 Go 言語は、急速に発展しているプログラミング言語として、ますます多くの開発者によって使用されています。では、フロントエンド開発に Go 言語を使用することは可能でしょうか?次に、この記事ではフロントエンド開発にGo言語を使用する方法を詳しく説明します。まずはフロントエンド開発にGo言語が使われる理由を見てみましょう。多くの人は Go 言語は

ノードのバッファーについて詳しく見る ノードのバッファーについて詳しく見る Apr 25, 2023 pm 07:49 PM

当初、JS はブラウザ側でのみ動作していたため、Unicode でエンコードされた文字列の処理は簡単でしたが、バイナリ文字列や非 Unicode エンコード文字列の処理は困難でした。バイナリは、コンピュータのビデオ/オーディオ/プログラム/ネットワーク パッケージの最低レベルのデータ形式です。

See all articles