主页 > 知识库 > 网络编程 > 其他 >

myweb框架简单说明

来源:网络 作者:huangdh3 发表于:2012-07-02 08:35  点击:
之前有写过一篇nodejs入门包括服务器的各种配置,npm安装。这篇文章也得到了很多人的肯定,在这里我也非常的感谢大家。今天给大家介绍的是nodejs的myweb框架的基本认识,myweb框架的开发心得,以及遇到的一些问题。 一、什么是myweb框架? 他是一个基于nodejs
之前有写过一篇nodejs入门包括服务器的各种配置,npm安装。这篇文章也得到了很多人的肯定,在这里我也非常的感谢大家。今天给大家介绍的是nodejs的myweb框架的基本认识,myweb框架的开发心得,以及遇到的一些问题。

一、什么是myweb框架?

他是一个基于nodejs的web应用框架,其中应用到了express框架和jade解析模板。整体上说该框架只是在express搭建了一层mvc实现方式。那么myweb框架给开发者带来了什么便利呢?

二、myweb框架带来的便利

1、 MVC开发模式

在 PHP开发中我们经常会应用MVC设计模式开发出一套框架,而NodeJs在现发展初期,还没有比较成熟的MVC开发框架,大部分都是通过自我根据 express框架进行搭建。本框架也属于个人搭建的MVC框架。该框架很适合PHP开发者,因为本人也是一个PHP和JavaScript开发者,因此 主要是借鉴PHP的MVC模式来搭建该框架。

2、 路由处理

路由处理是框架的一个基本的也是关键的部分,路由处理的方式直接影响到url的显示方式。
本框架路由经历了两个过程:

a、 直接通过key值来判断用户请求的资源,例如:

http://127.0.0.1:3000/index,这个请求我们利用express获取key值index,然后读取配置文件信息
index{file:’index_controller’,class:’indexController’,function:’loginAct’}

从而我们根据index值得到了所有的controller和action,那么我们如何去访问这个action呢(这部分写在文档最后技术实现)?

b、 第一种方式,不知道大家是否会发现一个问题。当我们有300个action时(很正常),我们需要写入300条记录到一个配置文件中,这样会导致配置文件越来越繁重。因此就出现第二种路由处理方式:

http://127.0.0.1:3000/index?c=login 
根据index获取当前的controller,根据c的参数获取当前需要访问的action,这样
我们的一个controller只对应一个配置信息。从而减少读取配置文件的时间。

3、 数据库链接

本框架只提供了一种链接mysql的方式,希望在后期能够提供更多的数据库链接。链接mysql数据库的方式,这里就不需要细讲,大家可以通过github上查找node mysql学习资源。

本框架封装了一些基本的数据库操作从而减少开发者开发时间,只需要通过add、update、delete、query、select简单粗暴的去执行。

4、 日志处理

本框架实现了一个自我的日志记录处理功能,主要是便于系统运营。

其中的日志设定:错误、警告、流水记录,同时可以设定日志错误级别,以便系统出错时即时的定位。

5、 邮件发送功能

这个功能没有做进一步的封装,只是利用了他人的库进行配置,之后会做进一步封装。

6、 您只需要一步就可以实现本系统运行,下载该框架代码,执行node index.js就可以运行本框架(如果使用到session登录请下载redis-server.exe,去github下载)。

三、技术实现细节

之前有发表过一篇文章《如何一体化一个NodeJs的MVC开发框架》里面有涉及到大部分该框架的开发技术细节。这里我只介绍如何new一个controller同时,访问对象的一个action的方式

Nodejs不像PHP有一个call_function函数可以执行访问对象中的某个方法名函数。

我们需要以下要求和需要解决的问题:

1、 因为express中的req和res是必须要贯穿整个系统的,因此我们必须把这两个参数作为基类的变量,以便继承类中可以随时的调用;

2、 如何new一个字符串的controller,也就是给你一个controller字符串名,然后你需要去new这个名为controller的对象;

3、 如何访问一个对象的function(注意:这个function名是一个字符串)

针对以上三个问题我们做如何解决:

1、 我们可以定义一个init构造函数

controllerObj.init(req, res)
2、 利用JavaScript中的eval

例如:

var controllerObj = eval("new " +className)
3、 利用JavaScript中的call方法

controllerObj[functionName].call();
最新代码地址:https://github.com/tnodejs/myweb-nodejs

    有帮助
    (2)
    100%
    没帮助
    (0)
    0%