基于koa的elpis-core内核实现

50 阅读2分钟

背景

学习<大前端全栈实践>,实现的框架基础内核。

架构设计

b7a049c2164a48ea8b8fbf0336aadd10~tplv-73owjymdk6-jj-mark-v1_0_0_0_0_5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3NzQ4MTk5NTYwNjEyNA==_q75.webp

bff主要包括针对路由、接口的处理然后还包括config(配置文件)(基于不同环境可以做不同配置)以及extend(功能扩展)。router接受ssr页面路由处理,以及api路由处理。router-schema针对业务接口的校验规则,contoller接口层数据返回,service服务层与数据库进行交互。 还有很重要的middleware中间件是一个洋葱圈模型,可以一层一层的走过每一个中间件,对数据一次次校验处理,如接口参数校验,错误处理,签名校验等等。

而elpis-core内核则是主要实现针对他们的一个自动收集和挂载到node服务的app上。

实现

首先是node服务app生成,然后通过进行各类挂载。各类挂载通过elpis-core自动挂载如middleware只需要掉middlewareLoader(app),middlewareLoader通过文件收集,文件处理可以通过app.middlewares.文件名Module.文件名Middleware去访问中间件。其他内容页类似于middlewareLoader一样的文件处理,只是挂载的东西不太一样。

elpis框架

extend实现了错误日志记录,主要通过挂载logger到app,在错误处理中间件通过调用app.logger以及其他地方调用以记录日志。

ssr页面展示,通过路由首先进入router然后调用Controller下的renderPage(调用ctx.render)去渲染指定目录下的parmas页面。

中间件在app下的middleware进行所有中间件的注册,如静态资源中间件,模版渲染引擎中间件,接口body解析中间件,自定义中间件。如异常捕获、签名校验、api参数验证、项目处理等中间件注册。

Controller、service等包含一些基础类继承,包括通用接口响应处理,提供一些响应方法如success、fail。service主要是数据库交互,用到一些app上的属性,可以统一在基础类处理。

结言

无论是koa还是express那种框架,都可以实现elpis,主要在于各种设计思想,如文件收集,类继承等等。