[置顶] 我也来学习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 + '\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相关推荐
- [置顶][热门]高中英语学习调查(转)
[置顶][热门]高中英语学习调查(转) 2012年01月18日 背景:社会生活的信息化和经济的全球化,使英语的重要性日益突出.英语作为当今世界上在各个领域使用最广泛的语言,不仅是最重要的信息载体之一, ...
- [置顶]人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)...
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- 【QT学习】如何隐藏标题栏、任务栏图标及子窗口置顶?(附常用窗口标志)
文章目录 前言 一.标题栏隐藏 二.子窗口置顶 三.任务栏图标隐藏 四.单击任务栏图标显示(隐藏)窗口 附:QT常用窗口标志 总结 前言 本篇,将介绍如何隐藏窗口标题栏.任务栏图标以及子窗口置顶 ...
- ag-grid 学习笔记三:ag-grid设置(定义列、选择行、复选框、设置行高列宽、置顶合计行、底部合计行、行组、客户端排序)
目录 一 定义列 二 选择行 三 设置复选框 四 设置行高列宽 五 置顶合计行 六 底部合计行 七 行组 八 客户端排序 一 定义列 表格的列有如下常用属性. 名称 说明 headerName 显示的 ...
- 从一个置顶CPT广告学习计算广告设计要点
Outlook > Knowledge > IQ 达芬奇有很高的 IQ,在他的时代构想了很多发明,却不能够实现自己的发明 亨利·福特出生在合适的年代,在福特的时代,他拥有足够知识,得以制造 ...
- 阅读目录(置顶)(长期科技领域知识)
第一期:适用于数据项目的7种强大的开源工具 第二期:四种正确的微服务部署方式 第三期:开源和赚钱何去何从 第四期:Web前端和Java开发哪个薪资更高,发展前景更好? 第五期:干货总结:中级前端工程师 ...
- 设置窗口置顶_这三个应用,每一个都能让你置顶。
| 当你有多个窗口同时打开,置顶其中某个或某些,能够方便你对比.学习.抄写--但不是所有软件都有这个功能,所以你需要今天的小干货.| ----------- 你的高效生活视频书. 将窗口置顶,可以方便 ...
- html字体置顶,2020年应使用的3种CSS字体属性
原标题:2020年应使用的3种CSS字体属性 来源 | dev.to/nickbulljs 译者 | 鬼哥 如果您使用具有不同字体粗细的非系统字体,则字体文件的大小将很大.浏览器将需要更多时间来下载它 ...
- android listview标题置顶,Android仿QQ左滑删除置顶ListView操作
最近闲来无事,于是研究了一下qq的左滑删除效果,尝试着实现了一下,先上效果图: 大致思路原理: - 通过设置margin实现菜单的显示与隐藏 - 监听onTouchEvent,处理滑动事件 上代码 i ...
- android imageview 锯齿,[置顶] android 自定义圆角ImageView以及锯齿的处理
看到很多人开发过程中要使用圆角图片时,解决方法有: 1.重新绘制一张图片 2.通过布局来配置 3.通过重写View来实现 其中1,2在这里就不讲了,重点讲讲方法三的实现. 实现一:通过截取画布一个圆形 ...
最新文章
- http学习笔记(三):报文
- buu Unencode
- python转弯轨迹_使点沿着曲线轨迹移动
- Ehab and Prefix MEXs CodeForces - 1364C(思维)
- 文本相似度、文本匹配、文本聚类
- 其他数据类型存储空间大小(信息学奥赛一本通-T1018)
- local.properties 文件读取
- android 输入模糊匹配_Android 模糊搜索
- 腾讯音乐12月初赴美IPO,250亿美元被低估还是高估?
- 【推荐】实现跟随鼠标移动的浮动提示框、气泡框、Tip效果
- vh和vw是什么单位?
- 武汉科技大学计算机学院生产实习,武汉科技大学实习工作管理办法
- 我的小程序之个人所得税计算器
- 移动硬盘装ubuntu
- 【WB32库开发】第13章(上)DMA直接存储器访问——存储器到存储器
- ThinkPHP框架执行流程源码解析
- TOM在线公布二零零六年全年净利润2866万美元
- 7种方式企业内部资料共享,你pick谁?
- 垂直搜索开发:垂直搜索引擎开发全过程[原创]
- 设计模式之设计模式入门
热门文章
- maya导入abc动画_完美动力小课堂:abc格式应用--Realflow和Maya互导
- 中国重点流域已实现休禁渔制度全覆盖
- 3dmax外挂神器更新了|3dmax外挂在过去几年里,食住玩都更新记录了3dmax外挂的什么功能?
- stm32f103测脉冲数用于带霍尔编码器的电机测速
- ArcGIS中的GeoDatabase(地理数据库)功能,你可能不够了解
- 2018全球50大最佳发明名单
- 学累了可以看漫威电影啊
- 抖音源码为什么会成为短视频源码中的翘楚
- Vue3+elementplus搭建通用管理系统实例七:通用表格实现上
- 【渝粤题库】陕西师范大学152112 网络信息检索与利用