名字想好了,就叫
YSYS云上元素Node.js开发框架(MVC)
等我把代码整理到git上,希望大家多多吐槽…
我喜欢煎蛋粗暴
目录结构
- 目录/文件 说明
-
- index.js 框架入口文件(可重命名)
- ├── Action 控制器文件目录
- ├── Conf 框架配置文件目录
- ├── Lib 框架核心基类库目录
-
└─┌── index.js 框架HTTP服务
-
├── router.js 框架路由
-
└── common.js 公用方法模型
- ├── Tpl 模板目录
- └── node_modules 框架扩展目录(可自行添加新的模块)
一周就开始写框架了,膜拜啊
没有真相?
node.js能写后台管理系统吗
YSYS
YSYS云上元素Node.js开发框架(MVC)
介绍
YSYS是一个免费开源的,快速、简单的面向对象的轻量级Node.js开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
目录结构
- 目录/文件 说明
-
- index.js 框架入口文件(可重命名)
- ├── Action 控制器文件目录
- ├── Conf 框架配置文件目录
- ├── Lib 框架核心基类库目录
-
└─┌── Lib/index.js 框架HTTP服务
-
├── Lib/router.js 框架路由
-
└── Lib/common.js 公用方法模型
- ├── Tpl 模板目录
- └── node_modules 框架扩展目录(可自行添加新的模块)
URL模式
框架应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过URL的参数来访问和执行。 这样一来,传统方式的文件入口访问会变成由URL的参数来统一解析和调度。
index.js 和 function index() 为默认入口
例在 Action 目录下有 abc.js 那它的访问地址为 http://localhost/abc/ 或 http://localhost/abc/index 因为这个地址指向的默认方法为index方法 如你abc.js里有exports映射 gogogo 方法 那要访问这个方法地址应该是 http://localhost/abc/gogogo 以此类推
例: function index(response, request) { //index方法: // 网站入口 http://localhost/ // 同等于 http://localhost/index/index // 或 http://localhost/index/
console.log("已成功进入'index' 控制器的 'index' 方法 ");
console.log("框架Conf/index.js配置文件:");
console.log(CONFIG); //输出配置信息到控制台
response.writeHead(200, {"Content-Type": "text/html"});
response.write('入口入口入口入口');
response.end();
} //映射这些方法到模块并重新命名 exports.index = index;
入口文件index.js
你可以重命名成你喜欢的名字如app.js // 定义云上元素YSYS框架目录 var YSYS_PATH =’./ysys/’; // 加载启动YSYS框架 require(YSYS_PATH+‘Lib’).run(8888); //开启8888端口的HTTP服务不写则为80端口
使用方法
在控制台输入“node index”即可运行,然后访问 http://x.x.x:8888 要后台运行并且保存日用这命令 nohup node index 1>log.txt &
模板
//添加所需要的公用方法模块
var Common = require('../Lib/common');
Common.Viewtpl('index/index.html',{要输入的对象},response); // 模版放置在Tpl目录下
//或用这种写的返回信息
var str = Common.Viewtpl('index/index.html',users); //不传response参数过去
response.writeHead(200, {"Content-Type": "text/html"});
response.end(str);
具体模板变量等逻辑组合请参考 node_modules\ejs\Readme.md 帮助
数据库
//添加所需要的公用方法模块 var Common = require(’…/Lib/common’); Common.QuickDB($tabname,$data_arrstr,$where_str,$DESCGROUP,Callback);
$tabname
表名(必选)$data_arrstr
字段对像或字符(可选)$where_str
条件语句(可选)$DESCGROUP
排序或分组或LIMIT等Callback
回调方法
// 有$data_arrstr(数组) 和 $where_str 时是更新数据 UPDATE 改 // 有$data_arrstr(数组) 没有 $where_str 时是插入数据 INSERT 增 //没有$data_arrstr(字符) 有或没 $where_str 时是查询数据 SELECT 查或 count 统计
例:
//映射test1方法
exports.test1 =function(response, request) {
console.log("\n\n\n\n已成功进入’database’ 控制器的 ‘test1 方法 ");
console.log(“查询数据库”);
ret = Common.QuickDB(‘game_cfg’,’*’,"title
=‘切水果’",‘ORDER BY gid
DESC’,function(data){
console.log(data);//输出结果到控制台
response.writeHead(200, {“Content-Type”: “text/plain”});
response.end(‘因为没做别的处理,去控制台console看结果吧’);
});
}
配置文件
文件在框架目录下的Conf/index.js文件里,不用多说什么你看得懂的,呵。
global.CONFIG = { //服务器相关配置可自行添加 ’SITE_NAME’:‘YSYS云上元素Node.js服务器框架’, ‘COOKIE_DOMIN’ : ‘127.0.0.1’, //cookie域 ’SITE_UPLOADS’ : ‘uploads/’, //上传文件地址 //MySql数据库配置 MYSQL : { host: ‘localhost’, port: ‘3306’, user: ‘root’, password: ‘root’, database: ‘test’, //库名 dateStrings: false } };
就写这么多吧,写文档太累
YSYS_nojs v0.1 @date 2014-05-13 Copyright 2014, FeikeWorld - http://www.fk68.net @author feikeq 提笔记
其它帮助
通过 Apache 代理访问 Node:
针对服务器上已经有了 apache 和 Node 同时想把域名的 80 端口给 Node 使用做到两者兼顾 。 原理就是使用 Apache 做代理服务器,也就是使 Node 和 Apache 在一个服务器上同时提供服务,并且都只使用域名而不用加端口号:
那么就来看,如何实现:
1.在 Apache 的配置conf/httpd.conf文件中,开启 mod_proxy 和 mod_proxy_http 这两个模块: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so 也就是去掉这两行前面的 # 号即可。(如果这些模块已经内置了就不用手动加载)
2.配置虚拟主机,conf/vhosts.conf文件里增加下面的代码: <VirtualHost *:80> ServerName node.js ServerAlias www.node.js ProxyRequests off
<Proxy *> Order deny,allow Allow from all </Proxy>
<Location /> ProxyPass http://localhost:8888/ ProxyPassReverse http://localhost:8888/ </Location> </VirtualHost>
注意: 此处 node.js 和 www.node.js 为绑定的要访问 Node 服务的域名。 第一行的<VirtualHost :80>中的号如不管用就填服务器的IP地址。(我用的是IP地址) http://localhost:8888/ 为服务器上访问 Node 的网址和端口号,这里以 8888 为例。
2.运行你的 Node 服务,然后重启 Apache ,访问你的域名这时候你就可以看到用 Node 提供服务的网站了。
(备注:如果使用的是 Nignx 的话,也可以用同样的原理来实现,但是我只用了 Apache ,就没有尝试着去做 Nignx。当然了,其他服务器也一样。)
好有php的味道…我怕jser不喜欢
有眼光,哈哈我就是仿Thinkphp的框架写的…
@feikeq 没怎么写过php,就是看过。所以很眼熟…
用了一些同步的方法,一个请求会阻塞整个进程,确实如楼上所说,可能不合jser的口味
楼主效率很高哇,phper会很熟悉!
嗯,就是针对PHPer的,上手快呀,哈哈。不过JSer应该也会喜欢上这种模式的。。。
有一点疑惑,为啥要用apache做代理服务器呢?
我是搞php的,我感觉你这框架没有把node的优势发挥出来。 不过支持你…
嗯,确实。。
仿ASP.NET MVC的https://code.csdn.net/magicdawn/razor 就个雏形…
可以写
这也叫框架。。无语