最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue項(xiàng)目中的.env文件加載方式

 更新時(shí)間:2024年10月10日 09:01:18   作者:全村最肉的人  
在Vue項(xiàng)目中,通過.env文件配置環(huán)境變量,支持不同環(huán)境下加載不同配置,Vite通過import.meta.env向應(yīng)用暴露環(huán)境變量,支持基本URL、開發(fā)環(huán)境和生產(chǎn)環(huán)境識別等,.env文件可設(shè)置環(huán)境優(yōu)先級,修改后需重啟生效,TypeScript可通過增加文件獲取智能提示

一、環(huán)境變量和模式

1. 環(huán)境變量

Vite 在一個(gè)特殊的 import.meta.env 對象上暴露環(huán)境變量。

這里有一些在所有情況下都可以使用的內(nèi)建變量:

  • import.meta.env.MODE: {string} 應(yīng)用運(yùn)行的模式,該變量值就是你當(dāng)前運(yùn)行的 .env.{MODE}文件,例如:值為dev時(shí),使用的就是 .env.dev這個(gè)文件
  • import.meta.env.BASE_URL: {string} 部署應(yīng)用時(shí)的基本 URL。他由base 配置項(xiàng)決定這個(gè)值就是你在vite.config.js中定義的base的值
  • import.meta.env.PROD: {boolean} 應(yīng)用是否運(yùn)行在生產(chǎn)環(huán)境
  • import.meta.env.DEV: {boolean} 應(yīng)用是否運(yùn)行在開發(fā)環(huán)境 (永遠(yuǎn)與 import.meta.env.PROD相反)
  • mport.meta.env.SSR: {boolean} 應(yīng)用是否運(yùn)行在 server 上

2. 生產(chǎn)環(huán)境替換

在生產(chǎn)環(huán)境中,這些環(huán)境變量會在構(gòu)建時(shí)被靜態(tài)替換,因此,在引用它們時(shí)請使用完全靜態(tài)的字符串。動態(tài)的 key 將無法生效。例如,動態(tài) key 取值 import.meta.env[key] 是無效的。

它還將替換出現(xiàn)在 JavaScript 和 Vue 模板中的字符串。這本應(yīng)是非常少見的,但也可能是不小心為之的。

在這種情況下你可能會看到類似 Missing Semicolon 或 Unexpected token 等錯(cuò)誤,例如當(dāng) “process.env.NODE_ENV” 被替換為 "“development”: "。

有一些方法可以避免這個(gè)問題:

  • 對于 JavaScript 字符串,你可以使用 unicode 零寬度空格來分割這個(gè)字符串,例如: ‘import.meta\u200b.env.MODE’
  • 對于 Vue 模板或其他編譯到 JavaScript 字符串的 HTML,你可以使用 <wbr> 標(biāo)簽,例如:import.meta.<wbr>env.MODE

二、.env 文件

1. 基本用法

Vite 使用 dotenv 從你的 環(huán)境目錄 中的下列文件加載額外的環(huán)境變量:

.env                # 所有情況下都會加載
.env.local          # 所有情況下都會加載,但會被 git 忽略
.env.[mode]         # 只在指定模式下加載
.env.[mode].local   # 只在指定模式下加載,但會被 git 忽略

環(huán)境加載優(yōu)先級

  • 一份用于指定模式的文件(例如 .env.production)會比通用形式的優(yōu)先級更高(例如 .env)。
  • 另外,Vite 執(zhí)行時(shí)已經(jīng)存在的環(huán)境變量有最高的優(yōu)先級,不會被 .env 類文件覆蓋。例如當(dāng)運(yùn)行 VITE_SOME_KEY=123 vite build 的時(shí)候。
  • .env 類文件會在 Vite 啟動一開始時(shí)被加載,而改動會在重啟服務(wù)器后生效。

加載的環(huán)境變量也會通過 import.meta.env 以字符串形式暴露給客戶端源碼。

