私は node.js から始めて、単純な MVC フレームワークを作成しています。これまでのところ、フロント コントローラー (または「ディスパッチャー」) が動作しています。ルーティングは、示されているように、ディスパッチャー構成モジュールを介して行われます。
私の質問は、コードの直後の最後にあります。また、これはノードを学習するための演習です。express.js などを提案しないでください。
dispatcherConfig.js :
var url = require('url');
(function() {
var dispatcherConfig = {
'/' : 'homeController',
'/index.html' : 'homeController',
'/sayHello.html' : 'helloController',
'404' : '404Controller'
};
module.exports.getController = function(request) {
var route = url.parse(request.url, true).pathname;
if(dispatcherConfig[route]) {
return dispatcherConfig[route];
}
return dispatcherConfig['404'];
}
}());
これは、dispatcher.jsによって使用されます。
var dispatcherConfig = require('./config/dispatcherConfig');
(function() {
module.exports.dispatch = function(request, response) {
var requiredController = dispatcherConfig.getController(request);
var controller = require('./controllers/' + requiredController);
controller.doService(request, response);
}
}());
そして、これがサンプルコントローラーの外観です(うまく機能します) - homeController.js:(
今のところインラインビューコードは無視してください)
(function() {
var homeController = {
doService: function(request, response) {
response.write('<form action="/sayHello.html" method="GET">' +
'<input id="name" name="name" size="20" />' +
'<input type="submit" value="Submit" />' +
'</form>');
}
}
module.exports.doService = function(request, response) {
return homeController.doService(request, response);
}
}());
このルーティングはうまく機能します。URLパターンに簡単に接続できるコントローラーがあり、リクエストオブジェクトをさらに検査することで、Springのマルチアクションコントローラータイプもエミュレートしています。
ここで実行する必要がある 3 つの明白な事柄は次のとおりです。
- ビュー オブジェクトの作成
- モデル オブジェクトの作成
- ビューとモデルのバインディング
質問:
- MVC (少なくとも春) では、ビューをモデルにバインドするのはコントローラーです。これが最善の方法ですか?どのビューがどのモデルにバインドされているかを説明する別の構成を個別に維持し、コントローラーがビューにのみルーティングするとどうなりますか。これは間違っていて、MVC ではありませんか?
- node.jsでビューを表現する良い方法は何ですか? テンプレートベースが多いため、どのようなテンプレートオプションが提供されていますか (成熟したもの)?
- 静的に提供されるファイルをロードすると (たとえば、メモリに読み取られたファイルを介してロードされる CSS ファイル)、グローバル/アプリ スコープ内のコンテンツへの参照を保持すると、後続の要求はメモリから直接提供され、驚異的な結果が得られます。速度、この仮定は正しいですか? 実際、最初のリクエストがノード サーバーに入力された後 (ファイルの読み取りとコンテンツのメモリへのロードがトリガーされます)、後続のすべてのリクエストがメモリから処理されることを保証できます (このような静的コンテンツの場合)。
- 生のnode.jsでPOSTデータを取得する低レベル(フレームワークなし)の方法は何ですか?
ありがとう。