ROCKER-MVC
一、快速上手
初始化项目目录
-
安装 Node.js(v8.9.3+)
https://nodejs.org/en/
-
安装 vbuilder 命令行
[sudo] npm i @vdian/vbuilder-cli --registry http://npm.idcvdian.com
-
进入项目目录(名称任意)
mkdir rocker-mvc-project
cd rocker-mvc-project
-
执行命令 v
,根据提示依次完成:项目初始化、启动本地开发环境
项目初始化完成后,也可以执行 npm run dev
启动本地开发环境
启动开发环境
npm run dev
二、API
所有 API 挂载在引入的 MVC 对象下,而且可以串行调用
MVC.route({
'/home': import('./home')
}).start()
start
接收参数:
在添加路由以及中间件后启动服务
MVC.pipe(middleWare).route({ }).start()
route
接收参数:
- RouterMap => { [index: string]: Function } | { [index: string]: Promise };
- RouterRegType => { all: RouterMap, render?: { start: string, end: string } }
为应用添加路由处理方法,参数示例如下:
// 1. RouterMap
MVC.route({
'/home': import('./home'),
'/about': import('./about')
})
// 2. RouterRegType
// 为所有的路由添加公有的 header 和 footer 脚本
MVC.route({
all: {
'/home': import('./home'),
'/about': import('./about')
},
render: {
start: './header.ejs',
end: './footer.ejs'
}
})
pipe
接收参数:
Rocker MVC 可以任意使用Koa的中间件,示例如下:
编写 logRequest 中间件
function log( ctx ) {
console.log( ctx.method, ctx.header.host + ctx.url )
}
export default function () {
return async function ( ctx, next ) {
log(ctx);
await next()
}
}
通过 pipe 来引入中间件
import logRequest from './logRequest'
MVC.pipe(logRequest()).route({ }).start()
三、TypeScript 介绍
全局安装 typescript 编译器
npm i -g typescript
编写 ts 配置文件 tsconfig.json
{
"compilerOptions": {
"module": "commonjs",
"target": "es6",
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
"noImplicitAny": false,
"allowJs": true,
"inlineSourceMap": true
},
"exclude": [
"node_modules",
"coverage"
]
}
执行编译操作
tsc .
四、TODO
- route 现在只接收 import 进来的模块
- 完善单元测试
- 添加测试覆盖率
- push 前挂载集成测试钩子