323 words
2 minutes
[Effect Config] 01. 什么是配置变量

什么是配置变量#

https://github.com/typeonce-dev/effect-getting-started-course

API 请求可以工作,但仍有很大的改进空间。

PokéApi 端点 URL 仍然在 fetchRequest 中硬编码:

const fetchRequest = Effect.tryPromise({
  ///              👇 硬编码的端点 URL
  try: () => fetch("https://pokeapi.co/api/v2/pokemon/garchomp/"),
  catch: () => new FetchError(),
});
WARNING

硬编码问题

这可能会导致问题:

  • 难以找到源 API URL
  • 代码重复的风险
  • 测试时无法更改此值

这些问题有可能使测试变得困难,代码变得更难理解和维护。不好。让我们用 Effect 来解决所有这些问题!

什么是配置值#

TIP

配置值的定义

配置值通常是从进程(process.env)中提取的常量或在构建时硬编码的常量。

将所有这些值组织在一个地方是很有用的,这样我们可以一目了然地检查和更新它们。

例如,对于环境变量,你通常会创建一个 .env 文件。然后你可以为不同的环境注入不同的配置(.env.development.env.testing)。

这是我在这个网站中使用的 .env 文件示例:

NOTE

环境变量示例

.env.example

// 内容目录路径
CONTENT_DIR=
// ConvertKit API 配置
CONVERTKIT_API_KEY=
CONVERTKIT_API_URL=
CONVERTKIT_FORM_ID=
// Supabase 数据库配置
SUPABASE_KEY=
SUPABASE_URL=
IMPORTANT

实际应用

在我们的示例中,PokéApi 基础 URL “https://pokeapi.co” 就是这样一个常量。