我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nuxt不同环境如何区分的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nuxt不同环境如何区分的方法

背景

在一般情况下,我们的项目肯定需要区分不同环境,来决策其对应的策略,包括但不局限于接口转发地址、打包策略、日志输出策略等。那么抛开具体要设置哪些内容,我们需要先要有区分环境的能力才能做这些事情。那么Nuxt提供给我们这样的基本能力了么?答案是肯定的。

下面我们以不同环境肯定会不一样的接口转发地址为例,进行相关的说明。

nuxt.config.js

用Nuxt框架开发的同学相信对这个配置文件都不陌生,那么本文也会涉及到这里面的一个具体配置就是axios的配置。配置的地址取决于一个变量,这个变量是不确定的。配置代码如下:

备注:关于axios以及proxy如何配置参考我另外的文章哦。


export default {
 modules: ["@nuxtjs/axios"],
 axios: {
        // 是否允许跨域
        proxy: true,
        // 最多重发三次
        retry: {
            retries: 3,
        },
        // 非线上环境开启debug
        debug: !isProd,
        // 是否是可信任
        withCredentials: true,
        timeout: 2000,
    },
proxy: {
        "/api": {
            changeOrigin: true,
            target: targetUrl,
            pathRewrite: {
                "^/api": "/api",
            },
        }
   }
}

关键参数

isProd , targetUrl

其中不同环境的地址我们可以做静态维护,根据环境标识来取用对应的环境地址,而是否是生产环境,也可以通过环境标识来控制。
假设我们的不同环境的配置字典是这样的(建议单独写一个配置文件的config.js)。
备注:其中预发环境建议与生产环境除了域名配置不一样,其他尽量保持一致,可以前置尽可能的奇怪问题。


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 是如何定义出来的呢?我们根据项目开发的不同阶段区分处理。
开发阶段设置变量

在npm中有这样一个开源库,可以实现跨平台的设置node变量,它便是cross-env,npm模块地址:https://www.npmjs.com/package/cross-env,怎么安装就不赘述了。

因为本地开发一般执行的是npm run dev,而默认的包文件的执行命令中是没有区分环境的配置的,所以简单处理,我们可以直接在包文件的可执行脚本中增加对应的可执行脚本,目的就是我不想因为切换环境不断的修改我的配置文件或者通过注释选择修改哪个文件,另外这一点也是更符合开发习惯的,在一般情况下,我们也不会各个环境来回切换调试一个功能。

package.json 中追加的可执行命令:其中我们定义的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"
 }

部署阶段

部署阶段,作为常识,我们知道,最终一定是服务器进程守护的部署,不会是npm run start 这种方式部署。所以对应的引入pm2是基本选型,而pm2的生态下是支持使用配置文件部署的。你可以在根目录下创建ecosystem.config.js,然后配置基本的内容如下:其中以env_xx 的部分就是在pm2中支持配置环境变量的部分,相比cross-env,设置变量的方式更加简洁,是个js基本对象格式的。保持也是设置NODE_ENV以及对应的env标识即可。


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"
     }
    },
   ]
 }

然后在启动时,可以使用pm2 start --env stable 来指定使用哪个环境。我为了方便运维,在习惯上,将默认的不设置env 设置为启动生产环境配置。pm2 start,这种情况下会使用env 这个的对应配置。

小结

本文介绍就到这里了,希望大家可以清楚的知道如何根据环境标识自定义设置和使用一些环境差异变量,并且发掘和利用好这一点。

到此这篇关于Nuxt不同环境如何区分的方法的文章就介绍到这了,更多相关Nuxt不同环境区分内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nuxt不同环境如何区分的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

vue中如何区分不同的环境

这篇文章主要介绍“vue中如何区分不同的环境”,在日常操作中,相信很多人在vue中如何区分不同的环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue中如何区分不同的环境”的疑惑有所帮助!接下来,请跟着小编
2023-06-30

vue如何根据不同的环境使用不同的接口地址

这篇文章主要介绍了vue如何根据不同的环境使用不同的接口地址问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-16

Python CGI环境在不同操作系统中的配置方法

这篇文章主要讲解了“Python CGI环境在不同操作系统中的配置方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python CGI环境在不同操作系统中的配置方法”吧!CGI 代表COM
2023-06-17

SpringBoot 如何通过 Profile 实现不同环境下的配置切换

SpringBoot通过profile实现在不同环境下的配置切换,比如常见的开发环境、测试环境、生产环境,SpringBoot常用配置文件主要有 2 种:properties 文件和yml文件,本文给大家详细介绍SpringBoot 通过 Profile 实现不同环境下的配置切换,感兴趣的朋友一起看看吧
2022-11-13

Spring Boot打包不同环境配置与Shell脚本部署的方法教程

这篇文章主要介绍“Spring Boot打包不同环境配置与Shell脚本部署的方法教程”,在日常操作中,相信很多人在Spring Boot打包不同环境配置与Shell脚本部署的方法教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作
2023-06-16

Nagios如何进行性能调整以适应不同规模的环境

Nagios是一个强大的开源监控系统,可以用于监控各种不同规模的环境。为了适应不同规模的环境,您可以通过以下方式对Nagios进行性能调整:增加硬件资源:在大规模环境下,您可以增加Nagios服务器的CPU、内存和存储等硬件资源,以确保Na
Nagios如何进行性能调整以适应不同规模的环境
2024-03-13

blkid如何辅助区分不同类型的存储设备

blkid命令是一个在Linux系统中用于显示或查询块设备属性的工具,它可以帮助我们区分不同类型的存储设备。以下是blkid命令的详细介绍:blkid命令概述功能:blkid命令用于显示或查询块设备的属性,特别是文件系统的UUID(Uni
blkid如何辅助区分不同类型的存储设备
2024-10-11

如何编写具有不同签名的同一方法的多个实现

从现在开始,我们要努力学习啦!今天我给大家带来《如何编写具有不同签名的同一方法的多个实现》,感兴趣的朋友请继续看下去吧!下文中的内容我们主要会涉及到等等知识点,如果在阅读本文过程中有遇到不清楚的地方,欢迎留言呀!我们一起讨论,一起学习!问题
如何编写具有不同签名的同一方法的多个实现
2024-04-04

编程热搜

目录