MVC - nokitjs/nokit GitHub Wiki

MVC

Nokit MVC 是一种设计简约、符合 MVC 模式 Web 应用开发模式。

一般目录结构

根目录
│ web.json
│ app.js
├─controllers
│    home.js
├─models
├─public
│  └─style
│       common.css
└─views
     date.html
     home.html
     master.html

views 目录存放的是视图,视图和 NSP 的页面相似,支持 include 和 master,语法也完全相同, 不同的是在 mvc 的视图中 this 指向的是模型,视图具有单一的责职 ,就是呈现模型中的数据。 controllers 是控制器目录,单个文件为一个控制器,用来响应接受来自用户的请求,并传递给模型, 然后,完成模型和视图的装配。 models 为模型目录,nokit 对模型没有统一的要求和控制,应用的业务逻辑应在模型中完成。

MVC 的控制器示例

//定义控制器类型
var HomeController = module.exports = function() {};

/*
默认 action ,
通常用户直接请求某一 url 会被路由到指定 controller 的默认 action
*/
HomeController.prototype.index = function() {
    var self = this;
    
    /*
    self.context 可以访问当前请求上下文对象
    self.context.routeData["name"] 可以获取路由数据
    self.context.request.queryData['name'] 可以获取 queryString 对应数据
    self.context.request.formData['name'] 可以获取 post 数据
    self.context.params("name") 可以获取客户端传过来的 queryString 或 formData
    self.context.request.cookie 获取来自客户的 cookie
    self.context.respone.cookie 向客户端发送 cookie
    se轩.context.session 访问 session 数据
    */
    
    //通过 self.render 方法呈现指定的视图,并进行模型绑定
    self.render("home", {
        "name": "Nokit MVC"
    });
};

MVC 的 web.json 配置

{
    /*
    配置 handler ,将指定的请求交由 MVC Handler 处理,支持正则表达式,
    如示例,将应用的所有请求都交由 MVC 处理,
    在找不到匹配的路由配置时,会转由 Static Handler 处理
    */
    "handlers": {
        "^/": "$./handlers/mvc"
    },
    "mvc": {
        /*
        配置 MVC 相关代码文件的存放目录,指定 controller 和 view 的目录位置,
        model 不用配置。
        */
        "paths": {
            "controller": "./controllers",
            "view": "./views"
        },
        /*
        每一个路由至少需要指定 pattern(URL匹配模式) 和 target(目标contrller)
        还可以通过配置 action 项指定对应的 action (controller方法)。
        pattern 格式示例 "/user/{userId}" 其中 userId 是占位符变量,
        可以在 controller 中通过 context.routeData['userId'] 获取。
        */
        "routes": {
            "/home": "./home"
            "/": "./home"
        }
    }
}