【化蛹为蝶五】Nextjs Config 配置初始化: Yaml 解析

上篇 我们唠了唠 Nextjs 怎么接入自定义 Koa,也唠了下自定义的 Koa Server 都做了什么

今天就顺势补个上篇提到的坑:Nextjs Config 配置初始化

以下正文

Config 配置的介绍和必要性

通常我会简单叙述下为什么要做这件事情

起码让之前没做过这件事情的伙伴了解和理解这样做的原由

也会从实际场景出发多叨叨几句,诸君见谅

配置文件

配置文件在实际工程项目里一般存在两种:

  • 不会暴露的隐藏配置文件,记录如数据库账号密码、JWT密钥、非对称加密私钥等敏感类配置
  • 可以暴露的放于明处的配置文件,记录如日志存储目录位置、服务端接口地址等项目通用配置

配置文件通常会从 .yaml.env.json 后缀的文件中读取,当然这方面没什么限制,看场景和喜好
比如如果说我们不使用配置文件,把所有配置放在项目文件里直接使用也不是不可以
但如果是分散在项目文件里,以及碰到敏感类配置,就不好维护且存在安全隐患了
以及我们使用配置文件的话,能够灵活的选择在不同的部署环境里加载不同环境的配置文件
如:开发/测试环境加载 Test 配置文件、预发/生产环境加载 Production 配置文件

Yaml 配置文件解析

上篇 我在 Nextjs 项目里自定义了 Koa 服务器,里面有一行初始化配置的代码
carbon (17).png

这里专门有一个 config.js 文件来处理配置相关的事情

我们来看一下这个文件里主要做了哪些事情

server/config/index.js
carbon (16).png

整理如下:(代码注释)

  • 获取项目根目录绝对路径,其它路径统一管理
    • 根据 __dirname 文件所属文件夹目录地址解析获取
    • 整个项目里所有和文件路径相关的,都基于这个 BASE_PATH 拼接
    • 好处就是清晰,可维护性和可读性极大提升,能一眼知道相关路径相对于根目录的具体位置
    • 比如这里就基于 BASE_PATH 拼接了 LOG_PATH(日志文件存储路径)、CONFIG_PATH(配置文件路径)
  • 解析同目录下配置文件:app.yaml
    • app.yaml 主要存储一些项目通用配置
    • 使用 js-yaml 包的 load 方法解析
    • 因为配置文件路径是基于 BASE_PATH 拼接的,可以一眼找到文件位置
  • initConfig
    • 也就是在 server.js 触发的初始化方法
    • 触发了初始化 Session
    • 把读取到的通用配置挂载在了传入的 app 实例上,便于在需要时使用
  • 运行环境获取
    • 根据 NODE_ENV 获取当前项目运行环境
    • 根据值判断获取是否是开发环境
  • session 初始化
    • 这个坑后面和 cookie 一起填
  • 最终导出所有初始化的路径和配置,供整个项目使用
    • 这样整个项目就统一使用这些配置,需要更改某个配置时就很方便了只需要修改这个文件就可以了
后续预告:
  • 一些小问题:目录结构(已填)引入 Koa(已填)Yaml 解析(本篇)、日志记录与存储(本篇)、@根路径 Import、引入 Less、引入 Reset CSS
  • Nextjs 系列序言及项目初始化(已填)
  • Nextjs 引入 TypeScript、Ant Design(已填)
  • Nextjs 引入 PrismaMysql2 存取数据(长文)
  • Nextjs 引入 Apollo-Server/Apollo-Client 使用 Graphql(长文)
  • Nextjs + Prisma + Graphql Demo 实践(长文)
  • Nextjs 如何使用 SessionCookie
  • Nextjs 基于 GraphqlPrismaJWT 登录鉴权(长文)
  • Nextjs 鉴权后自动跳转登录页
  • Graphql 请求如何带上公共 Headers
  • Koa Auth 接口预处理之接口鉴权中间件
  • 基于 RBAC 模型使用 Graphql + Prisma 实现权限管理(长文)

vx👦:mmm7nnn

公号🐓:醒途

邮箱📧:suanzao@wacai.com(欢迎找我内推)

如果喜欢这个系列请给我一个点赞👍或者一个关注➕,诸君的支持是我创作的最大的动力

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

泡泡码客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值