フロントエンド開発設計パターンには、1. モジュール パターン、2. コンストラクター パターン、3. ファクトリ パターン、4. 混合パターン、5. シングルトン パターン、6. サブスクリプション パブリッシュ パターンなどがあります。
一般的に使用されるフロントエンド開発設計パターンには、モジュール パターン、コンストラクター パターン、ファクトリ パターン、ハイブリッド パターン、シングルトン パターン、サブスクリプション パブリッシュ パターンなどがあります。
フロントエンド開発設計モード
モジュール モード:
式で定義された変数とメソッドは、外部の世界からはアクセスできず、外部の世界に提供されるインターフェイスを介して「制限付きで」のみアクセスできます。属性とメソッドのカプセル化の問題は、関数スコープを通じて解決されます。
var Person = (function(){ var name = "xin"; var age = 22; function getName(){ return name; } function getAge(){ return age; } return { getName: getName, getAge: getAge } })(); console.log(age); // 报错:age未定义 console.log(name); // 报错:name未定义 console.log(Person.age); // undefined console.log(Person.name); // undefined只能通过Person提供的接口访问相应的变量 console.log(Person.getName()); // xin console.log(Person.getAge()); // 22
コンストラクター パターン
function Person(name,age){ this.name = name; this.age = age; } Person.prototype = { constructor: Person; printName: function(){ console.log(this.name); }, printAge: function(){ console.log(this.age); } }var person = new Person('xin', 22); person.printName(); // xin person.printAge(); // 22
混合モード
function Person(name,age){ this.name = name; this.age = age; }; Person.prototype.printName = function(){ console.log(this.name); }function Student(name,age){ //继承 Person 的属性 Person.call(this,name,age); }function create(prototype){ function F(){}; F.prototype = prototype; return new F(); } //让Student的原型指向一个对象,该对象的原型指向了Person.prototype,通过这种方式继承 Person 的方法 Student.prototype = create(Person.prototype); Student.prototype.printAge = function(){ console.log(this.age); }var student = new Student('xin',22); student.printName(); // "xin"
ファクトリ パターン
function Person(name, age){ var person = new Object(); person.name = name; person.age = age; person.printName = function(){ console.log(this.name); }; person.printAge = function(){ console.log(this.age); } return person; } var person = Person('xin',22);
シングル インスタンス モード
var Singleton = (function (){ var instance; function init(){ return { }; } return { getInstance: function(){ if(!instance){ instace = init(); } return instance; } }; })();
パブリッシュ/サブスクライブ モード
パブリッシュ/サブスクライブ モードはオブザーバー モードとも呼ばれ、1 対 1 対を定義します。 - オブジェクト間の多数の関係 依存関係、オブジェクトの状態が変化すると、そのオブジェクトに依存するすべてのオブジェクトが通知されます
パブリッシュ/サブスクライブ モデルは非同期プログラミングで広く使用されており、コールバック関数の代替となります。複数のイベント処理関数が同じイベントをサブスクライブできます。イベントが発生すると、対応する複数のイベント処理関数が実行され、オブジェクト間のハードコードされた通知メカニズムが置き換えられます。1 つのオブジェクトが別のオブジェクトの特定の関数を明示的に呼び出す必要がなくなりました。インターフェースはモジュール間の結合度を下げるもので、お互いの詳細は不明だが相互通信には影響しない
アプリケーション
DOM イベント
DOM イベントは典型的なパブリッシュ/サブスクライブ モデルであり、dom ノードのイベントを監視し、dom ノードが動作すると、対応するイベントがトリガーされ、応答関数が実行されます。イベント関数は dom ノードを実行します。ノードはまったく不明です。そのため、イベントが何であるか、トリガーする方法について心配する必要はなく、ただ実行するだけです。
カスタム イベント
パブリッシャーの「パブリッシュ-サブスクライブ」関係を指定します。オブジェクトで表され、キーはイベント名を表し、値はイベント ハンドラーで構成される配列であり、サブスクライバーの名簿に相当します。メッセージをパブリッシュした後、キャッシュ リストが走査され、サブスクライバのコールバック関数が順番に実行されます
var EventCenter = (function(){ //将所有的"发布-订阅"关系放到events中 var events = {}; //给事件绑定事件处理程序, function on(evt, handler){ //evt:事件名,handler:事件处理程序 events[evt] = events[evt]||[]; events[evt].push({ handler:hander }); } //发布消息(触发事件),并执行相应的事件处理程序 function fire(evt,args){ //evt:事件名,args:给事件处理程序传递的参数 if(!events[evt]){ return; } //遍历事件处理程序列表,执行其中每一个事件处理程序 for(var i=0;i<events[evt].length;i++){ events[evt][i].handler(args); } } //使用模块模式的方式,向外界提供绑定事件处理程序和触发事件的接口 return { on: on, fire: fire } })();
実用的なアプリケーション
var Event = (function(){ var events = {}; function on(evt, handler){ events[evt] = events[evt]||[]; events[evt].push({ handler:handler }); } function fire(evt,args){ if(!events[evt]){ return; } for(var i=0;i<events[evt].length;i++){ events[evt][i].handler(args); } } function off(evt){ delete events[evt]; } return { on: on, fire: fire, off: off } })(); Event.on('change', function(val){ console.log('change... now val is ' + val); }); Event.on('click', function(val){ console.log('click.... now val is '+ val); }) Event.fire('change', 'xin'); Event.fire('click', 'xin'); Event.off('change');
以上が一般的に使用されるフロントエンド開発設計パターンは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

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

Dreamweaver Mac版
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター
