Skip to content

导入 Effect

如果您刚开始使用,可能会被 Effect 提供的各种模块和函数所困扰。

但是,请放心,您不需要立即担心所有这些。

本页将简单介绍如何导入模块和函数,并说明安装 effect 包通常就是您开始所需的全部。

如果您还没有安装 effect 包,可以在终端中运行以下命令来安装:

Terminal window
npm install effect

通过安装此包,您可以访问 Effect 的核心功能。

有关 Deno 或 Bun 等平台的详细安装说明,请参阅安装指南,该指南提供了分步指导。

您也可以使用 create-effect-app 启动新的 Effect 应用程序,它会自动为您设置一切。

安装 effect 包后,您可以开始在项目中使用其模块和函数。 导入模块和函数很简单,遵循标准的 JavaScript/TypeScript 导入语法。

要从 effect 包导入模块或函数,只需在文件顶部使用 import 语句。以下是导入 Effect 模块的方法:

import { Effect } from "effect"

现在,您可以访问 Effect 模块,它是 Effect 库的核心。它提供了各种函数来创建、组合和操作有效果的计算。

除了使用命名导入来导入 Effect 模块(如前所示):

import { Effect } from "effect"

您也可以使用命名空间导入,如下所示:

import * as Effect from "effect/Effect"

两种导入形式都允许您访问 Effect 模块提供的功能。

但是,一个重要的考虑因素是 tree shaking,它指的是在应用程序打包过程中消除未使用代码的过程。 当打包器不支持深度作用域分析时,命名导入可能会产生 tree shaking 问题。

以下是一些支持深度作用域分析因此不会出现命名导入问题的打包器:

  • Rollup
  • Webpack 5+

在 Effect 生态系统中,库通常暴露函数而不是方法。这种设计选择对于两个关键原因很重要:tree shakeability 和可扩展性。

Tree shakeability 指的是构建系统在打包过程中消除未使用代码的能力。函数是可以 tree shake 的,而方法则不行。

在 Effect 生态系统中使用函数时,只有实际导入和使用的函数才会包含在最终的打包代码中。未使用的函数会被自动移除,从而减小包大小并提高性能。

另一方面,方法附加到对象或原型上,它们不能轻易地被 tree shake。即使您只使用方法的一个子集,与对象或原型关联的所有方法都会包含在包中,导致不必要的代码膨胀。

在 Effect 生态系统中使用函数的另一个重要优势是易于扩展。使用方法时,扩展现有 API 的功能通常需要修改对象的原型,这可能很复杂且容易出错。

相比之下,使用函数扩展功能要简单得多。您可以将自己的”扩展方法”定义为普通函数,而无需修改对象的原型。这促进了更清洁、更模块化的代码,也允许与其他库和模块更好的兼容性。

当您开始 Effect 之旅时,不需要立即深入了解 effect 包中的每个函数。相反,专注于一些常用函数,这些函数将为您进入 Effect 世界的旅程提供坚实的基础。

在接下来的指南中,我们将探索其中一些基本函数,特别是用于创建和运行 Effect 以及构建管道的函数。

但在深入了解这些之前,让我们从 Effect 的核心开始:理解 Effect 类型。这将为您理解 Effect 如何将可组合性、类型安全和错误处理引入应用程序奠定基础。

所以,让我们迈出第一步,探索 Effect 类型的基本概念。