简单的MVC架构
该项目目前处于开发阶段
.
特性
- 基于express框架
- 实现mvc分层
- 使用annotation注释模式的路由
- 使用annotation注入service(中间件)
- 使用swig模板作为默认模板引擎
- 支持SCSS处动态理样式表
使用npm安装
npm install mvcify
使用 yarn 安装
yarn add mvcify
快速开始
应用目录结构如下:
project
|
|- apps # 应用目录
| |- front-end # 网站前端
| | |- controllers # 控制器
| | | |- index.js # - index控制器
| | | |- user.js # - user控制器
| | | `- ...
| | |- services # 中间件目录
| | |- assets # 静态资源目录
| | |- views # 视图目录
| | |- config.js # 配置
| | `- ...
| `- ...
|- assets
|- node_modules
|- services
|- config.js
|- app.js
|- package.json
`- ...
应用入口文件
四行代码轻松启动你的web应用。
const mvcify = require('mvcify');
const mvc = mvcify.create(__dirname);
mvc.setup({'front-end': '/'});
mvc.app.listen(8080);
应用与控制器上的annotation
程序定义了一些列的指令,作用于控制器的annotation内,轻松实现路由注册,这样
方便开发、路由与方法绑定及查询,具体指令有:
- get('/path')
- post('/path')
- put('/path')
- patch('/path')
- delete('/path')
- head('/path')
- options('/path')
- route(["method1","method2"], path="/path")
另外,annotation还支持使用下列指令注册中间件:
- before("services目录下的中间件文件名")
- after("services目录下的中间件文件名")
可以多次调用,表示注册多个service
值得注意的是:前一个指令依赖后一个指令是否调用next方法
HTTP方法指令优先级高于route指令,也就是说如果存在HTTP方法指令,则route中对应的的方法无效
class IndexController {
constructor(app) {
this.app = app;
}
index (req, res, next) {
console.log(__filename);
res.render('index', {
title: 'Mvcify',
message: 'Hello world!'
});
}
about(req, res) {
res.send('sdnjcjkd');
}
}
module.exports = IndexController;