Angular環(huán)境變量的使用(environment)

environment是什么?

我們?cè)谟胊ngular-cli創(chuàng)建angular項(xiàng)目時(shí)凌那,會(huì)默認(rèn)生成一個(gè)environment文件


image.png

里面會(huì)有兩個(gè)文件

environment.ts

// This file can be replaced during build by using the `fileReplacements` array.
// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.
// The list of file replacements can be found in `angular.json`.
//在生成過(guò)程中胧沫,可以使用“fileReplacements”數(shù)組替換此文件昌简。
//“ng build--prod”將“environment.ts”替換為“environment.prod.ts”。
//文件替換列表可以在“angular.json”中找到绒怨。
export const environment = {
  production: false,
  baseUrl:'http://dev.test.com'
};
/*
 * For easier debugging in development mode, you can import the following file
 * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.
 *
 * This import should be commented out in production mode because it will have a negative impact
 * on performance if an error is thrown.
 */
// import 'zone.js/dist/zone-error';  // Included with Angular CLI.
/*

*為了便于在開發(fā)模式下調(diào)試纯赎,可以導(dǎo)入以下文件

*忽略與區(qū)域相關(guān)的錯(cuò)誤堆棧幀,如“zone.run”窖逗、“zoneDelegate.invokeTask”址否。

*這個(gè)導(dǎo)入應(yīng)該在生產(chǎn)模式中被注釋掉餐蔬,因?yàn)樗鼤?huì)產(chǎn)生負(fù)面影響

*如果拋出錯(cuò)誤碎紊,將影響性能。

*/

//導(dǎo)入'zone.js/dist/zone error'樊诺;//包括在Angular CLI中仗考。

environment.prod.ts

export const environment = {
  production: true,
  baseUrl: 'http://prod.test.com'
};

這兩個(gè)文件都有一個(gè)production參數(shù),為是否是生產(chǎn)環(huán)境词爬,想到這里就一目了然秃嗜,我們打包后,生效的肯定是environment.prod.ts文件配置,值為true,實(shí)際我們?cè)诒镜卣{(diào)試時(shí)锅锨,生效的是environment.ts文件叽赊,打包后會(huì)去自動(dòng)替換成environment.prod.ts,其中的baseUrl參數(shù)是我們自定義添加的url地址必搞,針對(duì)不同環(huán)境會(huì)自動(dòng)調(diào)用對(duì)應(yīng)的地址必指,我們本地環(huán)境中調(diào)試可以調(diào)用一下這個(gè)environmentts

import {environment} from '../../environments/environment'
@Injectable()
export class InterceptorInterceptor implements HttpInterceptor {
  baseUrl = environment.baseUrl;
  constructor(private $commom: CommonService) {
    console.log(this.baseUrl);
   }

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(
      tap((event: any) => {
        if (event instanceof HttpResponseBase) this.handleData(event);
        return of(event)
      }),
      catchError((err: HttpErrorResponse) => this.handleData(err))
    )
  }

  private handleData(res: HttpResponseBase): Observable<any> {
    console.log(res);
    if (res instanceof HttpResponse) {
      let body = (res as any).body;
      if (body.code != 200) {
        this.$commom.error(body.message);
      }
      if (body.code === 1003) {
          /**todo  =>  jump()*/
      }
    }
    if (res instanceof HttpErrorResponse) {
      this.$commom.error(res.error);
    }
    return of(res)
  }
}

啟動(dòng)服務(wù)后,我們請(qǐng)求下接口恕洲,發(fā)現(xiàn)默認(rèn)的地址是http://dev.test.com

image.png

我們需要打包塔橡,然后再看看這個(gè)baseUrl打印的是什么,打包的時(shí)候需要輸入 ng build --prod -c production

image.png

我是在express中開啟了一個(gè)node服務(wù)霜第,把剛才打的靜態(tài)包丟在靜態(tài)目錄下就可以葛家,訪問(wèn)這個(gè)包的資源
訪問(wèn)后我們看到的baseUrl的地址變成了http://prod.test.com
雖然前后我們并沒有去改變environment.ts的路徑,我們?cè)L問(wèn)的一直是environment文件的baseUrl泌类,但為什么打包后會(huì)變成environment.prod.ts文件的baseUrl呢癞谒,說(shuō)明我們的打包命令 ng build --prod -c production會(huì)給我們自動(dòng)切換,會(huì)自動(dòng)替換environment的內(nèi)容刃榨,通過(guò)查找angular.json的配置我們不難發(fā)現(xiàn)如下的參數(shù)配置
image.png

