设为首页 收藏本站
查看: 668|回复: 0

[经验分享] 我也来学习nodejs 没有就自己来 色色实现迷你 MVC

[复制链接]

尚未签到

发表于 2017-2-22 09:54:19 | 显示全部楼层 |阅读模式
  我也来学习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);
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) == '#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] = 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 + '\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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-345540-1-1.html 上篇帖子: 使用Nodejs做websocket服务端与客户端实现即时聊天 下篇帖子: [] 我也来学习nodejs 没有就自己来 色色实现迷你 MVC
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表