JavaScript の設計パターンとフレームワークでの実践方法の紹介
JS およびアセンブリ コードを記述するプロセスで、特定のデザイン パターンを使用すると、コードをよりエレガントで柔軟にすることができます。
次に著者は、reduxとsubscribe、ES6のclass、vueの$dispatch、jqueryのon/offを組み合わせたこれらのライブラリ、文法、フレームワークのデザインパターンの使い方を簡単に紹介します。
デザインパターンによって解決される問題
デザインパターンは、あまり謎めいた知識ではありませんが、多くの学生が JS コードを作成する際に、うっかり多くのデザインパターンを使用したことがあります。
デザインパターンを抽象化して個別に議論するのは、よく使われるJSパターンを記述するためにアルゴリズムのバブリングやソートを抽象化するのと同じだと著者は考えています。
このタイプのパターンを研究することで、そのパターンがコード構造と JS アルゴリズムをガイドできるようにします。
よく使われるデザインパターンの概要
observer [オブザーバーパターン]
状態の変化に応じてオブザーバーキューとhashMapのコールバック動作をアクティブにトリガーする
簡単なオブザーバーパターンコードの練習
class StateTracker{ constructor(){ this.observers = []; this.internamState= 10; } // 改变内部状态,触发状态的观察者列表 change(val){ this.internamState= val; this.observers.forEach(observer=>observer(val)); } registerObserver(ObserverFn){ this.obserers.push(ObserverFn) } }
パブリッシュ/サブスクライブ[サブスクライブ]リリースモード】
コードモジュールの共有アクセス空間にhashMapのトピック/コールバック形式を格納します。
オン/オフ/トリガーやその他のインターフェイスを追加して、マウント、削除、トリガーなどのアクションを実装します。
簡単なサブスクリプション・パブリッシュ・モードのコード練習
class PubSubHandler{ constructor(){ this.eventPool = {}; } //移除 off(topicName){ delete this.observers[topicName] } //发布 trigger(topicName,...args){ this.eventPool[topicName] && this.eventPool[topicName].forEach(callback=>callback(...args)); } //订阅 on(topicName,callback){ let topic = this.eventPool[topicName] ; if(!topic){ this.eventPool[topicName] =[] } this.eventPool[topicName].push(callback) } }
singleton [single case mode]
コンストラクターのインスタンスは 1 つだけあり、通常、内部インスタンスはクロージャーを介して保存され、内部インスタンスはインターフェースを介してアクセスされます。
var singleton = ()=>{ var instance; var createInstance = ()=>{ this.a = 1; this.b = 2; } return { getInstance:()=>{ if(!instance){ instance = createInstance(); } return instance; } } } var test = singleton(); test.getInstance() == test.getInstance() //true
デコレーターハイブリッドモード
このモードは、元のオブジェクトにさらに多くのビヘイビアーを装飾し、変数名を変更しないようにします。 ES7 の @decorator や Python などの言語を使用したことがある場合は、decorator に精通しているはずです。
function decorator(sourceObj,decortorFn){ decortorFn(sourceObj); return sourceObj } var d = {a:1}; // d变为了{a:1,b:1} d = decorator(d,(d)=>{d.b=1});
ミックスインブレンディングモード
このモードは、機能がより垂直であることを除いて、デコレーターにいくらか似ています。 これは、元のオブジェクトの上にオブジェクトを追加および上書きする行為です。 extends や Object.assign などのメソッドと比較して、ミックスイン モードはより表現力豊かです。ミックスイン パターンは一般化できません。vue.mixin
class StateTracker{ constructor(){ this.raw = { a:1, b:2 } } mixin(obj){ Object.assign(this.raw,obj) } }
など、さまざまなデータ タイプに基づいて異なるミックスイン戦略が存在する可能性があります。次に、これらのデザイン パターンをベースに説明します。一般的に使用されるフレームワーク、文法、ライブラリなど。 アプリケーション。
reduxでのオブザーバーモードの使い方
var store = createStore(reducer,initialState);//注册redux store,存储在 nextListeners数组 var test = store.subscribe(()=>{console.log('我注册了!')});// 取消注册监听 test.unsubscribe(); publish/subscribe在jquery中的使用 $(document).on('hello',()=>{console.log('hello')})$(document).trigger('hello');$(document).off('hello')
react-reduxでのデコレーターモードの実践
//装饰器 @connect(state=>state) class Container extends Component{ render(){ return JSON.stringify(this.props) } }

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











Java フレームワークの商用サポートのコスト/パフォーマンスを評価するには、次の手順が必要です。 必要な保証レベルとサービス レベル アグリーメント (SLA) 保証を決定します。研究サポートチームの経験と専門知識。アップグレード、トラブルシューティング、パフォーマンスの最適化などの追加サービスを検討してください。ビジネス サポートのコストと、リスクの軽減と効率の向上を比較検討します。

軽量の PHP フレームワークは、サイズが小さくリソース消費が少ないため、アプリケーションのパフォーマンスが向上します。その特徴には、小型、高速起動、低メモリ使用量、改善された応答速度とスループット、および削減されたリソース消費が含まれます。 実際のケース: SlimFramework は、わずか 500 KB、高い応答性と高スループットの REST API を作成します。

アプリケーションのシナリオに基づいて最適な Go フレームワークを選択します。アプリケーションの種類、言語機能、パフォーマンス要件、エコシステムを考慮します。一般的な Go フレームワーク: Jin (Web アプリケーション)、Echo (Web サービス)、Fiber (高スループット)、gorm (ORM)、fasthttp (速度)。実際のケース: REST API (Fiber) の構築とデータベース (gorm) との対話。フレームワークを選択します。主要なパフォーマンスには fasthttp、柔軟な Web アプリケーションには Jin/Echo、データベース インタラクションには gorm を選択してください。

PHP フレームワークの学習曲線は、言語熟練度、フレームワークの複雑さ、ドキュメントの品質、コミュニティのサポートによって異なります。 PHP フレームワークの学習曲線は、Python フレームワークと比較すると高く、Ruby フレームワークと比較すると低くなります。 Java フレームワークと比較すると、PHP フレームワークの学習曲線は中程度ですが、開始までの時間は短くなります。

Go フレームワーク開発における一般的な課題とその解決策は次のとおりです。 エラー処理: 管理にはエラー パッケージを使用し、エラーを一元的に処理するにはミドルウェアを使用します。認証と認可: サードパーティのライブラリを統合し、資格情報を確認するためのカスタム ミドルウェアを作成します。同時処理: ゴルーチン、ミューテックス、チャネルを使用してリソース アクセスを制御します。単体テスト: 分離のために getest パッケージ、モック、スタブを使用し、十分性を確保するためにコード カバレッジ ツールを使用します。デプロイメントとモニタリング: Docker コンテナを使用してデプロイメントをパッケージ化し、データのバックアップをセットアップし、ログ記録およびモニタリング ツールでパフォーマンスとエラーを追跡します。

Go フレームワークを選択する場合、主要業績評価指標 (KPI) には、応答時間、スループット、同時実行性、リソース使用量が含まれます。フレームワークの KPI をベンチマークして比較することで、開発者は、予想される負荷、パフォーマンスが重要なセクション、リソースの制約を考慮しながら、アプリケーションのニーズに基づいて情報に基づいた選択を行うことができます。

Golang フレームワークを使用する場合は、ルーティング エラーを避けるために、ルートがリクエストと一致するかどうかを確認する必要があります。パフォーマンスの低下を避けるために、ミドルウェアは注意して使用してください。データベース接続を適切に管理して、パフォーマンスの問題やクラッシュを防ぎます。エラー ラッパーを使用してエラーを処理し、コードが明確でデバッグしやすいようにします。信頼できるソースからサードパーティのパッケージを入手し、パッケージを最新の状態に保ちます。

Go フレームワークの学習には、フレームワークへの過度の依存と柔軟性の制限という 5 つの誤解があります。フレームワークの規則に従わない場合、コードの保守が困難になります。古いライブラリを使用すると、セキュリティと互換性の問題が発生する可能性があります。パッケージを過度に使用すると、コード構造が難読化されます。エラー処理を無視すると、予期しない動作やクラッシュが発生します。
