广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue3之 Vue CLI多环境配置
  • 527
分享到

Vue3之 Vue CLI多环境配置

2024-04-02 19:04:59 527人浏览 安东尼
摘要

目录一、前言二、实现切换1、增加开发和生产配置文件2、修改编译和启动支持多环境3、修改axiOS请求地址支持多环境一、前言 这里相对于之前就没那么麻烦了,通俗点说就是使用配置文件来管

一、前言

这里相对于之前就没那么麻烦了,通俗点说就是使用配置文件来管理多环境,实现环境的切换。

二、实现切换

1、增加开发和生产配置文件

在web的根目录下,创建开发环境切换配置文件.env.dev,内容如下:


node_ENV=development
Vue_APP_SERVER=Http://127.0.0.1:8880

在web的根目录下,创建线上环境切换配置文件.env.prod,内容如下:


NODE_ENV=production
VUE_APP_SERVER=https://www.baidu.com

2、修改编译和启动支持多环境

package.JSON中修改,就是吧原来的server做下调整,

示例代码如下:


{
  "name": "WEB",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "serve-dev": "vue-cli-service serve --mode dev --port 8080",
    "serve-prod": "vue-cli-service serve --mode prod",
    "build-dev": "vue-cli-service build --mode dev",
    "build-prod": "vue-cli-service build --mode prod",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "@ant-design/icons-vue": "^5.1.9",
    "ant-design-vue": "^2.0.0-rc.3",
    "axios": "^0.21.0",
    "vue": "^3.0.0",
    "vue-router": "^4.0.0-0",
    "vuex": "^4.0.0-0"
  },
  "devDependencies": {
    "@typescript-eslint/eslint-plugin": "^4.18.0",
    "@typescript-eslint/parser": "^4.18.0",
    "@vue/cli-plugin-eslint": "~4.5.0",
    "@vue/cli-plugin-router": "~4.5.0",
    "@vue/cli-plugin-typescript": "~4.5.0",
    "@vue/cli-plugin-vuex": "~4.5.0",
    "@vue/cli-service": "~4.5.0",
    "@vue/compiler-sfc": "^3.0.0",
    "@vue/eslint-config-typescript": "^7.0.0",
    "eslint": "^6.7.2",
    "eslint-plugin-vue": "^7.0.0",
    "typescript": "~4.1.5"
  }
}

点击右侧npm中的刷新按钮,查看效果如下:

为了看到效果,我们在main.ts添加输出日志代码,以便验证是否修改成功,

添加代码如下:


console.log('环境',process.env.NODE_ENV);
console.log('服务端',process.env.VUE_APP_SERVER);


知识点:

  • NODE_ENV为配置文件对应的NODE_ENV变量
  • VUE_APP_SERVER为配置文件对应的VUE_APP_SERVER变量

重新编译,启动服务,结果如下图:

3、修改axios请求地址支持多环境

为什么要修改?

因为一个系统不可能只有一个请求,再者每个请求都写全路径,这会使代码的维护成本很大,所以,这里我们采用统一的配置去维护会相对好些。

因为是全局的,所以只要在main.ts中修改即可,引用axios,并设置默认访问路径,

示例代码如下:


import {createApp} from 'vue';
import Antd from 'ant-design-vue';
import App from './App.vue';
import 'ant-design-vue/dist/antd.CSS';
import router from './router';
import store from './store';
import axios from 'axios';
axios.defaults.baseURL=process.env.VUE_APP_SERVER;

//优点就是方便开发,缺点就是打包的时候会使文件较大(但并影响什么)
createApp(App).use(store).use(router).use(Antd).mount('#app')

console.log('环境', process.env.NODE_ENV);
console.log('服务端', process.env.VUE_APP_SERVER);


然后,我们在home修改axios的请求地址,只剩路径即可,

示例代码如下:


<template>
  <a-layout>
    `<a-layout-sider width="200" style="background: #fff">
      <a-menu
          mode="inline"
          v-model:selectedKeys="selectedKeys2"
          v-model:openKeys="openKeys"
          :style="{ height: '100%', borderRight: 0 }"
      >
        <a-sub-menu key="sub1">
          <template #title>
                <span>
                  <user-outlined />
                  subnav 1
                </span>
          </template>
          <a-menu-item key="1">option1</a-menu-item>
          <a-menu-item key="2">option2</a-menu-item>
          <a-menu-item key="3">option3</a-menu-item>
          <a-menu-item key="4">option4</a-menu-item>
        </a-sub-menu>
        <a-sub-menu key="sub2">
          <template #title>
                <span>
                  <laptop-outlined />
                  subnav 2
                </span>
          </template>
          <a-menu-item key="5">option5</a-menu-item>
          <a-menu-item key="6">option6</a-menu-item>
          <a-menu-item key="7">option7</a-menu-item>
          <a-menu-item key="8">option8</a-menu-item>
        </a-sub-menu>
        <a-sub-menu key="sub3">
          <template #title>
                <span>
                  <notification-outlined />
                  subnav 3
                </span>
          </template>
          <a-menu-item key="9">option9</a-menu-item>
          <a-menu-item key="10">option10</a-menu-item>
          <a-menu-item key="11">option11</a-menu-item>
          <a-menu-item key="12">option12</a-menu-item>
        </a-sub-menu>
      </a-menu>
  </a-layout-sider>
    `
    <a-list item-layout="vertical" size="large"
            :grid="{ gutter: 16, column: 3 }" :data-source="ebooks1">
      <template #renderItem="{ item }">
        <a-list-item key="item.name">
          <template #actions>
          <span v-for="{ type, text } in actions" :key="type">
            <component v-bind:is="type" style="margin-right: 8px"/>
            {{ text }}
          </span>
          </template>
          <a-list-item-meta :description="item.description">
            <template #title>
              <a :href="item.href" rel="external nofollow" >{{ item.name }}</a>
            </template>
            <template #avatar><a-avatar :src="item.cover" /></template>
          </a-list-item-meta>
        </a-list-item>
      </template>
    </a-list>
  </a-layout>
</template>

<script lang="ts">
import {defineComponent, onMounted, Reactive, ref, toRef} from 'vue';
import axios from 'axios';
import {LikeOutlined, MessageOutlined, StarOutlined} from '@ant-design/icons-vue';

const listData: Record<string, string>[] = [];

export default defineComponent({
  components: {
    StarOutlined,
    LikeOutlined,
    MessageOutlined,
  },
  name: 'Home',
  setup(){
    const pagination = {
      onChange: (page: number) => {
        console.log(page);
      },
      pageSize: 3,
    };
    const actions: Record<string, string>[] = [
      { type: 'StarOutlined', text: '156' },
      { type: 'LikeOutlined', text: '156' },
      { type: 'MessageOutlined', text: '2' },
    ];
    console.log('set up');
    //使用ref进行数据绑定
    const ebooks=ref();
    // 使用reactive进行数据绑定
    const ebooks1=reactive({books:[]})
    onMounted(()=>{
      axios.get("/ebook/list?name=").then(response => {
        console.log("onMounted");
        const data = response.data;
        ebooks.value = data.content;
        ebooks1.books = data.content;
        console.log(response);
      })
    })
    return {
      pagination,
      actions,
      ebooks1: ebooks,
      ebooks2: toRef(ebooks1, "books")
    }

  }
});
</script>
<style scoped>
.ant-layout-sider {
  float: left;
}

.ant-avatar {
  width: 50px;
  height: 50px;
  line-height: 50px;
  border-radius: 8%;
  margin: 5px 0;
}
</style>

我们再次重新编译启动,查看结果如下:

由红圈处查看,证明修改axios请求地址,实现全局配置维护成功。

知识点:

  • 多环境配置文件要放在web根目录下
  • .env.xxx,后缀xxx和package.json里的指令的–mode xxx对应
  • 增加–port参数来修改启动端口
  • 自定义变量必须以VUE_APP_开头
  • 通过设置axios.defaults.baseURL,来统一设置后端的IP端口或域名

到此这篇关于vue3之 Vue CLI多环境配置的文章就介绍到这了,更多相关Vue CLI多环境配置内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue3之 Vue CLI多环境配置

