根据Typescript documentation (section "Guidance for structuring modules"):
如果您只导出单个类或函数,请使用export 默认
正如“靠近顶层出口”减少了你的摩擦 模块的消费者,引入默认导出也是如此。如果一个 模块的主要目的是容纳一个特定的导出,然后是你 应考虑将其导出为默认导出。这两者都有 导入和实际使用导入更容易。
示例:
export default class SomeType {
constructor() { ... }
}
在Angular documentation for components(例如)中,可以看到:
export class HeroListComponent implements OnInit {
heroes: Hero[];
selectedHero: Hero;
constructor(private service: HeroService) { }
ngOnInit() {
this.heroes = this.service.getHeroes();
}
selectHero(hero: Hero) { this.selectedHero = hero; }
}
通常,组件或模块的主要目的是容纳一个特定的导出。那么,Angular是否有理由不使用或建议使用export default
?
答案 0 :(得分:15)
实际原因是这不适用于AOT编译器,但它可以与JIT编译器一起使用。因此,如果您正在使用AOT(或想要继续使用它),请不要导出默认值。 另请参阅here:
默认导出
AoT不允许默认导出 - 必须全部命名。
❌DONT:
ruby:2.3.3-alpine
✅DO:
import { Component } from '@angular/core'; @Component({ template: ` <div class="example"> Example component! </div> ` }) export default class ExampleComponent { }