[置顶] 我也来学习nodejs 没有就自己来 色色实现迷你 MVC

来源:互联网 发布:思迅软件价格 编辑:程序博客网 时间:2024/05/16 01:15

我也来学习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){// 取拼装控制器以及actionvar pathinfo = Url.parse(request.url).pathname;var params = __request_filter(pathinfo);console.log(params);response.writeHead(200, {'Content-Type': 'text/plain'});response.end(pathinfo + '\n');}};//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