purenode

1.0.3 • Public • Published

purenode

nodejs 学习型的web框架,很小的一个框架,初步实现了服务器,路由请求转发,控制器,模板引擎等基本框架功能,共初学者学习使用。purenode的设计思想是让开发者像开发php web一样的开发nodejs web应用。如果是熟悉Herosphp或者ThinkPHP的话,那么这个框架你使用起来应该是得心应手的。

安装

1.作为模块安装

npm install purenode

2. 作为项目安装(推荐)

git clone git@git.oschina.net: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

启动后如图所示:

Package Sidebar

Install

npm i purenode

Weekly Downloads

8

Version

1.0.3

License

BSD

Last publish

Collaborators

  • yangjian102621