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

Vue項(xiàng)目分包打包配置(包含dev)完整過(guò)程

 更新時(shí)間:2023年06月08日 10:52:11   作者:管小姐的斐波那契  
最近接到一個(gè)需求,公司需要對(duì)vue項(xiàng)目實(shí)現(xiàn)線上打包,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目分包打包配置(包含dev)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

今天領(lǐng)導(dǎo)要求支援某項(xiàng)目的分包配置,emmm,在參考了公司其他項(xiàng)目的分包操作后,依葫蘆畫(huà)瓢,中間也踩了好幾個(gè)坑,簡(jiǎn)單記錄下過(guò)程。

一、拉代碼、安裝依賴

哈哈哈,上來(lái)就踩坑了,我拉了代碼后,直接哐哐整,然后一堆依賴報(bào)錯(cuò),我才發(fā)現(xiàn),同事新增了依賴包,我并不知道,然后就乖乖安裝依賴吧。此處要特別強(qiáng)調(diào)一下,***沒(méi)有cross-env 這個(gè)依賴的,記得要安裝一下,沒(méi)有cross-env 這個(gè)依賴的,記得要安裝一下,沒(méi)有cross-env 這個(gè)依賴的,記得要安裝一下,***重要的事情說(shuō)三遍,不安的話分包整不了。shell命令貼上了:npm install --save-dev cross-env 安裝成功后 package.json里面會(huì)多"cross-env": “^7.0.3”,配置項(xiàng),那就對(duì)了.如果實(shí)在不行,要不然你就試試全局安裝吧,npm install -g cross-env,反正全局安裝肯定是可以的,

二、配置環(huán)境變量

這個(gè)也是個(gè)坑坑啊,我要改的項(xiàng)目沒(méi)有配置環(huán)境變量,我一開(kāi)始沒(méi)發(fā)現(xiàn),后來(lái)死活不加載不同環(huán)境下對(duì)應(yīng)的路由,才發(fā)現(xiàn)是這的坑。還有打包目錄名字可配可不配,不過(guò)建議配置上。

vue.config.js中如下配置

 let projectName = process.env.PROJECT_NAME || "All";  //獲取名稱(chēng)
module.exports = {
  publicPath: './',
  outputDir: "dist/" + projectName + "/", //打包后的項(xiàng)目目錄名稱(chēng),建議這樣修改
  productionSourceMap: false,
  lintOnSave: false,
  devServer: {
     //自己公司項(xiàng)目自己配置哈
  },
  chainWebpack: config => {
    // 設(shè)置環(huán)境變量
    config.plugin("define").tap(args => {
      args[0]["process.env"].PROJECT_NAME = JSON.stringify(
        process.env.PROJECT_NAME
      );
      return args;
    });
  }
}

三、拆路由

把項(xiàng)目中router.js中的要分包的路由分別拆到不同的文件中,例如我圖中就拆了前后9個(gè),后續(xù)不同的打包命令,就會(huì)加載這九個(gè)文件中的對(duì)應(yīng)的路由。此處有個(gè)疑問(wèn),就是能不能拆分子路由的問(wèn)題,大家可以試試。我是把一個(gè)模塊的父子路由打包帶走的。此處就放兩個(gè)文件路由大家參考一下

//sign.js
export default[
  {
    path: "/main",
    name: "main",
    meta: { cachePage: true },
    component: () => import("@/views/main/main.vue"),
    children: [
      {
        path: "/other",
        name: "other",
        component: () => import("@/views/login/other"),
      },
      /* 貸款簽約 */
      {
        path: "/loanSigning",
        name: "loanSigning",
        meta: { cachePage: true, showMain: true },
        component: () => import("@/views/loanSigning/index"),
      },
      {
        path: "/loanSigningEdit",
        name: "loanSigningEdit",
        meta: { showBack: true },
        component: () => import("@/views/loanSigning/loanSigningEdit"),
      },
      {
        path: "/loanSigningRead",
        name: "loanSigningRead",
        meta: { showBack: true },
        component: () => import("@/views/loanSigning/loanSigningRead"),
      },  
    ]
    }
]
```javascript
```javascript
//track.js
export default[
  {
    path: "/main",
    name: "main",
    meta: { cachePage: true },
    component: () => import("@/views/main/main.vue"),
    children: [
      {
        path: "/other",
        name: "other",
        component: () => import("@/views/login/other"),
      },
      /* 軌跡視圖 */
      {
        path: "/trackView",
        name: "mobileMarketing",
        meta: { cachePage: true, showMain: true },
        component: () => import("@/views/trackView/index"),
      },
      {
        path: "/trackViewAdd",
        name: "trackViewAdd",
        meta: { showBack: true },
        component: () => import("@/views/trackView/trackViewAdd"),
      }, 
    ]
    }
]

四、配置config.js文件

config.js主要是判斷不同的環(huán)境下,加載剛才拆的那九個(gè)不同的路由

//config.js
let options={
    "routersName":[],//路由文件名列表
    "menuFlag":"",//顯示的功能列表標(biāo)識(shí)
}
if(process.env.PROJECT_NAME=='All'){
    options.menuFlag="All"
    options.routersName=[
        ...require("@/plugins/vueRouter/all.js").default
    ]
}else if(process.env.PROJECT_NAME=='potential'){
    options.menuFlag="potential"
    options.routersName=[
        ...require("@/plugins/vueRouter/potential.js").default,
    ]   
}else if(process.env.PROJECT_NAME=='mobile'){  
    options.menuFlag="mobile"
    options.routersName=[
        ...require("@/plugins/vueRouter/mobile.js").default,
    ]   
}else if(process.env.PROJECT_NAME == 'credit'){
    options.menuFlag="credit"
    options.routersName=[
        ...require("@/plugins/vueRouter/credit.js").default,
    ]   
}else if(process.env.PROJECT_NAME == 'loan'){
    options.menuFlag="loan"
    options.routersName=[
        ...require("@/plugins/vueRouter/loan.js").default,
    ]   
}else if(process.env.PROJECT_NAME == 'sign'){
    options.menuFlag="sign"
    options.routersName=[
        ...require("@/plugins/vueRouter/sign.js").default,
    ]   
}else if(process.env.PROJECT_NAME == 'track'){
    options.menuFlag="track"
    options.routersName=[
        ...require("@/plugins/vueRouter/track.js").default,
    ] 
}else if(process.env.PROJECT_NAME == 'approval'){
    options.menuFlag="approval"
    options.routersName=[
        ...require("@/plugins/vueRouter/approval.js").default,
    ] 
}else if(process.env.PROJECT_NAME == 'main'){
    options.menuFlag="main"
    options.routersName=[
        ...require("@/plugins/vueRouter/main.js").default,
    ] 
}
export default options

五、修改router.js

//router.js
import Vue from "vue";
import VueRouter from "vue-router";
import store from "@/plugins/vuex/store";
import config from "../../config"   //這個(gè)路徑要以你的項(xiàng)目路徑來(lái)哈,自行修改
Vue.use(VueRouter);
let routes=[
  { path: "/", name: "index", redirect: "/login" },
  {
    path: "/login",
    name: "login",
    meta: { cachePage: true },
    component: () => import("@/views/login/login.vue"),
  }
  //要拆包的那些路徑,都要?jiǎng)h了哈,不然分包就分個(gè)寂寞啦?。。。。。。。?
  ]
routes=[...routes,...config.routersName] //路由表合并
console.log(routes,'routerjs中本身的路由')
console.log(config,'config中獲取的路由')
console.log(process.env.PROJECT_NAME,'環(huán)境變量')
const router = new VueRouter({
  // mode: 'hash',
  base: process.env.BASE_URL,
  routes
});
//如果你的項(xiàng)目中有其他的邏輯  再自行添加哈
// ...........其他業(yè)務(wù)邏輯代碼

在合并路由表那塊 ,我本來(lái)想試試子路由單獨(dú)拿出來(lái),父路由還放在router.js中的,但是我感覺(jué)往children里面塞,也不夠優(yōu)雅,就索性把 path: "/main"這個(gè)父路由和children里的子路由都拆走了

六、配置package.json

終于到了這一步,臨門(mén)一腳了,這一步就是配置shell命令了

為了方便復(fù)制,我把package.json里scripts里面的命令代碼給大家貼出來(lái),其他的配置應(yīng)該不用我貼了吧

//package.json中的命令
 "scripts": {
    "dev": "set NODE_OPTIONS=--openssl-legacy-provider && cross-env PROJECT_NAME=All vue-cli-service serve",
    "dev:main": "cross-env PROJECT_NAME=main vue-cli-service serve",
    "dev:potential": "cross-env PROJECT_NAME=potential vue-cli-service serve",
    "dev:mobile": "cross-env PROJECT_NAME=mobile vue-cli-service serve",
    "dev:credit": "cross-env PROJECT_NAME=credit vue-cli-service serve",
    "dev:loan": "cross-env PROJECT_NAME=loan vue-cli-service serve",
    "dev:sign": "cross-env PROJECT_NAME=sign vue-cli-service serve",
    "dev:track": "cross-env PROJECT_NAME=track vue-cli-service serve",
    "dev:approval": "cross-env PROJECT_NAME=approval vue-cli-service serve",
    "build": "cross-env PROJECT_NAME=All vue-cli-service build",
    "build:potential": "cross-env PROJECT_NAME=potential vue-cli-service build",
    "build:main": "cross-env PROJECT_NAME=main vue-cli-service build",
    "build:mobile": "cross-env PROJECT_NAME=mobile vue-cli-service build",
    "build:credit": "cross-env PROJECT_NAME=credit vue-cli-service build",
    "build:loan": "cross-env PROJECT_NAME=loan vue-cli-service build",
    "build:sign": "cross-env PROJECT_NAME=sign vue-cli-service build",
    "build:track": "cross-env PROJECT_NAME=track vue-cli-service build",
    "build:approval": "cross-env PROJECT_NAME=approval vue-cli-service build",
    "lint": "vue-cli-service lint"
  },

