亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Nuxt不同環(huán)境如何區(qū)分的方法

 更新時(shí)間:2021年05月14日 10:08:20   作者:余杭子曰  
在一般情況下,我們的項(xiàng)目肯定需要區(qū)分不同環(huán)境,那么Nuxt提供給我們這樣的基本能力了么,下面我們就一起來了解一下

背景

在一般情況下,我們的項(xiàng)目肯定需要區(qū)分不同環(huán)境,來決策其對應(yīng)的策略,包括但不局限于接口轉(zhuǎn)發(fā)地址、打包策略、日志輸出策略等。那么拋開具體要設(shè)置哪些內(nèi)容,我們需要先要有區(qū)分環(huán)境的能力才能做這些事情。那么Nuxt提供給我們這樣的基本能力了么?答案是肯定的。

下面我們以不同環(huán)境肯定會不一樣的接口轉(zhuǎn)發(fā)地址為例,進(jìn)行相關(guān)的說明。

nuxt.config.js

用Nuxt框架開發(fā)的同學(xué)相信對這個(gè)配置文件都不陌生,那么本文也會涉及到這里面的一個(gè)具體配置就是axios的配置。配置的地址取決于一個(gè)變量,這個(gè)變量是不確定的。配置代碼如下:

備注:關(guān)于axios以及proxy如何配置參考我另外的文章哦。

export default {
 modules: ["@nuxtjs/axios"],
 axios: {
        // 是否允許跨域
        proxy: true,
        // 最多重發(fā)三次
        retry: {
            retries: 3,
        },
        // 非線上環(huán)境開啟debug
        debug: !isProd,
        // 是否是可信任
        withCredentials: true,
        timeout: 2000,
    },
proxy: {
        "/api": {
            changeOrigin: true,
            target: targetUrl,
            pathRewrite: {
                "^/api": "/api",
            },
        }
   }
}

關(guān)鍵參數(shù)

isProd , targetUrl

其中不同環(huán)境的地址我們可以做靜態(tài)維護(hù),根據(jù)環(huán)境標(biāo)識來取用對應(yīng)的環(huán)境地址,而是否是生產(chǎn)環(huán)境,也可以通過環(huán)境標(biāo)識來控制。
假設(shè)我們的不同環(huán)境的配置字典是這樣的(建議單獨(dú)寫一個(gè)配置文件的config.js)。
備注:其中預(yù)發(fā)環(huán)境建議與生產(chǎn)環(huán)境除了域名配置不一樣,其他盡量保持一致,可以前置盡可能的奇怪問題。

export default {
    dev: "http://dev.xxx.net/",
    stable: "https://stable.xxx.net/",
    pre: "https://pre.xxx.com/",
    prod: "http://xxx.com/",
}

那么使用定義變量便是如下:

const isProd = process.env.NODE_ENV === "prod";
const targetUrl = serverConfig[ process.env.NODE_ENV || 'stable'];

那么process.env.NODE_ENV 是如何定義出來的呢?我們根據(jù)項(xiàng)目開發(fā)的不同階段區(qū)分處理。
開發(fā)階段設(shè)置變量

在npm中有這樣一個(gè)開源庫,可以實(shí)現(xiàn)跨平臺的設(shè)置node變量,它便是cross-env,npm模塊地址:https://www.npmjs.com/package/cross-env,怎么安裝就不贅述了。

因?yàn)楸镜亻_發(fā)一般執(zhí)行的是npm run dev,而默認(rèn)的包文件的執(zhí)行命令中是沒有區(qū)分環(huán)境的配置的,所以簡單處理,我們可以直接在包文件的可執(zhí)行腳本中增加對應(yīng)的可執(zhí)行腳本,目的就是我不想因?yàn)榍袚Q環(huán)境不斷的修改我的配置文件或者通過注釋選擇修改哪個(gè)文件,另外這一點(diǎn)也是更符合開發(fā)習(xí)慣的,在一般情況下,我們也不會各個(gè)環(huán)境來回切換調(diào)試一個(gè)功能。

package.json 中追加的可執(zhí)行命令:其中我們定義的NODE_ENV的值就是我們在配置文件的鍵值,請保持它們的一致性。

 "scripts": {
    "dev": "cross-env NODE_ENV=dev nuxt",
    "dev-stable": "cross-env NODE_ENV=stable nuxt",
    "dev-pre": "cross-env NODE_ENV=pre nuxt",
    "dev-prod": "cross-env NODE_ENV=prod nuxt"
 }

部署階段

部署階段,作為常識,我們知道,最終一定是服務(wù)器進(jìn)程守護(hù)的部署,不會是npm run start 這種方式部署。所以對應(yīng)的引入pm2是基本選型,而pm2的生態(tài)下是支持使用配置文件部署的。你可以在根目錄下創(chuàng)建ecosystem.config.js,然后配置基本的內(nèi)容如下:其中以env_xx 的部分就是在pm2中支持配置環(huán)境變量的部分,相比cross-env,設(shè)置變量的方式更加簡潔,是個(gè)js基本對象格式的。保持也是設(shè)置NODE_ENV以及對應(yīng)的env標(biāo)識即可。

