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

Vue3之 Vue CLI多環(huán)境配置

 更新時(shí)間:2021年11月15日 09:48:02   作者:久曲鍵  
這篇文章主要介紹了Vue3之 Vue CLI多環(huán)境配置,通俗點(diǎn)說(shuō)就是使用配置文件來(lái)管理多環(huán)境,實(shí)現(xiàn)環(huán)境的切換,西阿棉詳細(xì)內(nèi)容,需要的朋友可以參考一下

一、前言

這里相對(duì)于之前就沒(méi)那么麻煩了,通俗點(diǎn)說(shuō)就是使用配置文件來(lái)管理多環(huán)境,實(shí)現(xiàn)環(huán)境的切換。

二、實(shí)現(xiàn)切換

1、增加開(kāi)發(fā)和生產(chǎn)配置文件

在web的根目錄下,創(chuàng)建開(kāi)發(fā)環(huán)境切換配置文件.env.dev,內(nèi)容如下:

NODE_ENV=development
VUE_APP_SERVER=http://127.0.0.1:8880

在web的根目錄下,創(chuàng)建線上環(huán)境切換配置文件.env.prod,內(nèi)容如下:

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

2、修改編譯和啟動(dòng)支持多環(huán)境

package.json中修改,就是吧原來(lái)的server做下調(diào)整,

示例代碼如下:

{
  "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"
  }
}

點(diǎn)擊右側(cè)npm中的刷新按鈕,查看效果如下:

為了看到效果,我們?cè)?code>main.ts添加輸出日志代碼,以便驗(yàn)證是否修改成功,

添加代碼如下:

console.log('環(huán)境',process.env.NODE_ENV);
console.log('服務(wù)端',process.env.VUE_APP_SERVER);


知識(shí)點(diǎn):

  • NODE_ENV為配置文件對(duì)應(yīng)的NODE_ENV變量
  • VUE_APP_SERVER為配置文件對(duì)應(yīng)的VUE_APP_SERVER變量

重新編譯,啟動(dòng)服務(wù),結(jié)果如下圖:

3、修改axios請(qǐng)求地址支持多環(huán)境

為什么要修改?

因?yàn)橐粋€(gè)系統(tǒng)不可能只有一個(gè)請(qǐng)求,再者每個(gè)請(qǐng)求都寫(xiě)全路徑,這會(huì)使代碼的維護(hù)成本很大,所以,這里我們采用統(tǒng)一的配置去維護(hù)會(huì)相對(duì)好些。

因?yàn)槭侨值?,所以只要?code>main.ts中修改即可,引用axios,并設(shè)置默認(rèn)訪問(wèn)路徑,

示例代碼如下:

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;

//優(yōu)點(diǎn)就是方便開(kāi)發(fā),缺點(diǎn)就是打包的時(shí)候會(huì)使文件較大(但并影響什么)
createApp(App).use(store).use(router).use(Antd).mount('#app')

console.log('環(huán)境', process.env.NODE_ENV);
console.log('服務(wù)端', process.env.VUE_APP_SERVER);


然后,我們?cè)?code>home修改axios的請(qǐng)求地址,只剩路徑即可,

示例代碼如下:

<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進(jìn)行數(shù)據(jù)綁定
    const ebooks=ref();
    // 使用reactive進(jìn)行數(shù)據(jù)綁定
    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>

我們?cè)俅沃匦戮幾g啟動(dòng),查看結(jié)果如下:

由紅圈處查看,證明修改axios請(qǐng)求地址,實(shí)現(xiàn)全局配置維護(hù)成功。

知識(shí)點(diǎn):

  • 多環(huán)境配置文件要放在web根目錄下
  • .env.xxx,后綴xxx和package.json里的指令的–mode xxx對(duì)應(yīng)
  • 增加–port參數(shù)來(lái)修改啟動(dòng)端口
  • 自定義變量必須以VUE_APP_開(kāi)頭
  • 通過(guò)設(shè)置axios.defaults.baseURL,來(lái)統(tǒng)一設(shè)置后端的IP端口或域名

