Vue項目打包部署全過程(history模式)
前提準備
我們需要準備一個vue項目(vue-cli3或vue-cli4)、一個nginx服務(wù)器
本教程講解的是vue-router中history模式的部署,完全適用于vue-cli3,4。vue-cli2需要進行略微改動
部署流程
- 配置vue.config.js中的publicPath
- 配置vue-router的模式為history
- 配置vue-router中的base(基態(tài)路由【與服務(wù)端配合】)
- 使用npm run build生成dist文件夾
- 配置nginx代理(進行生產(chǎn)環(huán)境下的反向代理,注意生產(chǎn)環(huán)境下devServer無效【或者你可以配置devserver的根目錄是dist都可以】)
- 配置nginx路由
vue.config.js
如果你的項目中沒有這個文件,直接在項目根目錄創(chuàng)建它即可
1.配置publicPath
這里我們配置publicPth為路由/vue/
module.exports = {
// /vue/這個名字你自己起,也可以用我這個
publicPath: process.env.NODE_ENV === "production" ? "/vue/" : "./",
outputDir:'dist',
}為了兼容各種情況,我強烈建議大家路由寫成/vue/而不是寫成/vue
vue-router
1.配置路由模式和基礎(chǔ)路由
export default new Router({
// history模式,需要和服務(wù)端配合才能在生產(chǎn)環(huán)境下正常使用
mode: 'history',
// 基本路由,這個名字可以自己起,但是要注意和vue.config.js里面publicPath所起的名字一致
base:'/vue/',
routes:[]
})npm run build
我們在vue項目根目錄下運行npm run build就可以進行項目的打包了。打包后會生成dist文件夾,把它放進nginx的html文件夾下即可
nginx
1.配置nginx代理
有些時候我們需要請求一些跨域服務(wù),在開發(fā)時,我們可以配置devServer的proxy實現(xiàn)跨域訪問。
但是在npm run build后,我們會發(fā)現(xiàn)代理無效。這是因為生產(chǎn)環(huán)境下的文件已經(jīng)脫離devServer了,所以自然代理就沒有用了,所以一般生產(chǎn)環(huán)境代理我們使用nginx去做
location /api/{
? ? proxy_pass ?http://121.36.94.221:6600/;
? ? index ?index.html index.htm;
}
location /info/{
? ? proxy_pass ?http://ckk.xiaoandcai.cn/;
? ? index ?index.html index.htm;
}假設(shè)我們的nginx服務(wù)器的端口號是8080,
那么我們做跨域請求時候只需要訪問:localhost:8080/api就行了,這樣做我們就相當(dāng)于訪問那個服務(wù)器下的資源
但是一般部署項目的時候我們不會發(fā)送axios去請求localhost:8080/api,我們會直接請求/api
舉個例子
//不會這樣做,因為部署服務(wù)器后地址要換成ip,不然會404
axios.get("localhost:8080/api")
//你可以選擇這樣做,但是我們不推薦
axios.get("ip:8080/api")
//我們推薦這樣做,讓axios根據(jù)相對路徑補全ip+端口,這樣比較省心【但是要注意你的項目要部署在nginx代理服務(wù)器下。如果你不部署的話相對路徑也是不行的,畢竟你都沒部署人家nginx服務(wù)器上,自然你的項目就不是nginx家的孩子,所以相對路徑的小名,nginx怎么能認識呢?】
axios.get("/api")2.配置nginx路由
location / {
root html;
index index.html index.htm;
autoindex on; #開啟nginx目錄瀏覽功能
autoindex_exact_size off; #文件大小從KB開始顯示
charset utf-8; #顯示中文
}
# 寫我們的路由暗號/vue
location /vue{
# alias后面寫項目所在目錄 xxxxxxx一定要注意,不能寫成D:\nginx\nginx-1.20.0\html\dist,要寫成斜杠/形式,否則會404
alias D:/nginx/nginx-1.20.0/html/dist;
charset utf-8; #顯示中文
}現(xiàn)在啟動nginx服務(wù)器輸入localhost:8080/vue就可以訪問我們的vue項目了
總結(jié)
到此這篇關(guān)于Vue項目打包部署的文章就介紹到這了,更多相關(guān)Vue項目打包部署內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于elementUI select控件綁定多個值(對象)
這篇文章主要介紹了關(guān)于elementUI select控件綁定多個值(對象),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-04-04
Vue中消息橫向滾動時setInterval清不掉的問題及解決方法
最近在做項目時,需要進行兩個組件聯(lián)動,一個輪詢獲取到消息,然后將其傳遞給另外一個組件進行橫向滾動展示,結(jié)果滾動的速度越來越快。接下來通過本文給大家分享Vue中消息橫向滾動時setInterval清不掉的問題及解決方法,感興趣的朋友一起看看吧2019-08-08
Vue.js實現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動賦值、表單自動取值)
今天小編就為大家分享一篇Vue.js實現(xiàn)雙向數(shù)據(jù)綁定方法(表單自動賦值、表單自動取值),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

