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

vue 項(xiàng)目打包通過(guò)命令修改 vue-router 模式 修改 API 接口前綴

 更新時(shí)間:2018年06月13日 11:51:45   作者:Miss_Liang  
這篇文章主要介紹了vue 項(xiàng)目打包通過(guò)命令修改 vue-router 模式 修改 API 接口前綴的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

需求說(shuō)明:

在開(kāi)發(fā) vue 項(xiàng)目的過(guò)程中遇到的需求是要把 api 接口前綴暴露在命令行,通過(guò) npm run build apiUrl 即可修改接口入口,用于從 docker 部署到不同的測(cè)試服務(wù)器上,其次是路由模式的問(wèn)題,部署到測(cè)試服務(wù)器上的需要是 history 模式,但是產(chǎn)品是用 electron + vue 開(kāi)發(fā)的桌面應(yīng)用,electron 硬性要求 vue-router 的路由模式是 hash 模式,所以命令行需新增一個(gè)配置項(xiàng) mode ,mode 可選值有 history 、hash

最終結(jié)果:

npm run build '' hash  --->  使用源碼中寫(xiě)死的 api 入口 ,vue-router 模式是 hash 模式

npm run build https://192.168.166.101:8444 history  --->  使用 https://192.168.166.101:8444 作為 api 入口,vue-router 模式是 history 模式

實(shí)現(xiàn):

1.新建 base/config.js 用于存放從 webpack.prod.conf.js 里寫(xiě)入的數(shù)據(jù)

2.新建 base/index.js 用于將從 base/config.js 里導(dǎo)出的 config 掛載在 Vue 原型的 $config 對(duì)象上

3.新建 build/apiConfig.js 用于封裝 fs-extra 對(duì)文件的讀寫(xiě)

4.在 webpack.prod.conf.js 將命令行中敲入的命令寫(xiě)入 base/config.js 里

5.在 main.js 中將 base/index.js 拋出的 install 掛載到 Vue 上

6.在 Login.vue 和 router/index.js 里引入 this.$config.host 以及 base/config.js 即可

關(guān)鍵代碼:

2.新建 base/index.js 用于將從 base/config.js 里導(dǎo)出的 config 掛載在 Vue 原型的 $config 對(duì)象上

// 將 config 封裝成插件 
// example this.$config 
// 導(dǎo)入所有接口 
import config from './config'; 
const install = Vue => { 
  if(install.installed) 
    return; 
  install.installed = true; 
  Object.defineProperties(Vue.prototype, { 
    // 此處掛載在 Vue 原型的 $config 對(duì)象上 
    $config:{ 
      get(){ 
        return config; 
      } 
    } 
  }) 
} 
export default install; 

3.新建 build/apiConfig.js 用于封裝 fs-extra 對(duì)文件的讀寫(xiě)

const fs = require("fs-extra"); 
const path = require("path"); 
var _path = path.join(__dirname, "../src/base/host.js"); 
if (!fs.pathExistsSync(_path)) { 
 // 如果不存在路徑 
 fs.mkdirpSync(_path); // 就創(chuàng)建 
} 
module.exports = { 
 read: function() { 
  let filesData = fs.readFileSync(_path, "utf-8", function(e, data) { 
   if (e) throw e; 
   return data; 
  }); 
  return filesData; 
 }, 
 write: function(writeStr) { 
  fs.open(_path, "w", function(e, fd) { 
   if (e) throw e; 
   fs.write(fd, writeStr, 0, "utf8", function(e) { 
    if (e) throw e; 
    fs.closeSync(fd); 
   }); 
  }); 
 } 
}; 

4.在 webpack.prod.conf.js 將命令行中敲入的命令寫(xiě)入 base/config.js 里  

const apiConfig = require('./apiConfig'); 
apiConfig.read(); 
apiConfig.write( 
 `export const host = '${process.argv[2]}'; 
  export const mode = '${process.argv[3]}'; 
 // 默認(rèn)全部倒出 
 // 根絕需要進(jìn)行  
 export default { 
 host, 
 mode 
 }` 
); 

5.在 main.js 中將 base/index.js 拋出的 install 掛載到 Vue 上

import host from './base/index'; 
Vue.use(host); 

6.在 Login.vue 里引入 this.$config.host

