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