我也来学习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 + '\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

  • NodeJS中文文档.pdf (542.1 KB)
  • 下载次数: 27
  • nodejs-alldoc.rar (83.6 KB)
  • 下载次数: 14
  • visionmedia-express-2.3.10-1-g9536341.zip (1.9 MB)
  • 描述: 不错的web框架
  • 下载次数: 20
  • learnNode.zip (43.3 KB)
  • 描述: 另一个简单的MVC雏形,可以学习
  • 下载次数: 23

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

  1. [置顶][热门]高中英语学习调查(转)

    [置顶][热门]高中英语学习调查(转) 2012年01月18日 背景:社会生活的信息化和经济的全球化,使英语的重要性日益突出.英语作为当今世界上在各个领域使用最广泛的语言,不仅是最重要的信息载体之一, ...

  2. [置顶]人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)...

    这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...

  3. 【QT学习】如何隐藏标题栏、任务栏图标及子窗口置顶?(附常用窗口标志)

    文章目录 前言 一.标题栏隐藏 二.子窗口置顶 三.任务栏图标隐藏 四.单击任务栏图标显示(隐藏)窗口 附:QT常用窗口标志 总结 前言    本篇,将介绍如何隐藏窗口标题栏.任务栏图标以及子窗口置顶 ...

  4. ag-grid 学习笔记三:ag-grid设置(定义列、选择行、复选框、设置行高列宽、置顶合计行、底部合计行、行组、客户端排序)

    目录 一 定义列 二 选择行 三 设置复选框 四 设置行高列宽 五 置顶合计行 六 底部合计行 七 行组 八 客户端排序 一 定义列 表格的列有如下常用属性. 名称 说明 headerName 显示的 ...

  5. 从一个置顶CPT广告学习计算广告设计要点

    Outlook > Knowledge > IQ 达芬奇有很高的 IQ,在他的时代构想了很多发明,却不能够实现自己的发明 亨利·福特出生在合适的年代,在福特的时代,他拥有足够知识,得以制造 ...

  6. 阅读目录(置顶)(长期科技领域知识)

    第一期:适用于数据项目的7种强大的开源工具 第二期:四种正确的微服务部署方式 第三期:开源和赚钱何去何从 第四期:Web前端和Java开发哪个薪资更高,发展前景更好? 第五期:干货总结:中级前端工程师 ...

  7. 设置窗口置顶_这三个应用,每一个都能让你置顶。

    | 当你有多个窗口同时打开,置顶其中某个或某些,能够方便你对比.学习.抄写--但不是所有软件都有这个功能,所以你需要今天的小干货.| ----------- 你的高效生活视频书. 将窗口置顶,可以方便 ...

  8. html字体置顶,2020年应使用的3种CSS字体属性

    原标题:2020年应使用的3种CSS字体属性 来源 | dev.to/nickbulljs 译者 | 鬼哥 如果您使用具有不同字体粗细的非系统字体,则字体文件的大小将很大.浏览器将需要更多时间来下载它 ...

  9. android listview标题置顶,Android仿QQ左滑删除置顶ListView操作

    最近闲来无事,于是研究了一下qq的左滑删除效果,尝试着实现了一下,先上效果图: 大致思路原理: - 通过设置margin实现菜单的显示与隐藏 - 监听onTouchEvent,处理滑动事件 上代码 i ...

  10. android imageview 锯齿,[置顶] android 自定义圆角ImageView以及锯齿的处理

    看到很多人开发过程中要使用圆角图片时,解决方法有: 1.重新绘制一张图片 2.通过布局来配置 3.通过重写View来实现 其中1,2在这里就不讲了,重点讲讲方法三的实现. 实现一:通过截取画布一个圆形 ...

最新文章

  1. http学习笔记(三):报文
  2. buu Unencode
  3. python转弯轨迹_使点沿着曲线轨迹移动
  4. Ehab and Prefix MEXs CodeForces - 1364C(思维)
  5. 文本相似度、文本匹配、文本聚类
  6. 其他数据类型存储空间大小(信息学奥赛一本通-T1018)
  7. local.properties 文件读取
  8. android 输入模糊匹配_Android 模糊搜索
  9. 腾讯音乐12月初赴美IPO,250亿美元被低估还是高估?
  10. 【推荐】实现跟随鼠标移动的浮动提示框、气泡框、Tip效果
  11. vh和vw是什么单位?
  12. 武汉科技大学计算机学院生产实习,武汉科技大学实习工作管理办法
  13. 我的小程序之个人所得税计算器
  14. 移动硬盘装ubuntu
  15. 【WB32库开发】第13章(上)DMA直接存储器访问——存储器到存储器
  16. ThinkPHP框架执行流程源码解析
  17. TOM在线公布二零零六年全年净利润2866万美元
  18. 7种方式企业内部资料共享,你pick谁?
  19. 垂直搜索开发:垂直搜索引擎开发全过程[原创]
  20. 设计模式之设计模式入门

热门文章

  1. maya导入abc动画_完美动力小课堂:abc格式应用--Realflow和Maya互导
  2. 中国重点流域已实现休禁渔制度全覆盖
  3. 3dmax外挂神器更新了|3dmax外挂在过去几年里,食住玩都更新记录了3dmax外挂的什么功能?
  4. stm32f103测脉冲数用于带霍尔编码器的电机测速
  5. ArcGIS中的GeoDatabase(地理数据库)功能,你可能不够了解
  6. 2018全球50大最佳发明名单
  7. 学累了可以看漫威电影啊
  8. 抖音源码为什么会成为短视频源码中的翘楚
  9. Vue3+elementplus搭建通用管理系统实例七:通用表格实现上
  10. 【渝粤题库】陕西师范大学152112 网络信息检索与利用