在应用程序初始化时在 Vue 中存储环境值

Store environment value in Vue upon app initialization

在使用 VueJS 构建的基本 Web 应用程序中,调用 API 以包含环境名称的对象响应。例如:
https://appsdev/mysimpleapp/api/environment
returns
{"applicationName":"My Simple App","version":"1.0.0.0","environment":"DEV"}

目前,导航按钮被设置为有条件地显示环境是否DEV。以下是该页面的相关部分:

<template>
   <!-- other content here -->
   <div @click="updateMenu()" v-show="['DEV'].includes(environment)"><router-link :to="{name: 'dev-notes'}">Dev Notes</router-link></div>
</template>

<script>
// other logic here
data() {
    return {
        environment: null
    }
},
created() {
    this.getEnvironment();
},
methods: {
    async getEnvironment() {
        const environmentDetails = await this.$service.access('environment').get();  // uses Axios to access API
            this.environment = environmentDetails.environment;
        }
    }
}
</script>

虽然此方法有效,但当应用点击 API 时,“开发笔记”导航按钮出现明显延迟。另外,每次加载页面时,都会调用 API.

希望对此进行改进,似乎最好点击 API 一次,当应用程序初始化时,将该值存储在某处的变量中,然后引用该变量以有条件地显示“开发说明”导航按钮。 Vuex 对于这样一个简单的事情来说似乎有点矫枉过正,而且这个应用程序没有 this post 描述的 .env 文件,那么如何实现呢?

您可以使用节点的 process.env 从 Vue CLI 直接访问环境模式信息,这是默认可用的功能。具体来说,process.env.NODE_ENV 表明该应用程序是 运行 处于生产、开发还是其他模式。从 Vue CLI docs:

For example, NODE_ENV will be set to "production" in production mode, "test" in test mode, and defaults to "development" otherwise.

您可以在项目的任何地方测试它,例如:

if (process.env.NODE_ENV === 'production') {
  console.log('PRODUCTION');
} else if (process.env.NODE_ENV === 'development') {
  console.log('DEVELOPMENT');
} else {
  console.log('OTHER');
}