CNode

如何一体化一个NodeJs的MVC开发框架

Hhuangdh3发布于14 年前最后回复11 年前18 回复25420 浏览0 收藏

本文章在本人个人NodeJs论坛已经发布:www.tnodejs.com 希望得到NAE的邀请码! 本小型框架,可提供给各个开发者进行参考,里面涉及到一些NodeJs如何去实现继承 同时如何处理路由请求的问题,还有Mysql数据库链接,可能对于PHP开发者会非常的得心应手

 //========================全局变量定义===============================

global.BASE_DIR = __dirname; global.APP = global.BASE_DIR + "/application/"; global.CON = global.APP + "/controller/"; global.CORE = global.APP + "/core/"; global.MODEL = global.APP + "/model/"; global.CONF = global.BASE_DIR + "/conf/"; global.log = global.BASE_DIR + "/log/"; global.PUBLIC = global.BASE_DIR + "/public/"; global.VIEW = global.BASE_DIR + "/view/"; /**

  • modules引入 */ global.express = require('express'); global.sio = require('socket.io'); global.fs=require('fs'); global.path = require('path'); global.url = require('url'); global.parseCookie = require('connect').utils.parseCookie; global.MemoryStore = require('./node_modules/connect/lib/middleware/session/memory'); global.Session = require('./node_modules/connect/lib/middleware/session/session'); global.sys = require('util');

代码2-1:index.js


框架代码下载地址github:https://github.com/tnodejs/myweb-nodejs 希望大家是一起交流学习,这里还有很多不足,希望大家一同改进~

查看回复

回复 (18)

C
crissi#1·13 年前

数据库没有用连接池?

G
Guojunzhou-git#2·11 年前
引用 huangdh3嗯!说滴很对!呵呵 这种路由设计方法是不合理的!后面我还做了改动!不过没有去维护了!

@huangdh3 现在才看到3年前你写的nodejs mvc框架,学习中,你现在还在搞这方面的研究么?希望能够经常交流。

H
huangdh3#3·11 年前
引用 Guojunzhou-git@huangdh3 现在才看到3年前你写的nodejs mvc框架,学习中,你现在还在搞这方面的研究么?希望能够经常交流。

@Guojunzhou-git 好久没搞了,还有几轮优化的在里面。感觉应用起来还有点麻烦。

简单接触了下nodejs,发现除了“异步”这个不习惯外,还有“配路由”这个也不习惯,PHP的开发者来说,WEB开发基本都是用“路由规则”来路由,而不用去配的...

我前些天也试图去实现一个基于nodejs的web开发“框架”,虽然它极不完善,甚至是dao都没实现,但却代表了一个多年WEB开发经历的人对WEB开发框架的一个期望

由于我对nodejs的理解很皮毛,所以仅仅是我学习nodejs(或者说仅仅是想了解)过程的各种简单的拼凑

有兴趣的可以看看 https://github.com/tim1020/ec

  1. 区别于大多数框架的人工配置路由表,ec使用规则路由(三种规则可配 /c/m ,/c.m, /?c=c&m=m),即 访问/c/m时,自动路由到controler下的c.js并执行m方法
  2. 请求处理req对象,框架已初始化req对象,在controller中可直接使用该对象获取各种请求内容,包括 post,get,cookie,同时支持mulitpart的解释(即支持post上传文件的解释,直接用req.files获取上传文件内容)
  3. 响应处理res对象,包括setCookie,showErr以及模板输出render,在controller中当完成业务逻辑后,调用该对象来设置响应内容,可以自定义模板引擎,前置条件是使用该引擎使用renderFile(tplfile,data)来渲染转出(没有该方法可自行二次封装)
  4. 会话管理session,实现了set,get,getAll,unset方法,支持自定义session handler,只需要实现约定的方法即可
  5. 日志处理log,支持分级,支持设置控制台输出或文件输出,可单独关闭框架debuglog,内置accesslog输出
  6. 静态文件服务(支持304)
H
huangdh3#5·14 年前
引用 fengmk2这结构不错,routing是在controller里面配置的?

routing的话是直接写在配置文件的!通过读取配置文件信息,来routing相应controller里面的function

K
kamaliang#6·14 年前

每次请求时都要对router.json进行readFileSync?这个没必要吧?

H
huangdh3#7·14 年前
引用 kamaliang每次请求时都要对router.json进行readFileSync?这个没必要吧?

那可以入去做实现呢~我觉得这样也不怎么好!的确是每次请求都需要读取配置信息!是不是可以应该直接存储为global作为静态变量!

K
kfll#9·14 年前

在global下注册那么多名字合适么.... 还是注册个命名空间吧.. global.xxxxApp = {}

L
leolovenodejs#10·14 年前

强啊,都能抽象框架了!

H
huangdh3#11·14 年前
引用 leolovenodejs强啊,都能抽象框架了!

现在进一步更新~互相学习!

H
huangdh3#12·14 年前
引用 a272121742目前我就使用吴哥写的rrestjs框架,再融合我做的aop和orm,感觉够用了

我觉的框架都可以去搭建!我也只是学习学习呵呵!也希望大家互相交流!

H
huangdh3#13·13 年前
引用 ckken感觉这样路由表会很大

嗯!说滴很对!呵呵~这种路由设计方法是不合理的!后面我还做了改动!不过没有去维护了!

F
fengmk2#14·14 年前

这结构不错,routing是在controller里面配置的?

X
xiaoz#15·14 年前

有点 magento 的味道,很好很强大

A
a272121742#17·14 年前

目前我就使用吴哥写的rrestjs框架,再融合我做的aop和orm,感觉够用了~

C
ckken#18·13 年前

感觉这样路由表会很大

参与回复
登录后即可参与回复。登录