this.$store.set("presetPort", this.$config.host ? this.$config.host.split(":")[2] : "443"); // 設(shè)置預(yù)置端口 
this.$store.set("presetHost", this.$config.host ? this.$config.host.split(":")[0] : "https"); // 設(shè)置預(yù)置協(xié)議 
this.$store.set("presetIP", this.$config.host ? this.$config.host.split(":")[1].split("/")[2] : "192.168.166.109"); // 設(shè)置預(yù)置IP 

6.在 router/index.js 里引入 base/config.js

import { mode } from '@/base/config'; 
let router = null; 
let routes = [ 
 { 
  path: 'xxx', 
  name: 'xxx', 
  component: xxx 
 }...]; 
mode === 'history' ? routes.push({path:"*",component:xxx}) : ""; 
router = new Router({ 
 mode: mode, 
 routes:routes 
}) 
export default router; 

總結(jié)

以上所述是小編給大家介紹的vue 項(xiàng)目打包通過(guò)命令修改 vue-router 模式 修改 API 接口前綴,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 解決vue prop傳值default屬性如何使用,為何不生效的問(wèn)題

    解決vue prop傳值default屬性如何使用,為何不生效的問(wèn)題

    這篇文章主要介紹了解決vue prop傳值default屬性如何使用,為何不生效的問(wèn)題。具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 基于vue實(shí)現(xiàn)web端超大數(shù)據(jù)量表格的卡頓解決

    基于vue實(shí)現(xiàn)web端超大數(shù)據(jù)量表格的卡頓解決

    這篇文章主要介紹了基于vue實(shí)現(xiàn)web端超大數(shù)據(jù)量表格的卡頓解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • vue2實(shí)現(xiàn)帶有阻尼下拉加載的功能

    vue2實(shí)現(xiàn)帶有阻尼下拉加載的功能

    這篇文章主要為大家介紹了vue2實(shí)現(xiàn)帶有阻尼下拉加載的功能示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Vue在外部配置打包文件夾名稱和url地址前綴

    Vue在外部配置打包文件夾名稱和url地址前綴

    本文主要介紹了Vue在外部配置打包文件夾名稱和url地址前綴,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vue離開(kāi)當(dāng)前頁(yè)面觸發(fā)的函數(shù)代碼

    vue離開(kāi)當(dāng)前頁(yè)面觸發(fā)的函數(shù)代碼

    這篇文章主要介紹了vue離開(kāi)當(dāng)前頁(yè)面觸發(fā)的函數(shù)代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • Vue之Axios的異步通信詳解

    Vue之Axios的異步通信詳解

    這篇文章主要為大家詳細(xì)介紹了Vue之Axios的異步通信,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-03-03
  • 如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級(jí)教程)

    如何使用electron將vue項(xiàng)目打包成.exe文件(保姆級(jí)教程)

    本文給大家介紹如何使用electron將vue項(xiàng)目打包成.exe文件,大家要注意一下vue2項(xiàng)目,使用的vue-element-admin框架,用electron打包成.exe文件,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2024-03-03
  • vue實(shí)現(xiàn)點(diǎn)擊追加選中樣式效果

    vue實(shí)現(xiàn)點(diǎn)擊追加選中樣式效果

    今天小編就為大家分享一篇vue實(shí)現(xiàn)點(diǎn)擊追加選中樣式效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • vue @vuelidate父子組件綁定注意事項(xiàng)

    vue @vuelidate父子組件綁定注意事項(xiàng)

    Vue@vuelidate父子組件驗(yàn)證時(shí),不能直接綁定,需在子組件驗(yàn)證方法內(nèi)部進(jìn)行綁定,以避免父組件驗(yàn)證時(shí)包含子組件的驗(yàn)證
    2025-02-02
  • Element Input輸入框的使用方法

    Element Input輸入框的使用方法

    這篇文章主要介紹了Element Input輸入框的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評(píng)論

龙岩市| 广汉市| 若羌县| 湖州市| 睢宁县| 青冈县| 晋中市| 西充县| 双江| 昭平县| 中牟县| 将乐县| 通河县| 灵宝市| 长春市| 泸州市| 古田县| 高要市| 和林格尔县| 临武县| 穆棱市| 德钦县| 静海县| 梅河口市| 资源县| 景谷| 满洲里市| 林周县| 桐梓县| 元谋县| 绥化市| 岱山县| 元阳县| 会同县| 西宁市| 丰镇市| 烟台市| 闽侯县| 漯河市| 稷山县| 安多县|