module.exports = {
  apps: [
    {
      name: 'demo_pc',
      exec_mode: 'cluster',
      instances: '2', // Or a number of instances
      script: './node_modules/nuxt/bin/nuxt.js',
      args: 'start',
      log_date_format:'hxpc_YYYY-MM-DD HH:mm Z',
      log_file:'pc.log',
      out_file: 'out.log',
      env: {
        "NODE_ENV": "prod",
      },
      env_dev: {
        "NODE_ENV": "dev",
      },
      env_prod : {
         "NODE_ENV": "prod"
      },
      env_pre : {
        "NODE_ENV": "pre"
      },
      env_stable : {
        "NODE_ENV": "stable"
     }
    },
   ]
 }

然后在啟動時(shí),可以使用pm2 start --env stable 來指定使用哪個(gè)環(huán)境。我為了方便運(yùn)維,在習(xí)慣上,將默認(rèn)的不設(shè)置env 設(shè)置為啟動生產(chǎn)環(huán)境配置。pm2 start,這種情況下會使用env 這個(gè)的對應(yīng)配置。

小結(jié)

本文介紹就到這里了,希望大家可以清楚的知道如何根據(jù)環(huán)境標(biāo)識自定義設(shè)置和使用一些環(huán)境差異變量,并且發(fā)掘和利用好這一點(diǎn)。

到此這篇關(guān)于Nuxt不同環(huán)境如何區(qū)分的方法的文章就介紹到這了,更多相關(guān)Nuxt不同環(huán)境區(qū)分內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題

    解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題

    這篇文章主要介紹了解決vue-cli-service不是內(nèi)部或外部命令也不是可運(yùn)行的程序或批處理文件的報(bào)錯(cuò)問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • 實(shí)例詳解vue中的$root和$parent

    實(shí)例詳解vue中的$root和$parent

    這篇文章主要介紹了vue中的$root和$parent ,本文通過文字實(shí)例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • vue-cli之引入Bootstrap問題(遇到的坑,以及解決辦法)

    vue-cli之引入Bootstrap問題(遇到的坑,以及解決辦法)

    這篇文章主要介紹了vue-cli之引入Bootstrap問題(遇到的坑,以及解決辦法),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 使用Vue和Firebase實(shí)現(xiàn)后臺數(shù)據(jù)存儲的示例代碼

    使用Vue和Firebase實(shí)現(xiàn)后臺數(shù)據(jù)存儲的示例代碼

    在現(xiàn)代 web 應(yīng)用開發(fā)中,前端和后端的無縫協(xié)作至關(guān)重要,借助 Firebase 等云計(jì)算解決方案,前端開發(fā)者可以輕松實(shí)現(xiàn)數(shù)據(jù)存儲與實(shí)時(shí)更新,本文將為大家詳細(xì)介紹如何利用 Vue 3 的 Composition API 和 Firebase 實(shí)現(xiàn)后臺數(shù)據(jù)存儲,需要的朋友可以參考下
    2024-10-10
  • vue項(xiàng)目接口域名動態(tài)獲取操作

    vue項(xiàng)目接口域名動態(tài)獲取操作

    這篇文章主要介紹了vue項(xiàng)目接口域名動態(tài)獲取操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于vue實(shí)現(xiàn)頁面滾動加載的示例詳解

    基于vue實(shí)現(xiàn)頁面滾動加載的示例詳解

    頁面內(nèi)容太多會導(dǎo)致加載速度過慢,這時(shí)可考慮使用滾動加載即還沒有出現(xiàn)在可視范圍內(nèi)的內(nèi)容塊先不加載,出現(xiàn)后再加載,所以本文給大家介紹了基于vue實(shí)現(xiàn)頁面滾動加載的示例,需要的朋友可以參考下
    2024-01-01
  • vue實(shí)現(xiàn)自定義多選按鈕

    vue實(shí)現(xiàn)自定義多選按鈕

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)自定義多選按鈕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Vue項(xiàng)目中引入ECharts的教程詳解

    Vue項(xiàng)目中引入ECharts的教程詳解

    ECharts是一個(gè)強(qiáng)大的畫圖插件,在vue項(xiàng)目中,我們常??梢砸肊charts來完成完成一些圖表的繪制,本文就來和大家介紹一下如何在Vue項(xiàng)目中引入ECharts吧
    2023-03-03
  • vue切換菜單取消未完成接口請求的案例

    vue切換菜單取消未完成接口請求的案例

    這篇文章主要介紹了vue切換菜單取消未完成接口請求的案例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Vue.set()實(shí)現(xiàn)數(shù)據(jù)動態(tài)響應(yīng)的方法

    Vue.set()實(shí)現(xiàn)數(shù)據(jù)動態(tài)響應(yīng)的方法

    這篇文章主要介紹了Vue.set()實(shí)現(xiàn)數(shù)據(jù)動態(tài)響應(yīng)的相關(guān)知識,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02

最新評論