myweb框架简单说明

2018-06-07 15:40:10 浏览数 (1)

之前有写过一篇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,然后读取配置文件信息

代码语言:javascript复制
index{file:’index_controller’,class:’indexController’,function:’loginAct’}

从而我们根据index值得到了所有的controller和action,那么我们如何去访问这个action呢(这部分写在文档最后技术实现)? b、 第一种方式,不知道大家是否会发现一个问题。当我们有300个action时(很正常),我们需要写入300条记录到一个配置文件中,这样会导致配置文件越来越繁重。因此就出现第二种路由处理方式:

代码语言:javascript复制
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下载)。 三、技术实现细节 之前有发表过一篇文章《如何一体化MVC开发框架》里面有涉及到大部分该框架的开发技术细节。这里我只介绍如何new一个controller同时,访问对象的一个action的方式 Nodejs不像PHP有一个call_function函数可以执行访问对象中的某个方法名函数。 我们需要以下要求和需要解决的问题: 1、 因为express中的req和res是必须要贯穿整个系统的,因此我们必须把这两个参数作为基类的变量,以便继承类中可以随时的调用; 2、 如何new一个字符串的controller,也就是给你一个controller字符串名,然后你需要去new这个名为controller的对象; 3、 如何访问一个对象的function(注意:这个function名是一个字符串) 针对以上三个问题我们做如何解决:

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

代码语言:javascript复制
controllerObj.init(req, res)

2、 利用JavaScript中的eval 例如:

代码语言:javascript复制
var controllerObj = eval("new "  className)

3、 利用JavaScript中的call方法

代码语言:javascript复制
controllerObj[functionName].call();

最新代码地址:https://github.com/tnodejs/myweb-nodejs 我的菜鸟论坛:www.tnodejs.com tnodejs.com —————————————————————————————————— 你赋予人生何种意义,他就是何种意义

——————————————————————————————————

代码语言:javascript复制
if(life.wantToBe == 'fish'){your.career = 'fish';} else {your.career = 'not fish';}console.log("Anyway you must believe yourself!");

0 人点赞