purenode
v1.0.3
Published
nodejs web framework
Downloads
3
Maintainers
Readme
purenode
nodejs 学习型的web框架,很小的一个框架,初步实现了服务器,路由请求转发,控制器,模板引擎等基本框架功能,共初学者学习使用。purenode的设计思想是让开发者像开发php web一样的开发nodejs web应用。如果是熟悉Herosphp或者ThinkPHP的话,那么这个框架你使用起来应该是得心应手的。
安装
1.作为模块安装
npm install purenode
2. 作为项目安装(推荐)
git clone [email protected]:blackfox/purenode.git
#然后直接在项目根目录下做开发就好了。
框架目录结构
app.js app入口文件
config.js app配置文件
www 应用程序文件目录
|-- demo //模块目录
|-- action 控制器目录
|-- views 模板目录
public 静态资源目录(可更改)
framework 框架根目录
|-- purenode.js 框架的入口文件
|-- request.js http请求处理
|-- response.js 响应处理
|-- router.js 路由处理
|-- server.js 服务器
|-- model.js 数据模型
function.js 全局函数
template-helper.js art-templte模板引擎的扩展解析
创建应用服务
vim app.js (创建app文件)
var purenode = require("./purenode.js");
var app = purenode();
app.static("/public/");
app.listen(8888);
创建控制器
vim www/demo/action/UserAction.js (创建控制器,编写控制器逻辑代码)
"use strict"
module.exports = {
// index page
index : function(req, res) {
var params = req.getParameters();
var data = {
title : "欢迎使用purenode框架",
hello : "Welcome, this is the index page",
params : params
};
var app = req.getApp();
var db = app.getDB();
var model = F_require("model");
var userModel = model.getInstance(app, "user");
var date = new Date().format("yyyy-MM-dd hh:mm:ss");
var user = {username:"xiaoming", name:"小梦", password:"123456", addtime:date};
//添加数据
//userModel.add(user, function(e, r) {
// console.log(e,r);
//});
//删除数据
//userModel.delete(5, function(e,r) {
// console.log(e,r);
//});
//批量删除
//userModel.deletes("id > 8", function(e, r) {
// console.log(e, r);
//});
//修改数据
//user.id = 6;
//user.name = "xiaoyang333";
//userModel.update(user, function(e, r) {
// console.log(e,r);
//});
//批量更新
//user.addtime = new Date().format("yyyy-MM-dd hh:mm:ss");
//userModel.updates(user, "id > 6", function(e, r) {
// console.log(e, r);
//});
userModel.count(function(e, r) {
console.log(e,r);
});
//查询数据
db.query("select * from user", function(err, rows) {
if ( err ) {
console.log(err);
} else {
data.users = rows;
}
res.display("index", data);
});
}
}
创建模板
vim www/demo/views/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{title}}</title>
<link rel="stylesheet" media="all" href="/public/css/style.css">
</head>
<body>
<h1>{{hello}}</h1>
<h2>接收到的参数列表</h2>
{{each params}}
<h3>{{$index}} : {{$value}}</h3>
{{/each}}
<h1>{{F.getUrl("login/index")}}</h1>
<h1>{{hello | cut:8}}</h1>
<h2>用户列表</h2>
<table class="data-table">
<tr>
<th>id</th>
<th>name</th>
<th>mobile</th>
<th>email</th>
<th>create_time</th>
</tr>
{{each users as user}}
<tr>
<th>{{user.id}}</th>
<th>{{user.name}}</th>
<th>{{user.username}}</th>
<th>{{user.email}}</th>
<th>{{user.addtime | date:"yyyy-MM-dd hh:mm:ss"}}</th>
</tr>
{{/each}}
</table>
<img src="/public/images/kazigu.jpg" width="400"/>
</body>
</html>
运行
node app.js
访问
在浏览器输入 http://localhost:8888
热部署
如果你习惯了php的开发环境,你肯定对nodejs这种开发有点不适应,因为每次修改源代码都要重启服务器,跟java一样(当然,nodejs启动肯定比java快些)。你可以通过安装pm2工具来实现热部署。不过有点坑的就是,pm2只能实现模板的热部署,如果你更改了控制器文件还是需要重启服务器的。
npm install -g pm2
pm2 start app.js //启动app
pm2 stop app.js //停止app
pm2 reload app.js //重启app
启动后如图所示: