Javascript 节点和常规中的MVC:模型如何绑定到视图?
我从node.js开始,制作一个简单的MVC框架。到目前为止,我已经有一个前端控制器(或“调度器”,如果你愿意的话)在工作。路由通过dispatcher配置模块进行,如图所示 我的问题在最后,紧跟着代码。另外,这是学习使用node的练习,请不要建议使用express.js之类的工具 dispatcherConfig.js:Javascript 节点和常规中的MVC:模型如何绑定到视图?,javascript,model-view-controller,node.js,Javascript,Model View Controller,Node.js,我从node.js开始,制作一个简单的MVC框架。到目前为止,我已经有一个前端控制器(或“调度器”,如果你愿意的话)在工作。路由通过dispatcher配置模块进行,如图所示 我的问题在最后,紧跟着代码。另外,这是学习使用node的练习,请不要建议使用express.js之类的工具 dispatcherConfig.js: var url = require('url'); (function() { var dispatcherConfig = { '/'
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'];
}
}());
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);
}
}());
这由dispatcher.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'];
}
}());
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:
(请暂时忽略内联视图代码)
(函数(){
var homeController={
doService:功能(请求、响应){
响应。写入(“”+
'' +
'' +
'');
}
}
module.exports.doService=函数(请求、响应){
返回homeController.doService(请求、响应);
}
}());
这个路由工作得很好。我已经让控制器很容易地连接到url模式,并且通过进一步检查请求对象来模拟spring的多动作控制器类型 这里需要做的三件明显的事情是:
问题:
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'];
}
}());
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);
}
}());