5

オープンソース アプリケーション用に作成した手続き型の JavaScript コードがいくつかあり、それを OOP にリファクタリングしたいと考えています。JavaScript フレームワークの経験がほとんどないため、自分のニーズに適したものを見つけるのに苦労していますが、まだ何も試していません。AngularJS、Backbone.js、Knockout について読んだだけです。

現時点では、混乱したグローバル変数と関数が散在しているため、コードを構造化したいと考えています。

すべてのビジネス ロジックはサーバー レベルで処理されるため、クライアント側のコードはサーバーから受信または要求したデータを使用して UI のみを処理します。

コードはここにあります: https://github.com/paullik/webchat/blob/asp.net/webchat/Static/Js/chat.js

何か提案はありますか?

4

1 に答える 1

5

オブジェクト指向 JavaScript がすべての問題の解決策になるとは限りません。

私のアドバイスは、このトピックの選択には注意することです。

実際には、OO-JS は、従来のオブジェクト指向言語に近づけるために、コードをより複雑にする可能性があります。ご存じのとおり、JS はユニークです。

コードを構造化し、実装を軽量かつ柔軟に保つデザイン パターンがあることを知っておくことが重要です。

オブジェクト指向ではなく、高度な JS 実装を構築しているのはデザインパターンです。Axel Rauchmeyer の言葉を言い換えると、「オブジェクト指向の方法論は、基本的な JavaScript 構文には適合しません。それはねじれ歪んだ実装であり、JS はそれがなければはるかに表現力豊かです。」

この分析の根底にあるのは、JS にはクラスがないという事実です。本質的には、すべてがオブジェクトであるため、オブジェクト指向の変数と関数が既に存在します。したがって、この問題は、コンパイル済み言語 (C/Java) で見られる問題とは少し異なります。

JavaScript にはどのようなデザイン パターンがありますか?

Addy O' Somani と Essential Design Patterns は、チェックすべき優れたリソースです。 彼は JavaScript のデザイン パターンに関する本を書きました。

しかし、もっと...もっとたくさんあります。

A. require.js - 非常に印象的な方法で JS コードのモジュールをロードする方法があります。これらは一般にモジュール ローダーと呼ばれ、実行時のパフォーマンスを最適化するため、将来の js ファイルのロードと広く考えられています。yepnope などが存在します。複数の js ファイルをロードする場合は、この点に注意してください。(リクエストによりトップに移動しました)。

B. MVC - コードの構造化に役立つ Model View Controller フレームワークが多数あります。これはパターンですが、あなたの目的には不合理かもしれません。あなたはバックボーン、ノックアウト、アンギュラーについて言及しました... はい。これらはあなたのためにトリックを行うことができますが、1)学習曲線が高く、2)環境にとってやり過ぎである可能性があることを懸念しています.

C. 名前空間またはモジュール パターン。おそらくあなたのニーズにとって最も重要です。 グローバル変数を解決するには、それらを名前空間にラップして参照するだけです。これらは、モジュール ローダーを生成する非常に優れたパターンです。

D. クロージャー - OO JS について言及されました。これの便利な部分は、クロージャーの概念であり、プライベートメンバーを提供します。最初はこれは不可解なアイデアですが、パターンを認識した後は、些細な練習になります。

E. カスタム イベント - オブジェクト間でハード参照を使用しないことが非常に重要になります。例:AnotherObject.member;これは、2 つのオブジェクトが緊密に結合され、両方が柔軟に変更できなくなるためです。これを解決するには、イベントをトリガーしてリッスンします。従来のデザイン パターンでは、これはオブザーバーです。JS では PubSub と呼ばれます。

F. コールバック - コールバック パターンは AJAX を有効にしたものであり、非ブロッキング io と呼ばれるものにより、Window 8、Firefox OS、および Node.js の観点から開発に革命をもたらしています。非常に重要です。

恐れることはありません。これは、長期的で高度な JavaScript 実装の方向性です。

パターンを認識したら、そこから坂を下ります。

お役に立てれば。

于 2012-09-12T18:40:35.040 に答える