好了,運(yùn)行不同的命令試試吧。我反反復(fù)復(fù)有些莫名的報(bào)錯(cuò),重裝cross-env也反復(fù)好幾次,全局的,局部都試過(guò)。再比如 dev 不行,dev:main就可以,我就刪除了node-modules,重新下載了依賴,就可以了。 呼~(yú)~~~ 終于搞定了,希望大家能少走一些坑,拜拜~~~

總結(jié)

到此這篇關(guān)于Vue項(xiàng)目分包打包配置(包含dev)的文章就介紹到這了,更多相關(guān)Vue分包打包配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vuex中mutations的用法及說(shuō)明

    Vuex中mutations的用法及說(shuō)明

    這篇文章主要介紹了Vuex中mutations的用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Vue動(dòng)態(tài)樣式綁定實(shí)例詳解

    Vue動(dòng)態(tài)樣式綁定實(shí)例詳解

    眾所周知vue是操作dom元素的,那么如果有元素要?jiǎng)討B(tài)綁定樣式,這種需求,還是要通過(guò)改變數(shù)據(jù)來(lái)改變視圖的樣式,下面這篇文章主要給大家介紹了關(guān)于Vue動(dòng)態(tài)樣式綁定的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue?基于?vuedraggable?實(shí)現(xiàn)選中、拖拽、排序效果

    Vue?基于?vuedraggable?實(shí)現(xiàn)選中、拖拽、排序效果

    這篇文章主要介紹了Vue?基于?vuedraggable?實(shí)現(xiàn)選中、拖拽、排序效果,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • axios對(duì)請(qǐng)求各種異常情況處理的封裝方法

    axios對(duì)請(qǐng)求各種異常情況處理的封裝方法

    今天小編就為大家分享一篇axios對(duì)請(qǐng)求各種異常情況處理的封裝方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • vue.config.js中配置分包策略及常見(jiàn)的配置選項(xiàng)

    vue.config.js中配置分包策略及常見(jiàn)的配置選項(xiàng)

    在Vue.js中分包(Code Splitting)是一種將應(yīng)用程序代碼拆分為不同的塊或包的技術(shù),從而在需要時(shí)按需加載這些包,下面這篇文章主要給大家介紹了關(guān)于vue.config.js中配置分包策略及常見(jiàn)的配置選項(xiàng)的相關(guān)資料,需要的朋友可以參考下
    2024-02-02
  • vue3實(shí)現(xiàn)H5表單驗(yàn)證組件的示例

    vue3實(shí)現(xiàn)H5表單驗(yàn)證組件的示例

    本文主要介紹了vue3實(shí)現(xiàn)H5表單驗(yàn)證組件的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • VUE 實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板的兩種方法

    VUE 實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板的兩種方法

    這篇文章主要介紹了VUE 實(shí)現(xiàn)復(fù)制內(nèi)容到剪貼板功能,本文通過(guò)兩種方法,給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04
  • 如何解決前端使用Axios時(shí)的跨域問(wèn)題

    如何解決前端使用Axios時(shí)的跨域問(wèn)題

    這篇文章主要介紹了如何解決前端使用Axios時(shí)的跨域問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Vue3刷新頁(yè)面報(bào)錯(cuò)404的解決方法

    Vue3刷新頁(yè)面報(bào)錯(cuò)404的解決方法

    本文主要介紹了Vue3刷新頁(yè)面報(bào)錯(cuò)404的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue cli 3.x 項(xiàng)目部署到 github pages的方法

    vue cli 3.x 項(xiàng)目部署到 github pages的方法

    這篇文章主要介紹了vue cli 3.x 項(xiàng)目部署到 github pages的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-04-04

最新評(píng)論

苍南县| 枣庄市| 嘉禾县| 永登县| 阳高县| 永年县| 甘孜| 文化| 禹城市| 图木舒克市| 克拉玛依市| 军事| 屏东市| 永吉县| 文化| 雷山县| 乾安县| 札达县| 洛浦县| 清水河县| 遵化市| 射洪县| 缙云县| 鸡泽县| 施甸县| 舞阳县| 乌拉特中旗| 伊通| 怀集县| 宜阳县| 藁城市| 柳州市| 洱源县| 深州市| 湖北省| 历史| 舟山市| 慈利县| 开阳县| 石楼县| 上饶县|