0Pricing
Angular Academy · 课时

公共 API 与入口点

设计简洁的库接口

公共 API 与入口点 是 CoddyKit 上的免费 Angular Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Angular Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Angular Academy 课程共包含 4 节课。

公共 API 表面

库只应暴露使用者需要使用的内容。公共 API 是经过筛选的一组导出内容;其他所有内容都应保持内部可见。在 Angular 库中,这个 API 表面由 public-api.ts 定义。

作为汇总文件的 public-api.ts

public-api.ts 会重新导出您希望使用者访问的符号。如果某项内容未在此处导出,那么即使它存在于源代码中,实际上也属于私有内容。

// projects/ui-kit/src/public-api.ts
export * from './lib/button/button.component';
export * from './lib/theme.service';
// internal helpers are intentionally NOT exported

为什么隐藏内部实现

将辅助函数保持为私有内容,意味着您可以自由重构它们,而不会破坏使用者。小而明确的公共 API 比导出所有内容更易于编写文档、管理版本和维护。

导出类型和令牌

公共 API 不仅包含组件,还包括使用者正确使用这些组件所需的接口、类型和注入令牌。

export { ButtonComponent } from './lib/button/button.component';
export type { ButtonVariant } from './lib/button/button.types';
export { THEME_CONFIG } from './lib/theme.tokens';

次级入口点

大型库会拆分为次级入口点,这样使用者只需导入所需内容(树摇效果更好)。例如,将 ui-kit/testing 与 ui-kit 分开。

import { ButtonComponent } from 'ui-kit';
import { provideUiKitTesting } from 'ui-kit/testing';

创建次级入口点

次级入口点是一个拥有自己的 ng-package.json 和 public-api.ts 的子文件夹。ng-packagr 会自动发现它,并将其构建为独立的导入路径。

projects/ui-kit/
  testing/
    ng-package.json   # marks a secondary entry point
    src/public-api.ts

主入口点映射

库的 ng-package.json 会将其 entryFile 指向 public-api.ts,从而告诉构建过程哪个文件是主要的公共 API 表面。

// projects/ui-kit/ng-package.json
{
  "lib": { "entryFile": "src/public-api.ts" }
}

面向稳定性进行设计

请将公共 API 视为契约:删除或重命名导出内容属于破坏性变更。您可以自由添加新的导出内容,但在删除之前应先将其弃用,以便使用者有时间迁移。

避免深层导入

由于只有 public-api.ts 是契约,使用者不应深层导入类似 ui-kit/lib/button/internal 的内部路径。通过汇总文件导出可以保持单一且稳定的导入表面。

重新导出第三方类型

如果您的 API 方法返回另一个包中的类型,请重新导出该类型,这样使用者无需仅为引用这个类型而添加单独的依赖。这能让公共 API 表面自给自足。

记录 API 表面

为导出的符号添加 JSDoc 注释。由于使用者只能看到公共 API 项,为它们编写文档即可为用户提供 IntelliSense 和清晰的使用指导。

快速检查

什么定义了使用者可以导入的内容?

回顾

公共 API 在 public-api.ts 中经过筛选,该文件会重新导出组件、类型和令牌;其他内容都保持私有并可自由重构。对于大型库,请使用次级入口点,将 ng-package.json 指向入口文件,避免深层导入,并将 API 表面视为稳定且有文档支持的契约。

常见问题解答

「公共 API 与入口点」课时是免费的吗?

是的 — 「公共 API 与入口点」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Angular Academy 课程的其余内容,请升级到 CoddyKit PRO。 Angular Academy 课程共包含 4 节课。

「公共 API 与入口点」这节课中我会学到什么?

设计简洁的库接口 你通过在浏览器中直接运行的动手代码来练习 Angular Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Angular Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Angular Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「公共 API 与入口点」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Angular Academy 课中编写并运行代码吗?

能。每节 Angular Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 ng generate 创建库
  2. 公共 API 与入口点
  3. 使用 ng-packagr 构建
  4. 发布到 npm
← 返回 Angular Academy