上篇 我们唠了唠 Nextjs
怎么接入自定义 Koa
,也唠了下自定义的 Koa
Server
都做了什么
今天就顺势补个上篇提到的坑:Nextjs Config 配置初始化
以下正文
Config 配置的介绍和必要性
通常我会简单叙述下为什么要做这件事情
起码让之前没做过这件事情的伙伴了解和理解这样做的原由
也会从实际场景出发多叨叨几句,诸君见谅
配置文件
配置文件在实际工程项目里一般存在两种:
- 不会暴露的隐藏配置文件,记录如数据库账号密码、JWT密钥、非对称加密私钥等敏感类配置
- 可以暴露的放于明处的配置文件,记录如日志存储目录位置、服务端接口地址等项目通用配置
配置文件通常会从 .yaml
、.env
、.json
后缀的文件中读取,当然这方面没什么限制,看场景和喜好
比如如果说我们不使用配置文件,把所有配置放在项目文件里直接使用也不是不可以
但如果是分散在项目文件里,以及碰到敏感类配置,就不好维护且存在安全隐患了
以及我们使用配置文件的话,能够灵活的选择在不同的部署环境里加载不同环境的配置文件
如:开发/测试环境加载 Test
配置文件、预发/生产环境加载 Production
配置文件
Yaml 配置文件解析
上篇 我在 Nextjs
项目里自定义了 Koa
服务器,里面有一行初始化配置的代码
这里专门有一个 config.js
文件来处理配置相关的事情
我们来看一下这个文件里主要做了哪些事情
server/config/index.js
整理如下:(代码注释)
- 获取项目根目录绝对路径,其它路径统一管理
- 根据
__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
引入Prisma
和Mysql2
存取数据(长文)Nextjs
引入Apollo-Server/Apollo-Client
使用Graphql
(长文)Nextjs
+Prisma
+Graphql
Demo
实践(长文)Nextjs
如何使用Session
和Cookie
Nextjs
基于Graphql
、Prisma
的JWT
登录鉴权(长文)Nextjs
鉴权后自动跳转登录页Graphql
请求如何带上公共Headers
Koa
Auth
接口预处理之接口鉴权中间件- 基于
RBAC
模型使用Graphql
+Prisma
实现权限管理(长文)
vx👦:mmm7nnn
公号🐓:醒途
邮箱📧:suanzao@wacai.com(欢迎找我内推)
如果喜欢这个系列请给我一个点赞👍或者一个关注➕,诸君的支持是我创作的最大的动力