前言
前端市场太卷啦~被迫开始在服务端的市场营业了。本来也是有计划实现一下基于nodejs的backend项目,加上之前一下BFF的示例应该会快一点。但还是没有这么高的执行力。刚回碰见哲玄老师搞得对应的一些课程(抖音:哲玄前端),和我的需求匹配上了,因此进行了知识付费,进行了对于的学习。
1. 内核搭建
根据我的理解,我认为内核的搭建应该就是加载一系列的loader,进行一个完整的项目框架初始化。Elpis-core是基于Koa进行搭建的全栈框架,前端使用vue(使用的自定义tpl模板)。项目主要包含config,extend,service,controller,middleware,routerSchema,router等主要模块,通过这些模块从各项主要功能实现了框架的能力。后面会把我的一些理解(未必准确)记录下来,期望能和大家一起友好沟通交流。不包含源码,尝试通过文字进行思路上的分析(源码在jj上应该也挺多)。
2. 内核解析
configLoader
加载/config文件夹下的配置文件
搭配config文件夹使用,用于堆放一些全局性配置。根据命名规则来判断不同的环境,然后把不同的环境变量通过Object.assign覆盖默认配置。
extend
加载/app/extend文件夹下的文件
extend是作为插件的形式可以把一些工具注册到全局的Koa实例,如哲哥提供的示例是logger日志工具,可以在服务器端进行一些日志的记录,接近了大部分后端传统框架的日志功能,方便后期进行异常的排查。
service
加载/app/service文件夹下的文件
用于处理复杂的业务逻辑,主要是供给controller使用。
controller
加载/app/controller文件夹下的文件
controller作为请求处理层,接收和处理HTTP请求,只处理流程,把业务逻辑委托给service层。controller层中可以通过设置基类BaseController统一的错误处理和响应格式,能够很好地组织和管理应用的请求处理逻辑,使代码结构更加清晰,便于维护和扩展。
middleware
加载/app/middleware.js文件, middleware.js文件再按顺序注册功能性中间件
middleware作为Koa中比较核心的区域,其遵循洋葱模型,能够按顺序执行处理流程。这个区域可以完成很多处理机制,如签名验证和参数验证,增强系统安全性。
routerSchema
加载/app/router-schema文件夹下的文件
加载完的routerSchema规则用于约束传入的参数,增加路由校验
router
加载/app/router文件夹下的文件
使用了koa-router统一管理所有路由,提供一些兜底机制(如同前端常见的路由注册表的*),可以进行项目内各种路由的配置,包括前往项目fe和be的一些路由都可以在此定义。
总结
我确实认为在学习一段里程后进行一个汇总笔记非常有助于加强对知识的理解和吸收。虽然文章短小而简洁,但在此过程我重新阅读和理解了一下所写的代码,分析其中的作用和内容,包括思考哲玄老师在我们阶段性学习过程中提出的一些文件,在此过程中都有学习到新的东西,妙不可言。