公共 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 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 ng generate 创建库
- 公共 API 与入口点
- 使用 ng-packagr 构建
- 发布到 npm