為了防止意外地將一些環(huán)境變量泄漏到客戶端,只有以 VITE_ 為前綴的變量才會暴露給經(jīng)過 vite 處理的代碼。例如下面這些環(huán)境變量:

VITE_SOME_KEY=123
DB_PASSWORD=foobar

只有 VITE_SOME_KEY 會被暴露為 import.meta.env.VITE_SOME_KEY 提供給客戶端源碼,而 DB_PASSWORD 則不會。

console.log(import.meta.env.VITE_SOME_KEY) // 123
console.log(import.meta.env.DB_PASSWORD) // undefined

請注意,如果想要在環(huán)境變量中使用 $ 符號,則必須使用 \ 對其進(jìn)行轉(zhuǎn)義。

KEY=123
NEW_KEY1=test$foo   # test
NEW_KEY2=test\$foo  # test$foo
NEW_KEY3=test$KEY   # test123

如果你想自定義 env 變量的前綴,請參閱 envPrefix。

安全注意事項(xiàng)

  • .env.*.local 文件應(yīng)是本地的,可以包含敏感變量。你應(yīng)該將 .local 添加到你的 .gitignore 中,以避免它們被 git 檢入。
  • 由于任何暴露給 Vite 源碼的變量最終都將出現(xiàn)在客戶端包中,VITE_* 變量應(yīng)該不包含任何敏感信息。

2. TypeScript 的智能提示

默認(rèn)情況下,Vite 在 vite/client.d.ts 中為 import.meta.env 提供了類型定義。

隨著在 .env[mode] 文件中自定義了越來越多的環(huán)境變量,你可能想要在代碼中獲取這些以 VITE_ 為前綴的用戶自定義環(huán)境變量的 TypeScript 智能提示。

要想做到這一點(diǎn),你可以在 src 目錄下創(chuàng)建一個(gè) env.d.ts 文件,接著按下面這樣增加 ImportMetaEnv 的定義:

/// <reference types="vite/client" />

interface ImportMetaEnv {
  readonly VITE_APP_TITLE: string
  // 更多環(huán)境變量...
}

interface ImportMeta {
  readonly env: ImportMetaEnv
}

三、模式

1. 基本用法

默認(rèn)情況下,開發(fā)服務(wù)器 (dev 命令) 運(yùn)行在 development (開發(fā)) 模式,而 build 命令則運(yùn)行在 production (生產(chǎn)) 模式。

這意味著當(dāng)執(zhí)行 vite build 時(shí),它會自動加載 .env.production 中可能存在的環(huán)境變量:

# .env.production
VITE_APP_TITLE=My App

在你的應(yīng)用中,你可以使用 import.meta.env.VITE_APP_TITLE 渲染標(biāo)題。

在某些情況下,若想在 vite build 時(shí)運(yùn)行不同的模式來渲染不同的標(biāo)題,你可以通過傳遞 --mode 選項(xiàng)標(biāo)志來覆蓋命令使用的默認(rèn)模式。

例如,如果你想在 staging (預(yù)發(fā)布)模式下構(gòu)建應(yīng)用:

vite build --mode staging

還需要新建一個(gè) .env.staging 文件:

# .env.staging
VITE_APP_TITLE=My App (staging)

由于 vite build 默認(rèn)運(yùn)行生產(chǎn)模式構(gòu)建,你也可以通過使用不同的模式和對應(yīng)的 .env 文件配置來改變它,用以運(yùn)行開發(fā)模式的構(gòu)建:

# .env.testing
NODE_ENV=development

