angular 中的 Vue.prototype 相当于什么?
What is the equivalent of Vue.prototype in angular?
我从一年前开始使用 Vue.js,现在我必须开始使用 Angular,我习惯于在所有组件之间共享一个对象实例 [=24] =], 所以我不需要在每个组件中调用它。
例如。调用 this.$toast.
不知道Angular有没有类似的东西。
我正在使用 Angular 8.
我阅读了有关单例服务的指南,但它一直将实例传递给我需要它的组件的构造函数
https://angular.io/guide/singleton-services
我不是女性 Vue.prototype
但可以创建一个在所有组件之间共享的单例对象,其服务添加到提供者列表 app.module 级别
import { Injectable } from '@angular/core';
@Injectable({
providedIn:"root" //
})
export class SharedService {
constructor() { }
}
not in you don't use providedIn you can manually add the service tio
app.module
import { SharedService } from './shared.service';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, HelloComponent ],
bootstrap: [ AppComponent ],
providers: [SharedService] //
})
export class AppModule { }
该服务将被创建一次,并在您每次注入任何组件时立即注入
Vue.prototype
可以在 Vue 中修改以提供全局依赖项并更改所有应用程序组件的行为。 Angular中没有对应物,application-wide依赖的概念自AngularJS被丢弃。
Vue.prototype
修改的缺点与优点相同,它为应用程序提供了全局范围并改变了整个应用程序的行为。如果行为不受欢迎,则无法轻易将其与应用程序分离。这可以防止应用程序的某些部分被轻易提取和重用。由于 third-party 扩展可以自由修改 Vue.prototype
,修改可能会以意想不到的方式发生冲突,例如$toast
名字可以被两个不同的人使用 extensions/plugins.
另一方面,Angular 需要一些样板代码来生成更好的应用程序架构。它大量使用依赖注入,常用的单例可以通过注入toast服务来访问:
class Component {
constructor(public toast: Toast) {}
}
可以有基础组件 class 产生 DRYer 组件。通常需要使用 base class 的依赖项数量意味着 class 设计有问题。
可以放弃依赖注入并依赖 ES 模块来实现单例,这会导致更少的样板代码但更多的缺点,例如测试。
我从一年前开始使用 Vue.js,现在我必须开始使用 Angular,我习惯于在所有组件之间共享一个对象实例 [=24] =], 所以我不需要在每个组件中调用它。
例如。调用 this.$toast.
不知道Angular有没有类似的东西。
我正在使用 Angular 8.
我阅读了有关单例服务的指南,但它一直将实例传递给我需要它的组件的构造函数 https://angular.io/guide/singleton-services
我不是女性 Vue.prototype
但可以创建一个在所有组件之间共享的单例对象,其服务添加到提供者列表 app.module 级别
import { Injectable } from '@angular/core';
@Injectable({
providedIn:"root" //
})
export class SharedService {
constructor() { }
}
not in you don't use providedIn you can manually add the service tio app.module
import { SharedService } from './shared.service';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, HelloComponent ],
bootstrap: [ AppComponent ],
providers: [SharedService] //
})
export class AppModule { }
该服务将被创建一次,并在您每次注入任何组件时立即注入
Vue.prototype
可以在 Vue 中修改以提供全局依赖项并更改所有应用程序组件的行为。 Angular中没有对应物,application-wide依赖的概念自AngularJS被丢弃。
Vue.prototype
修改的缺点与优点相同,它为应用程序提供了全局范围并改变了整个应用程序的行为。如果行为不受欢迎,则无法轻易将其与应用程序分离。这可以防止应用程序的某些部分被轻易提取和重用。由于 third-party 扩展可以自由修改 Vue.prototype
,修改可能会以意想不到的方式发生冲突,例如$toast
名字可以被两个不同的人使用 extensions/plugins.
另一方面,Angular 需要一些样板代码来生成更好的应用程序架构。它大量使用依赖注入,常用的单例可以通过注入toast服务来访问:
class Component {
constructor(public toast: Toast) {}
}
可以有基础组件 class 产生 DRYer 组件。通常需要使用 base class 的依赖项数量意味着 class 设计有问题。
可以放弃依赖注入并依赖 ES 模块来实现单例,这会导致更少的样板代码但更多的缺点,例如测试。