本文链接: https://www.lsjlt.com/news/157312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Vue3之 Vue CLI多环境配置
    目录一、前言二、实现切换1、增加开发和生产配置文件2、修改编译和启动支持多环境3、修改axios请求地址支持多环境一、前言 这里相对于之前就没那么麻烦了,通俗点说就是使用配置文件来管...
    99+
    2022-11-12
  • vue多环境配置之.env配置文件详解
    目录Vue之.env环境配置文件前言一、.env是什么?二、说明及用法1. 文件说明2. 文件读取2.1 npm run serve2.2 npm run build3. 查看环境变...
    99+
    2023-03-19
    vue多环境配置 vue .env配置文件
  • vue多环境配置之.env配置文件怎么使用
    这篇文章主要介绍“vue多环境配置之.env配置文件怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue多环境配置之.env配置文件怎么使用”文章能帮助大家解决问题。Vue之.env环境配置...
    99+
    2023-07-05
  • vue-cli-servicebuild环境设置方式
    目录vue-cli-service build 环境设置如下提供一种解决方案vue-cli的vue-cli-service命令的默认环境总结vue-cli-service build...
    99+
    2023-01-11
    vue-cli-service build build环境设置 vue-cli-service build环境
  • vue环境变量配置之process.env怎么配置
    本篇内容介绍了“vue环境变量配置之process.env怎么配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!vue环境变量配置proce...
    99+
    2023-07-05
  • Hadoop环境配置之hive环境配置详解
    1、将下载的hive压缩包拉到/opt/software/文件夹下 安装包版本:apache-hive-3.1.2-bin.tar.gz 2、将安装包解压到/opt/module/...
    99+
    2022-11-12
  • vue项目多环境配置得方法
    这篇文章主要介绍“vue项目多环境配置得方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue项目多环境配置得方法”文章能帮助大家解决问题。什么是多环境配置,为什...
    99+
    2022-10-19
  • vue项目多环境配置(.env)的实现
    目录什么是多环境配置,为什么要多环境配置?.env 文件配置到哪里.env文件如何配置,配置多少个?.env文件的配置如何配置运行环境如何获取全局配置项的值如何运行环境没接触...
    99+
    2022-11-12
  • Vue3组件库的环境怎么配置
    因为我们是使用 Vite+Ts 开发的是 Vue3 组件库,所以我们需要安装 typescript、vue3,同时项目将采用 Less 进行组件库样式的管理pnpm add vue@next typescript less -D -w使用p...
    99+
    2023-05-14
    Vue3
  • Vue3组件库的环境如何配置
    这篇文章主要讲解了“Vue3组件库的环境如何配置”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Vue3组件库的环境如何配置”吧!因为我们是使用 Vite+Ts 开发的是 Vue3 组件库,所...
    99+
    2023-07-06
  • python之环境变量配置
    Python 是一种高级编程语言,它是一种解释性的语言,它有一些常用的环境变量配置。在本文中,我们将详细探讨这些配置。这些配置包括: PATH 环境变量 PATH 环境变量是最重要的环境变量之一,因为它告诉操作系统可执行文件所在的位置。当你...
    99+
    2023-10-21
    python 开发语言
  • vue项目多环境配置的实现方法
    这篇文章主要讲解了“vue项目多环境配置的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue项目多环境配置的实现方法”吧!目录什么是多环境配置,为什么要多环境配置.env 文件配置...
    99+
    2023-06-20
  • vue3不同环境下实现配置代理
    目录不同环境下如何配置代理第一种情况第二种情况Vue设置本地代理本地安装Whistle谷歌浏览器安装Proxy SwitchyOmega扩展浏览器操作不同环境下如何配置代理 实际开发...
    99+
    2022-11-13
  • nuxt.js 多环境变量配置
    目录1、前言2、场景3、创建环境3.1 注入环境变量4、最后1、前言 一般在我们项目开发中,一般会有以下3个环境 开发环境也叫测试环境(test) RC环境也叫预发...
    99+
    2022-11-12
  • Python 多环境配置管理
    实际工程开发中常常会对开发、测试和生产等不同环境配置不同的数据库环境,传统方式可以通过添加不同环境的配置文件达到部署时的动态切换的效果。这种方式还不错,不过不同环境间往往会共享相同的配置而造成一些重复工作。 项目代码./ ├──&...
    99+
    2023-01-31
    环境 配置管理 Python
  • 如何解决通过vue-cli来学习修改Webpack多环境配置和发布问题
    这篇文章将为大家详细讲解有关如何解决通过vue-cli来学习修改Webpack多环境配置和发布问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Vue之所以现在如此之火热...
    99+
    2022-10-19
  • Emacs之Python编程环境配置 -
    由于之前一直使用Emacs+Jedi来进行Python的编程环境,最近又尝试了Emacs+Elpy的方式。接下来直接开始吧,少些废话。首先系统当中要安装pip等工具,方便安装python的一些工具包(在CentOS6.5 64位系统上进行的...
    99+
    2023-01-31
    环境 Emacs Python
  • VSCode教程之配置Java环境
    目录 一、安装JDK 二、配置环境变量 三、安装扩展 四、测试环境 一、安装JDK 1、进入官网,选择安装的JDK版本、操作系统和系统位数 2、双击下载后的exe文件 3、点击“下一步” 4、记住安装路径(之后会用到,也可以点击“更...
    99+
    2023-09-07
    java vscode 开发语言
  • Vue3组件库的环境配置搭建过程
    目录搭建一个基于 vite 的 vue3 项目安装插件配置 vite.config.ts新建入口 html 文件app.vue入口 main.ts配置脚本启动项目本篇文章将在项目中引...
    99+
    2023-03-03
    Vue3 组件库配置 Vue3 组件库 vue3环境配置
  • SpringBoot Profile多环境配置方式
    目录Profile多环境配置Profile配置详解1.问题2.为什么要使用profilesProfile多环境配置 我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作