私は現在、node.js、Express、mustache、MySQLでクライアントサーバーアプリケーションを開発しています。ただし、この質問はほとんど言語やフレームワークに依存しないはずだと思います。
実際のMVCアプリケーションを実行するのはこれが初めてであり、各コンポーネントの意味を正確に判断するのに苦労しています。 (私は以前にMVCと呼ばれる可能性のあるWebアプリケーションを作成したことがありますが、自信を持ってそれらをそのように参照することはありません)
アプリケーション全体を結び付けるserver.js
があります。他のすべてのコンポーネント(データベース接続、および「モデル」と「ビュー」であると私が考えるものを含む)の初期化を行い、HTTP要求を受信し、使用する「ビュー」を決定します。
これは、私のserver.js
ファイルがコントローラーであることを意味しますか?それとも、そこに属していないコードを混合していますか? server.js
ファイルをどのコンポーネントに分割する必要がありますか?
Server.jsファイルにあるコードのいくつかの例:
var connection = mysql.createConnection({
Host : 'localhost',
user : 'root',
password : 'sqlrevenge',
database : 'blog'
});
//...
app.get("/login", function (req, res) { //Function handles a GET request for login forms
if (process.env.NODE_ENV == 'DEVELOPMENT') {
mu.clearCache();
}
session.session_from_request(connection, req, function (err, session) {
if (err) {
console.log('index.js session error', err);
session = null;
}
login_view.html(res, user_model, post_model, session, mu); //I named my view functions "html" for the case I might want to add other output types (such as a JSON API), or should I opt for completely separate views then?
});
});
session.js
という名前の別のファイルがあります。 cookies
オブジェクトを受け取り、保存されたデータを読み取って、それが有効なユーザーセッションであるかどうかを判断します。また、Cookieの値を変更するlogin
という名前の関数も含まれています。
View
と見なすことができるかどうかさえ疑問に思っています(Cookieは出力されるHTTPヘッダーの一部です)さて、MVCの背後にある詳細を覚える最も確実な方法は、MVCの曲を学ぶことです。
http://www.youtube.com/watch?v=YYvOGPMLVDo
別の簡単なアプローチは次のとおりです。
このページの説明も気に入っています。
制御ロジックやCookieやセッションなどの下位レベルの懸念からビューをクリーンに保つことは、間違いなくベストプラクティスと見なされます。通常、これらの懸念事項は、ヘルパーメソッドまたはサービスを呼び出すコントローラーによって処理され、ビューに渡される論理フロー(セッション)またはリターンビューモデル(ASP.Net MVC)またはインスタンス変数(Rails)を決定します。これらのサービスまたはセッションへの繰り返しの呼び出しは、呼び出しの前に暗黙的に呼び出されるフィルター(RailsおよびASP.Netのアクションフィルター)のbefore_filter)の概念を使用することでさらに減らすことができます。コントローラ。
したがって、これらのタイプの懸念事項は、ビューよりもコントローラーに密接に関連しており、ヘルパーまたはサービスを使用することで、コントローラーから繰り返しコードを取り除くことができます。