解讀vue分頁面打包方式
vue分頁面打包
最近了解了一些關(guān)于vue分頁面打包的方式,因為接觸的可能不是很深入,所以就簡單記錄一下
第一步
修改vue目錄結(jié)構(gòu),修改為下圖的方式
大致分為:
1、在src下創(chuàng)建一個存儲所有頁面的文件夾,
2、創(chuàng)建每個獨立頁面的文件夾,用來存儲src下所有的文件(例如:main.js,App.vue、store,router)等等這些文件,放到這個你創(chuàng)建好的文件夾中(相當于小型的vue項目)
3、每個獨立頁面都有一個這種小型的vue文件夾

第二步
修改配置文件,修改vue.config.js頁面如下圖:
為了防止頁面多是發(fā)生混亂,我新建了一個config文件夾(上圖目錄的config文件夾),用來修改頁面配置

這個pageConfig.js文件配置如下:
const config = {
pageA: {
entry: "./src/pages/pageA/main.js",// 入口文件
template: "public/index.html", // 模板html文件
filename: "pageA.html" // 修改打包后的html文件名
},
pageB: {
entry: "./src/pages/pageB/main.js",
template: "public/index.html",
filename: "pageB.html"
}
}
module.exports = config然后再vue.config.js文件中配置一下代碼
至于為什么要用三木判斷呢,是因為在項目打包時,打包獨立頁面需要有一層包裹,但是啟動項目時不需要,因為我在這里判斷了一下(因為沒有找到更好的解決方式,所以如果有好方法的小伙伴可以分享一下)
const config = require("./config/pageConfig.js");
const projectName = process.env.PROJECT_NAME;
module.exports = {
pages:projectName ? { index: config[projectName] } : config, // 打包時需要自定義文件名 啟動不需要
publicPath: './',
outputDir: 'dist/' + projectName + '/', // 打包后的文件夾名稱,默認dist
devServer: {
index: 'pageA.html'// 默認啟動頁面
}
}第三步
以上步完成后需要配置一下 package.json這個頁面,配置如下:
只需要修改一下打包方式即可,啟動的話我還是比較喜歡整個項目都啟動起來(因為看到有很多人都是單獨頁面啟動的,覺得很麻煩)
使用下面的corss-env的話是需要下一個插件的,可以使用:npm install --save-dev cross-env 方式進行下載
代碼中配置的 PROJECT_NAME=pageA 是自定義的,看你給頁面起的名字是什么就配置什么,獲取這個的方式就是上圖中 process.env.PROJECT_NAME 方法可以直接獲取到等號右邊的名字
"scripts": {
"build:pageA": "cross-env PROJECT_NAME=pageA vue-cli-service build",
"build:pageB": "cross-env PROJECT_NAME=pageB vue-cli-service build",
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},自此,配置完上面這些東西,你的項目就可以進行打包了,打包的方式就是你再pageage.json中配置的打包方式 我的方式就是 npm run build:pageA 或者 npm run build:pageB 打包出來的效果就是兩個單獨的頁面配置
然后還想說一下我發(fā)現(xiàn)的兩個注意事項
第一個
當我們使用UI框架時,最好使用按需引入的方式(大致可以想象一下,如果有多個頁面,每個頁面都使用整套的UI框架,會是什么場景,你的項目我估計就要炸了)
第二個
每個頁面直接如果想要相互跳轉(zhuǎn),使用的方式是 window.localhost.href = “頁面名字”或者 window.open("頁面名字") 這種方式,這是因為每一項目都相當于小型的vue項目,每個頁面都是獨立的,所以使用路由的方式跳轉(zhuǎn)是跳轉(zhuǎn)不過去的,不過我查到有相關(guān)的配置方式好像是可以的,這個大家就自己去查閱一下吧
總結(jié)
好了目前知道的也就這么多,以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
uniapp中如何基于vue3實現(xiàn)輸入驗證碼功能
本文介紹了如何使用uniapp和vue3創(chuàng)建一個手機驗證碼輸入框組件,通過封裝VerificationCodeInput.vue組件,并在父組件中引入,可以實現(xiàn)驗證碼輸入功能,適合需要增加手機驗證碼驗證功能的開發(fā)者參考使用2024-09-09

