私もnodejsを勉强しに来ました.自分でミニMVCを実现しませんでした.


私もnodejsの憂鬱な日のドキュメントを勉強しに来ました.あまり実例がなくて、製品が成熟していません.
 
用事が終わってから難しいですが、チャットルームは難しいですね.今日の午後初めてこのものに触れました.
 
突然、以前のweb开発とは全く関系なく、バックエンドは自分でいろいろなリクエストを処理しなければならないことに気づきました....
 
実现チャットルームは标准が一つもないと后ろが散らかってしまいます....書けば書きます...
 
まずフレームの雛形を書いてから...私もMVCを実現して遊びに来ました
 
次の雛形は基本的に私自身のphpフレームワークの思想に由来します....ほぼ明日がある
 
今日と明日の2日间はフレームワークを実现して、后で自分で重ねて応用することができます......
 
兄はこれからしばらくこのぼろぼろなものを振り回しているかもしれません...
 
 
 
console.log('kenxu     ');
//       MVC  
var Http = require('http');
var System = require("sys");
var FileSystem = require("fs");
var Url = require("url");

//     
var __undef = 'undefined',__proto = "prototype";
Object.extend = function(dest, source) {
	for (var property in source) dest[property] = source[property];
	return dest;
};
Object.extend(String[__proto],{
	trim: function(){return this.replace(/^\s+|\s+$/g, '');}
});
var Utilities = {
	arrayMap: function(list, fn) {
		if (list && list.length){
			var r = [];
			for (var i = 0; i < list.length; i++) {
				var x = fn(list[i], i);
				if (x !== null) {
					r.push(x) ;
				}
			}
			return r ;
		}
		return [];
	} ,
	each: function(list,fn){
		if (list && list.length)
			for (var i = 0; i < list.length; i++)
				if (fn.call(list[i],i) == '#end#') break ;
	}
};


/**
 * UDI             
 * @type 
 */
var UDI = {
	UDI_CONTROLLER: 'controller',
	UDI_ACTION: 'action',
	DEFAULT_CONTROLLER: 'application', 
	DEFAULT_ACTION: 'index' 
};

function __request_filter(pathinfo){
	var pathinfo = pathinfo || '/';
	var parts = pathinfo.substr(1).split('/');
	
	var params = {};
	if (parts[0] && parts[0].trim().length > 0){
		params[UDI.UDI_CONTROLLER] = parts[0].trim();
	}
	if (parts[1] && parts[1].trim().length > 0){
		params[UDI.UDI_ACTION] = parts[1].trim();
	}
	
    for (var i = 2; i < parts.length; i += 2) {
        if (parts[i + 1]) {
            params[parts[i]] = parts[i + 1];
        }
    }
    
    //    UDI      
    if (!params[UDI.UDI_CONTROLLER]){
    	params[UDI.UDI_CONTROLLER] = UDI.DEFAULT_CONTROLLER;
    }
    if (!params[UDI.UDI_ACTION]){
    	params[UDI.UDI_ACTION] = UDI.DEFAULT_ACTION;
    }
    
	return params;
}

var QRequest = function(req){
	this._req = req;
	
};

/**
 *        
 * @type 
 */
var Dispatcher = {
	
	/**
	 *       ,       ,        ...
	 * 
	 * @param {} request
	 * @param {} response
	 */
	dispose: function(request, response){
		
		//         action
		var pathinfo = Url.parse(request.url).pathname;
		
		var params = __request_filter(pathinfo);
		console.log(params);
		
		response.writeHead(200, {'Content-Type': 'text/plain'});
		response.end(pathinfo + '
'); } }; //SFW.Controller = function(request) Http.createServer(function (request, response) { try { Dispatcher.dispose(request, response); } catch(e){ console.log(e); } }).listen(8124);

 
実行後
 
http://localhost:8124/{controller:'application',action:'index'}が出力されます.
 
http://localhost:8124/hello/world/id/123/page/12出力します
{ controller: 'hello',   action: 'world',   id: '123',   page: '12' }
 
まあまあですね.性能はどうですか.
 
次はウェブサイトを貼って勉強しやすいです.
 
 
https://github.com/joyent/node/wiki/modules
http://cnodejs.org/blog/?p=104
http://www.cnblogs.com/QLeelulu/archive/2011/01/28/nodejs_into_and_n2mvc.html  ソースのダウンロード
http://cnodejs.org/cman/[]
http://cnodejs.org/api/
http://seajs.com/
http://www.w3school.com.cn/js/jsref_substr.asp