到此這篇關(guān)于Vue3之 Vue CLI多環(huán)境配置的文章就介紹到這了,更多相關(guān)Vue CLI多環(huán)境配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 關(guān)于Vue組件間的常用傳參方式

    關(guān)于Vue組件間的常用傳參方式

    這篇文章主要介紹了關(guān)于Vue組件間的常用傳參方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Element-ui tree組件自定義節(jié)點(diǎn)使用方法代碼詳解

    Element-ui tree組件自定義節(jié)點(diǎn)使用方法代碼詳解

    本文通過(guò)實(shí)例代碼給大家介紹了Element-ui tree組件自定義節(jié)點(diǎn)使用方法 ,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-09-09
  • vue-cli3.0 環(huán)境變量與模式配置方法

    vue-cli3.0 環(huán)境變量與模式配置方法

    vue-cli3.0移除了配置文件目錄: config和build文件夾??梢哉f(shuō)是非常的精簡(jiǎn)了,那移除了配置文件目錄后如何自定義配置環(huán)境變量和模式呢?這篇文章主要介紹了vue-cli3.0 環(huán)境變量與模式 ,需要的朋友可以參考下
    2018-11-11
  • Vue2組件tree實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形菜單

    Vue2組件tree實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形菜單

    這篇文章主要為大家詳細(xì)介紹了Vue2組件tree實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • Vue給?elementUI?中的?this.$confirm、this.$alert、?this.$prompt添加按鈕加載效果

    Vue給?elementUI?中的?this.$confirm、this.$alert、?this.$promp

    這篇文章主要介紹了Vue給?elementUI?中的?this.$confirm、this.$alert、?this.$prompt添加按鈕的加載效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Vue解決跨域問(wèn)題常見(jiàn)方法詳解

    Vue解決跨域問(wèn)題常見(jiàn)方法詳解

    這篇文章主要介紹了Vue解決跨域問(wèn)題常見(jiàn)方法,結(jié)合實(shí)例形式詳細(xì)分析了vue出現(xiàn)跨域問(wèn)題的原因,以及常見(jiàn)解決方案與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2023-06-06
  • Vue組件實(shí)例間的直接訪問(wèn)實(shí)現(xiàn)代碼

    Vue組件實(shí)例間的直接訪問(wèn)實(shí)現(xiàn)代碼

    在組件實(shí)例中,Vue提供了相應(yīng)的屬性,包括$parent、$children、$refs和$root,這些屬性都掛載在組件的this上。本文將詳細(xì)介紹Vue組件實(shí)例間的直接訪問(wèn),需要的朋友可以參考下
    2017-08-08
  • Vue的土著指令和自定義指令實(shí)例詳解

    Vue的土著指令和自定義指令實(shí)例詳解

    這篇文章主要介紹了Vue的土著指令和自定義指令的用法講解 ,需要的朋友可以參考下
    2018-02-02
  • ElementPlus 自定義封裝 el-date-picker 的快捷功能示例詳解

    ElementPlus 自定義封裝 el-date-picker 的快捷功能示例詳解

    文章討論了用戶對(duì)官網(wǎng)提供的案例不滿足快捷功能需求的情況,建議在外部自定義組件中導(dǎo)入并使用快捷內(nèi)容,以滿足用戶需求,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-12-12
  • VUE引入第三方j(luò)s包及調(diào)用方法講解

    VUE引入第三方j(luò)s包及調(diào)用方法講解

    今天小編就為大家分享一篇關(guān)于VUE引入第三方j(luò)s包及調(diào)用方法講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03

最新評(píng)論

施秉县| 遵化市| 西贡区| 巴马| 剑阁县| 百色市| 始兴县| 辰溪县| 祥云县| 福建省| 玉屏| 三门峡市| 罗源县| 原阳县| 保定市| 贡嘎县| 区。| 纳雍县| 泰和县| 林州市| 师宗县| 吉林省| 汝州市| 沛县| 铜梁县| 都匀市| 万载县| 郑州市| 邯郸市| 嘉禾县| 仙桃市| 锦州市| 天峨县| 青田县| 略阳县| 资溪县| 体育| 伊金霍洛旗| 德庆县| 长治县| 恩平市|