国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

angular 服務的單例模式(依賴注入模式下)詳解

2024-05-06 15:28:33
字體:
來源:轉載
供稿:網友

angular官方文檔單例服務的說明

單例模式就不要說了,懂點設計模式的都懂得,真有不明白的自行百度。

(解釋下angular的命名,angular就是angular2+,angular1叫angularjs,至于angular2,3,4,5,6只是angular的版本,通稱angular,希望小伙伴不要叫錯了)

單例模式如何在angular的服務中使用呢,angular的官方文檔中有這么一段話:

單例服務

服務在每個注入器的范圍內是單例的。 在任何一個注入器中,最多只會有同一個服務的一個實例。

這里只有一個根注入器,而 UserService 就是在該注入器中注冊的。 所以,在整個應用中只能有一個 UserService 實例,每個要求注入 UserService 的類都會得到這個服務實例。

不過,Angular DI 是一個 多級注入系統,這意味著各級注入器都可以創建它們自己的服務實例。 Angular 總會創建多級注入器。

籠統,并不知道依賴注入服務單例模式怎么用,要想弄明白很簡單,簡單的寫個例子實驗一下就可以了,下面我會給大家說一下我的實驗總結,幫助小伙伴節約一些這種乏味的探索時間。

實驗樣例代碼

服務代碼

import { Injectable } from '@angular/core';@Injectable( //{providedIn: 'root'})export class SingletonServiveTestService { private _name = "primaryName"; constructor() { } setName (name){  this._name = name; } getName(){  return this._name; }}

小伙伴可能會說了,這TM怎么會是單例模式。小伙伴不要激動,我也是這么想的,怎么TM怎么會是單例。不過在angular的依賴注入中,有幾種寫法確實會使這種代碼以單例模式的方式運行。

解釋下{providedIn: 'root'},一開始認為只要傳入這個對象,讓服務以root的方式提供給子module,子組件,然后這個服務就是單例的,后臺發現,這個對象和單例沒有半毛錢關系,它只是app.module中引入服務的另一種寫法,除了這個用處,沒有別的用處,所以下文中我們就不說添加和不添加{providedIn: 'root'}的情況了

注入代碼

注入分為Module.providers和Component.providers兩種;實驗的module是實現懶加載的。

上面代碼的測試結果(module都是懶加載的)

這三個結果已經代表各種情況了,如果小伙伴還想知道其他一些情況的下的結果,小伙伴可以自己動手寫個例子,或者給我留言

在app.module.providers或者app.component.providers中依賴面進去這個服務,在子component和子module中的component中的構造函數中國呢注入進去這個服務,這個服務的表現特征是 單例 的。 在懶加載的子module.providers 中依賴進去這個服務,在這個module下面的component中的構造函數中注入進去這個服務,這個服務表現特征是 單例 的。 在component.providers中依賴進去這個服務,然后在component的構造函數中依賴注入進去這個服務,這個服務表現特征是 非單例 的.
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 平凉市| 鹤峰县| 邳州市| 江津市| 阳高县| 尼木县| 玉龙| 虹口区| 乐昌市| 贵德县| 石狮市| 遂昌县| 彰化市| 大同县| 岢岚县| 中宁县| 宜川县| 邵阳市| 永济市| 达尔| 辽源市| 长海县| 汨罗市| 开阳县| 刚察县| 岳普湖县| 察雅县| 怀仁县| 北安市| 杭州市| 宁国市| 开鲁县| 临朐县| 汤原县| 西安市| 江源县| 长泰县| 蕲春县| 石渠县| 新晃| 酒泉市|