Angular 8 中图书馆的 Tree Shaking
Tree shaking for libraries in Angular 8
我正计划为 Angular 8+ 开发一个独立的 Angular 服务,并且我一直在阅读如何使其树可摇动树。
@Injectable({
providedIn: 'root',
useFactory: () => new Service('dependency'),
})
export class Service {
constructor(private dep: string) {
}
}
因为这告诉 Angular 如何构建服务。
这就是我们需要做的吗?我见过其他 NPM 模块,例如 this one use ModuleWithProviders
是这样的:
export class Module {
static forRoot(): ModuleWithProviders {
return {
ngModule: Module,
providers: [
StripeScriptTag
],
}
}
我认为这不是必需的,因为 providers
数组仍然没有描述如何实例化服务。
您只需要
providedIn: 'root'
root 中提供的服务是 tree shakeable 的。如果它在根中提供,那么您将在整个应用程序中获得相同的单例实例。如果您想要跨模块的服务的新实例而不是全局单例实例,则只需将它添加到提供程序数组。
我正计划为 Angular 8+ 开发一个独立的 Angular 服务,并且我一直在阅读如何使其树可摇动树。
@Injectable({
providedIn: 'root',
useFactory: () => new Service('dependency'),
})
export class Service {
constructor(private dep: string) {
}
}
因为这告诉 Angular 如何构建服务。
这就是我们需要做的吗?我见过其他 NPM 模块,例如 this one use ModuleWithProviders
是这样的:
export class Module {
static forRoot(): ModuleWithProviders {
return {
ngModule: Module,
providers: [
StripeScriptTag
],
}
}
我认为这不是必需的,因为 providers
数组仍然没有描述如何实例化服务。
您只需要
providedIn: 'root'
root 中提供的服务是 tree shakeable 的。如果它在根中提供,那么您将在整个应用程序中获得相同的单例实例。如果您想要跨模块的服务的新实例而不是全局单例实例,则只需将它添加到提供程序数组。