名字想好了,就叫
等我把代码整理到git上,希望大家多多吐槽…
我喜欢煎蛋粗暴
└─┌── index.js 框架HTTP服务
├── router.js 框架路由
└── common.js 公用方法模型
一周就开始写框架了,膜拜啊
没有真相?
node.js能写后台管理系统吗
YSYS云上元素Node.js开发框架(MVC)
YSYS是一个免费开源的,快速、简单的面向对象的轻量级Node.js开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
└─┌── Lib/index.js 框架HTTP服务
├── Lib/router.js 框架路由
└── Lib/common.js 公用方法模型
框架应用采用单一入口文件来执行,因此网站的所有的模块和操作都通过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;
你可以重命名成你喜欢的名字如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
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看结果吧’); }); }
title
gid
文件在框架目录下的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 同时想把域名的 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。当然了,其他服务器也一样。)
代码仓库地址 https://github.com/feikeq/ysys
好有php的味道…我怕jser不喜欢
有眼光,哈哈我就是仿Thinkphp的框架写的…
@feikeq 没怎么写过php,就是看过。所以很眼熟…
用了一些同步的方法,一个请求会阻塞整个进程,确实如楼上所说,可能不合jser的口味
楼主效率很高哇,phper会很熟悉!
嗯,就是针对PHPer的,上手快呀,哈哈。不过JSer应该也会喜欢上这种模式的。。。
有一点疑惑,为啥要用apache做代理服务器呢?
我是搞php的,我感觉你这框架没有把node的优势发挥出来。 不过支持你…
嗯,确实。。
仿ASP.NET MVC的https://code.csdn.net/magicdawn/razor 就个雏形…
可以写
这也叫框架。。无语
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
我喜欢煎蛋粗暴
目录结构
一周就开始写框架了,膜拜啊
没有真相?
node.js能写后台管理系统吗
YSYS
YSYS云上元素Node.js开发框架(MVC)
介绍
YSYS是一个免费开源的,快速、简单的面向对象的轻量级Node.js开发框架,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。
目录结构
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/
} //映射这些方法到模块并重新命名 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.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 BYgidDESC’,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。当然了,其他服务器也一样。)
代码仓库地址 https://github.com/feikeq/ysys
好有php的味道…我怕jser不喜欢
有眼光,哈哈我就是仿Thinkphp的框架写的…
@feikeq 没怎么写过php,就是看过。所以很眼熟…
用了一些同步的方法,一个请求会阻塞整个进程,确实如楼上所说,可能不合jser的口味
楼主效率很高哇,phper会很熟悉!
嗯,就是针对PHPer的,上手快呀,哈哈。不过JSer应该也会喜欢上这种模式的。。。
有一点疑惑,为啥要用apache做代理服务器呢?
我是搞php的,我感觉你这框架没有把node的优势发挥出来。 不过支持你…
嗯,确实。。
仿ASP.NET MVC的https://code.csdn.net/magicdawn/razor 就个雏形…
可以写
这也叫框架。。无语