本文內(nèi)容源自vite官方文檔

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue如何自定義事件傳參

    vue如何自定義事件傳參

    這篇文章主要介紹了vue如何自定義事件傳參,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue修改數(shù)據(jù)頁面無效的解決方案

    vue修改數(shù)據(jù)頁面無效的解決方案

    這篇文章主要介紹了vue修改數(shù)據(jù)頁面無效的解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • vue輪播圖插件vue-awesome-swiper

    vue輪播圖插件vue-awesome-swiper

    這篇文章主要為大家詳細(xì)介紹了vue輪播圖插件vue-awesome-swiper,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Vue和React中diff算法的區(qū)別及說明

    Vue和React中diff算法的區(qū)別及說明

    React和Vue都使用虛擬DOM和diff算法來更新DOM,但它們在實(shí)現(xiàn)上有所不同,React采用基于索引的比較,Vue采用雙端比較算法,React在比較時(shí)不復(fù)用不同類型的節(jié)點(diǎn),而Vue會優(yōu)先復(fù)用兩端相同的節(jié)點(diǎn),React對key的依賴較高,而Vue在沒有key時(shí)也能通過雙端比較優(yōu)化
    2025-03-03
  • vue項(xiàng)目開啟Gzip壓縮和性能優(yōu)化操作

    vue項(xiàng)目開啟Gzip壓縮和性能優(yōu)化操作

    這篇文章主要介紹了vue項(xiàng)目開啟Gzip壓縮和性能優(yōu)化操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue使用axios實(shí)現(xiàn)動態(tài)追加數(shù)據(jù)

    vue使用axios實(shí)現(xiàn)動態(tài)追加數(shù)據(jù)

    在vuejs中使用axios時(shí),有時(shí)候需要追加數(shù)據(jù),比如,移動端下拉觸底加載,分頁加載,滑動滾動條等,下面小編就來為大家介紹一下如何使用使用axios實(shí)現(xiàn)動態(tài)追加數(shù)據(jù)吧
    2023-10-10
  • Vue導(dǎo)出el-table表格為Excel文件的兩種方式

    Vue導(dǎo)出el-table表格為Excel文件的兩種方式

    在開發(fā)過程中,我們經(jīng)常需要將表格數(shù)據(jù)導(dǎo)出為 Excel 文件,大多數(shù)情況下,由后端處理即可,但是當(dāng)數(shù)據(jù)量不大、需要快速響應(yīng)用戶操作、或者數(shù)據(jù)已經(jīng)在前端進(jìn)行處理和展示時(shí),前端該如何實(shí)現(xiàn)呢,本文將介紹兩種方法,需要的朋友可以參考下
    2024-09-09
  • Vue + OpenLayers 快速入門學(xué)習(xí)教程

    Vue + OpenLayers 快速入門學(xué)習(xí)教程

    大家都知道使用 Openlayers可以很靈活自由的做出各種地圖和空間數(shù)據(jù)的展示。而且這個(gè)框架是完全免費(fèi)和開源的,本文記錄下 Vue 使用 OpenLayers 入門,使用 OpenLayers 創(chuàng)建地圖組件的相關(guān)知識,需要的朋友一起學(xué)習(xí)下吧
    2021-09-09
  • 詳解基于webpack和vue.js搭建開發(fā)環(huán)境

    詳解基于webpack和vue.js搭建開發(fā)環(huán)境

    本篇文章主要介紹了詳解基于webpack和vue.js搭建開發(fā)環(huán)境 ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-04-04
  • Vuejs中的watch實(shí)例詳解(監(jiān)聽者)

    Vuejs中的watch實(shí)例詳解(監(jiān)聽者)

    本文通過實(shí)例代碼給大家介紹了Vuejs中的watch,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-01-01

最新評論

深水埗区| 资源县| 祁阳县| 宜章县| 吉水县| 扬州市| 沙河市| 汉寿县| 阿图什市| 阿图什市| 山东省| 牟定县| 淳安县| 怀集县| 涿州市| 涟源市| 白城市| 通渭县| 深泽县| 信阳市| 灵山县| 蕲春县| 罗江县| 惠来县| 庆城县| 台江县| 大竹县| 阳朔县| 福建省| 英吉沙县| 安国市| 林周县| 雅安市| 菏泽市| 文成县| 延寿县| 宜宾县| 五大连池市| 乐安县| 察隅县| 溆浦县|