多くのWebフレームワークには、コードを作成し、問題に対処するためのMVCスタイルのレイアウトがあります。 JavaScriptによく似たパラダイムは何ですか?私はすでにフレームワーク(jQuery)と邪魔にならないjsを使用していますが、それでも、多くのJavaScriptを必要とするより複雑なWebアプリがある場合に遭遇する問題には対応していません。単一またはおそらくいくつかのファイルで機能します。これに取り組むより良い方法は何ですか?
Namespacing:オブジェクトをpseudo-packageとして使用することを忘れないでください(ほとんどのフレームワークがこれを行うので、あなたもすべきです):
var YourCompany = {};
YourCompany.util = {};
YourCompany.util.myFunction = function() { /* ... */ }
必ずしもそのように設定する必要はなく、任意の命名規則を使用する必要がありますが、名前空間は非常に役立ちます(何かを移動する場合は、検索と置換のリファクタリングも簡単になります)。 。
jSが完全にオブジェクト指向であることを理解していない人もいます。クラスのように機能するものを作成できます。
function Car() {
this.publicField = "bad";
var privateField = "good";
var self = this;
this.publicMethod = function() {
alert("I can access " + this.publicField + " and " + privateField);
}
function privateMethod() {
alert("I can access " + self.publicField + " and " + privateField);
}
}
これらのクラスをインスタンス化できます。
var car = new Car();
継承 をサポートします:
function Vehicle() { /* define class */ }
function Truck() { /* define class */ }
Truck.prototype = new Vehicle();
既存のクラスにメソッドを追加することもできます:
Array.prototype.remove = function() {
}
JavaScriptのOOサポートについて詳しく知りたい場合は、 Rhino本 を強くお勧めします。
このリンク は、中規模から大規模のJavascriptアプリケーションを構築するための正気な方法を説明します。特に、これには以下が含まれます。
名前空間を使用してから、名前空間を反映したファイル構造を使用することをお勧めします。たとえば、ブラッドの答えを使用して、私はTruck.js
、Car.js
およびVehicle.js
。これにより、メンテナンス、整理、単体テストが簡単なコードベースが得られます。ただし、複数のJSファイルを連結して最小化し、本番環境で使用できるようなビルドプロセスが必要です。
プロトタイプオブジェクトの整理されたコードベースを使用すると、ほとんどの設計パターンを実装できる状態になります。 この主題に関する優れた本 もいくつかあります。 Nicholas Zackasによる presentation は、優れたJavascriptアプリを構築する方法を理解するのにも役立ちます。
また、JavaScriptでは、パターンと手法を区別することも重要だと思います。ネームスペースなど、JSには本来備わっていない一般的に使用されているさまざまな手法に精通している必要があります。しかし、これらはパターンではなくテクニックです。 Gang of Fourで定義されているようなパターンの作成を容易にするテクニック。
申し訳ありませんが、このような短い要約です。しかし、私はより深い洞察を得るために私が言及したリソースを強くお勧めします。
JavaScriptのデザインパターンの実装に焦点を当てた最近追加された新しい記事と、JavaScriptを使用した Gang-of-Fourのデザインパターン の一部が追加されています。
JQueryの使用は素晴らしい出発点です。ブラウザーのJavaScriptはフロントエンドを補強します。MVCの「パターン」やそれに続くものはありません。コードをクリーンに保つための「ベストプラクティス」がいくつかあります。
this
およびアクションのクラスを使用します。サーバー側/ブラウザー以外のJavaScript(Node.jsなど)には、ビルド用の 素晴らしいフレームワーク がいくつかあります。ソースを参照して、何かを拾っているかどうかを確認することは価値があります。
これを 興味がある人のためのより詳細なエントリ に移動しました。