主页 > IT业界  > 

elpis全栈课程学习之elpis-core学习总结

elpis全栈课程学习之elpis-core学习总结
elpis全栈课程学习之elpis-core学习总结 核心原理

elpis-core是全栈框架elpis的服务端内核,主要应用于服务端接口的开发以及页面的SSR渲染,elpis-core基于约定优于配置的原理,通过一系列的loader来加载对应的文件,大大节约用户的开发成本。elpis-core使用户的注意力使用始终集中于业务开发,而无需关注其他。

elpis-core目录结构 ├─ 📁elpis-core │  ├─ 📁loader │  │  ├─ 📄config.js │  │  ├─ 📄controller.js │  │  ├─ 📄extend.js │  │  ├─ 📄middleware.js │  │  ├─ 📄router-schema.js │  │  ├─ 📄router.js │  │  └─ 📄service.js | │  ├─ 📁utils │  ├─ 📄env.js │  ├─ 📄index.js ├─ 📄index.js elpis-core应用的目录机构 ├─ 📁app │  ├─ 📁controller // 存放业务处理文件,进行业务逻辑的处理 │  ├─ 📁extend // 存放拓展文件,比如:日志文件... │  ├─ 📁middleware // 中间件逻辑处理,挂载到koa实例进行一系列的处理 │  ├─ 📁public │  │  ├─ 📁output │  │  └─ 📁static │  ├─ 📁router // 路由文件 │  ├─ 📁router-schema // 对 router 规则校验的文件 │  ├─ 📁service // 服务层的文件,主要用于服务端的交互 │  └─ 📄middleware.js // 全局的中间件 loader具体实现原理

通过glob这个库读取相对应的目录,加载每个目录下的文件并挂载到Koa实例上

controller-loader模块的代码实现 // 读取app/controller下所有文件 const fileList = readFile(`.${sep}controller`, `.${sep}**${sep}**.js`, app) const controllers = {} fileList.forEach(file => { // 提取文件名称 let name = path.resolve(file) // 截取路径 name = subPath(name, 'controller') // 将custom-module/custom-controller -> customModule/customController name = toCamelCase(name) //挂载controller到app实例 let tempController = controllers const names = name.split(sep) // [customModule, customController] for (let i = 0, len = names.length; i < len; i++) { if (i === len - 1) { const ControllerModule = require(path.resolve(file))(app) // 是文件 tempController[names[i]] = new ControllerModule() } else { // 文件夹 if (!tempController[names[i]]) { tempController[names[i]] = {} } tempController = tempController[names[i]] } } }) app.controller = controllers

注:其余模块的loader与其类似,这里不过多赘述

总结

以上内容来源于抖音哲玄前端博主的全栈实践课程,结合我的理解进行的思路整理,如有误,欢迎各位大佬指正。

标签:

elpis全栈课程学习之elpis-core学习总结由讯客互联IT业界栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“elpis全栈课程学习之elpis-core学习总结