对 koajs 的学习已经持续一段时间,对于"用"这一层面基本掌握。学习以后,老是但愿能实际的应用到项目之中。贸然给现有项目大换血是不现实的,姑且先拟一个小项目付诸实践。node
在尝试使用 koajs 时,我依旧采用严格的 MVC 模式。M 作为数据模型层,主要负责业务数据的管理和操做,来源于数据库操做或者api调用。V 作为视图层,主要负责站点前台的展现。C 作为业务控制层,主要负责对站点业务流程的处理。基于这样的思路,首先创建起项目的基本目录结构:git
+ configs(项目配置文件目录) ++ build(项目编译相关配置) * + controllers(项目业务控制代码目录) + kits(经常使用工具包) + middlewares(项目中间件) + models(业务数据对象,能够是操做数据库,能够是来源于调用api) + public(静态资源目录) ++ src(项目静态资源源文件) ++ publish(项目静态资源发布文件,发布自动生成) + routers(路由配置文件目录) + test(项目相关测试文件) + views(项目视图目录) ++ dev(开发视图文件) ++ pro(发布视图文件,发布自动生成) + app.js(项目入口)
注:项目目录是让写程序和看程序的人能一眼了解项目结构,我且主观的认为这样的结构是能让看到的人一目了然github
对于以中间件为一级公民的koajs,在使用中我主要使用如下几个关键技术:redis
路由: koa-routers数据库
视图: koa-viewsapi
会话: koa-generic-session + koa-redis缓存
模版引擎: nunjunkssession
API请求: requestapp
日志: bunyankoa
缓存: ioredis
注:条条大路通罗马,所谓的技术选择全然是我的的爱好
剔除业务相关的功能,我将此项目的架子抽了出来,命名为koa-skeleton,意为骨架,但愿供你们参考一二,项目地址: koa-skeleton