Angular Material / Angular Flex Layout中public-api.ts的用途是什么?

时间:2018-05-03 11:55:01

标签: angular-material angular-flex-layout

我从angular-material和angular-flex-layout中了解到,当他们导出组件时,他们首先在public-api.ts中导出相关的子组件,然后从public-api.ts中导出所有内容。 index.ts(例如从'./public-api'导出*)。以下是其徽章组件的示例:

// public-api.ts export * from './badge-module'; export * from './badge';

// index.ts export * from './public-api';

我的问题是为什么不把所有出口的东西都放到index.ts但是边界再创建一个public-api.ts?

2 个答案:

答案 0 :(得分:2)

保持代码清洁

public_api.ts 旨在枚举和公开供外部使用的特定功能。 index.ts 旨在作为默认导出机制来弃用全路径导入。

Using public_api.ts in libraries instead of piling everything in index.ts

答案 1 :(得分:1)

乍一看,我认为有以下几个原因:

  1. 消除歧义:由于缺少“内部”修饰符并且内部模块增加了复杂性,因此需要多个index.ts桶文件来提供不同的内部/外部API表面。
  2. Angular CLI用户界面工具:要提供省力的工具默认设置,需要公共API文件标准。 NG编译器不仅仅将所有TypeScript都构建为JavaScript,还可以完成更多工作。值得注意的是,这也取决于所选的入口点。由于此处的其他原因,对于默认值,index.ts并不是一个好的选择。参见Creating Libraries
  3. Angular内部代码质量:public-api是与Angular消费者的合同,必须受到严格控制,并伴随文档更改,新测试,兼容性评估和公告进行更改。为此,项目设置会自动拒绝导致对public-api进行更改的代码更改。参见Golden Files
  4. 意识/清晰度/意图:我认为这通常是其他评论所暗示的。历史上人们一直在将index.ts用于内部和外部的所有内容。当然,项目可以仅将index.ts用于公共API签名,但这并不明显。