也就是說(shuō)扯俱,當(dāng)我們啟動(dòng) -c production ,這條配置就生效了喇澡,很好理解的是replace替換的字段迅栅,說(shuō)明者里才是核心配置,那么問(wèn)題來(lái)了晴玖,我有多個(gè)環(huán)境的情況下該如何去配置環(huán)境變量嗯读存?

多環(huán)境配置baseUrl

多環(huán)境的情況下,我們有多個(gè)url呕屎,讓其自動(dòng)切換让簿,此時(shí)假如我還有個(gè)測(cè)試環(huán)境,那就需要再建一個(gè)environment.test.ts文件

image.png

重點(diǎn)來(lái)了,還是在我們的angular.json文件中配置
我們需要復(fù)制一份production秀睛,然后把production改成test,再把fileReplacements中的替換地址換一下尔当,換成是environment.test.ts,再把production改成是test
image.png

此時(shí)假如我們要發(fā)測(cè)試環(huán)境蹂安,在終端中輸入 ng build --prod -c=test,也可以直接配置package.json文件椭迎, 啟動(dòng)npm run build
image.png

假如我們需要配置生產(chǎn)環(huán)境production,在終端輸入 ng build --prod -c=production ,同樣可以配置pabckage.json文件
我們打包測(cè)試環(huán)境看下baseUrl打印出來(lái)是什么樣的,打包后的文件丟到本地express開啟服務(wù)的靜態(tài)目錄里訪問(wèn)
image.png
,發(fā)現(xiàn)此時(shí)的地址是http://test.test.com田盈,說(shuō)明配置成功畜号,掌握以上配置方法,自此多環(huán)境的應(yīng)用切換就變得很簡(jiǎn)單了

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末允瞧,一起剝皮案震驚了整個(gè)濱河市简软,隨后出現(xiàn)的幾起案子蛮拔,更是在濱河造成了極大的恐慌,老刑警劉巖痹升,帶你破解...
    沈念sama閱讀 216,544評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件建炫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡疼蛾,警方通過(guò)查閱死者的電腦和手機(jī)踱卵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)据过,“玉大人惋砂,你說(shuō)我怎么就攤上這事∩” “怎么了西饵?”我有些...
    開封第一講書人閱讀 162,764評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鳞芙。 經(jīng)常有香客問(wèn)我眷柔,道長(zhǎng),這世上最難降的妖魔是什么原朝? 我笑而不...
    開封第一講書人閱讀 58,193評(píng)論 1 292
  • 正文 為了忘掉前任驯嘱,我火速辦了婚禮,結(jié)果婚禮上喳坠,老公的妹妹穿的比我還像新娘鞠评。我一直安慰自己,他們只是感情好壕鹉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,216評(píng)論 6 388
  • 文/花漫 我一把揭開白布剃幌。 她就那樣靜靜地躺著,像睡著了一般晾浴。 火紅的嫁衣襯著肌膚如雪负乡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,182評(píng)論 1 299
  • 那天脊凰,我揣著相機(jī)與錄音抖棘,去河邊找鬼。 笑死狸涌,一個(gè)胖子當(dāng)著我的面吹牛切省,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播杈抢,決...
    沈念sama閱讀 40,063評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼数尿,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了惶楼?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎歼捐,沒想到半個(gè)月后敬拓,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酒奶,經(jīng)...
    沈念sama閱讀 45,329評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,543評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了脆霎。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,722評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡细燎,死狀恐怖适滓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情钠怯,我是刑警寧澤佳魔,帶...
    沈念sama閱讀 35,425評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站晦炊,受9級(jí)特大地震影響鞠鲜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜断国,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,019評(píng)論 3 326
  • 文/蒙蒙 一贤姆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧稳衬,春花似錦霞捡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至输涕,卻和暖如春音婶,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背莱坎。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工衣式, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檐什。 一個(gè)月前我還...
    沈念sama閱讀 47,729評(píng)論 2 368
  • 正文 我出身青樓碴卧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親乃正。 傳聞我的和親對(duì)象是個(gè)殘疾皇子住册,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,614評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容