Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI)
一、序言
生產(chǎn)環(huán)境中Vue項(xiàng)目我們一般會(huì)部署在域名的子目錄下,在了解如何部署時(shí)我們先了解下Vue構(gòu)建相關(guān)的基礎(chǔ)知識(shí)。
首先Vue項(xiàng)目打包后其實(shí)就是個(gè)單頁(yè)應(yīng)用,這也是為什么第一次加載時(shí)會(huì)比較慢。
既然是單頁(yè)應(yīng)用,如果想在Nginx中指定前綴訪問(wèn)靜態(tài)資源和文件,需要在打包構(gòu)建時(shí)配置base路徑,目前Vue使用的構(gòu)建工具有Vite(針對(duì)Vue3)還有Vue CLI(基于Webpack,針對(duì)Vue2)。
同時(shí)Vue-Router實(shí)例化時(shí)如果歷史記錄模式為HTML5模式,也需要指定路由的base路徑,不然資源會(huì)訪問(wèn)失敗。
二、構(gòu)建工具配置
1、Vite打包配置
Vite目前是Vu3主流構(gòu)建工具,打包配置我們可以在vite.config.js中進(jìn)行修改,指定base配置即可,這里我們指定了base為/easy-wealth/,也就是說(shuō)所有的靜態(tài)資源都會(huì)帶上該前綴。
import {defineConfig} from 'vite';
import vue from '@vitejs/plugin-vue';
import legacy from '@vitejs/plugin-legacy';
import path from 'path';
// https://vitejs.dev/config/
export default defineConfig({
base: '/easy-wealth/',
plugins: [
vue(),
legacy({
targets: ['defaults', 'not IE 11'],
})
],
resolve: {
alias: {
'@': path.resolve(__dirname, './src')
}
}
});
2、Vue CLI打包配置
Vue CLI目前已經(jīng)處于維護(hù)狀態(tài),一般老項(xiàng)目可能還在用它來(lái)開(kāi)發(fā),Vue CLI打包時(shí)基于Webpack構(gòu)建。通過(guò)vue.config.js我們可以通過(guò)publicPath選項(xiàng)指定靜態(tài)資源的訪問(wèn)前綴,配置如下:
module.exports = {
publicPath: '/easy-wealth/',
outputDir: 'dist',
assetsDir: 'static',
lintOnSave: process.env.NODE_ENV !== 'production'
}
通過(guò)上述配置,打包后我們會(huì)發(fā)現(xiàn)index.html文件里所有的靜態(tài)資源訪問(wèn)路徑前都加上了/easy-wealth前綴。

三、Vue-Router配置
目前Vue-Router支持3種歷史記錄模式,分別是Hash模式、Memory模式和HTML5模式。如果我們指定歷史記錄模式為HTML5模式,那么一定要指定路由的base路徑,不然頁(yè)面訪問(wèn)會(huì)出現(xiàn)404。
const router = createRouter({
history: createWebHistory('/easy-wealth/'),
routes
});
export default router;
四、Nginx配置
在Nginx配置中,我們加了一項(xiàng)try_files回退路由配置,前面已經(jīng)說(shuō)過(guò)Vue項(xiàng)目是單頁(yè)面應(yīng)用,這項(xiàng)配置看起來(lái)有點(diǎn)復(fù)雜,但也容易理解,舉個(gè)例子:
當(dāng)訪問(wèn)http://test.com/easy-wealth/hwc時(shí),Nginx首先會(huì)去h5/easy-wealth/dist目錄下找名為hwc的目錄,以及該目錄下的文件,如果都沒(méi)有找到,則回退訪問(wèn)/easy-wealth/index.html,這時(shí)Nginx會(huì)在h5/easy-wealth/dist下找到名為index.html的文件。
location /easy-wealth {
alias h5/easy-wealth/dist;
try_files $uri $uri/ /easy-wealth/index.html;
}到此這篇關(guān)于Vue項(xiàng)目Nginx子目錄部署(Vite和Vue-CLI)的文章就介紹到這了,更多相關(guān)Vue Nginx子目錄部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- nginx找到默認(rèn)根目錄(root?html)的方法
- nginx如何配置vue項(xiàng)目history的路由模式(非根目錄)
- 通過(guò)nginx實(shí)現(xiàn)訪問(wèn)服務(wù)器指定目錄下圖片資源
- nginx 不同的訪問(wèn)路徑對(duì)應(yīng)項(xiàng)目不同的目錄的實(shí)現(xiàn)方法
- nginx設(shè)置資源請(qǐng)求目錄的方式詳解
- Nginx安裝完成沒(méi)有生成sbin目錄的解決方法
- Nginx本地目錄映射實(shí)現(xiàn)代碼實(shí)例
- nginx用正則表達(dá)式實(shí)現(xiàn)泛域名自動(dòng)匹配目錄的方法
- 深入理解Nginx中的sites-enabled目錄
相關(guān)文章
Vue動(dòng)態(tài)組件表格的實(shí)現(xiàn)代碼
這篇文章主要介紹了Vue動(dòng)態(tài)組件表格的實(shí)現(xiàn)代碼,包括框架結(jié)構(gòu)組件,文中還給大家封裝了幾個(gè)組件,有按鈕組件、圖片組件、滑動(dòng)開(kāi)關(guān),結(jié)合示例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10
Vue中插槽slot的使用方法與應(yīng)用場(chǎng)景詳析
這篇文章主要給大家介紹了關(guān)于Vue中插槽slot的使用方法與應(yīng)用場(chǎng)景的相關(guān)資料,插槽(Slot)是Vue提出來(lái)的一個(gè)概念,正如名字一樣,插槽用于決定將所攜帶的內(nèi)容,插入到指定的某個(gè)位置,從而使模板分塊,具有模塊化的特質(zhì)和更大的重用性,需要的朋友可以參考下2021-06-06
Vue中Element的table多選表格如何實(shí)現(xiàn)單選
這篇文章主要介紹了Vue中Element的table多選表格如何實(shí)現(xiàn)單選,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
vue中的局部過(guò)濾器和全局過(guò)濾器代碼實(shí)操
這篇文章主要分享的是vue中的局部過(guò)濾器和全局過(guò)濾器代碼實(shí)操,下面文章主要以代碼展現(xiàn),具有一的的知識(shí)參考性,需要的小伙伴可以參考一下2022-02-02
Vue的異步組件加載的實(shí)現(xiàn)方法小結(jié)
在 Vue 中,異步組件是指那些在需要時(shí)才會(huì)被加載的組件,與傳統(tǒng)的靜態(tài)組件不同,異步組件通過(guò)動(dòng)態(tài)加載的方式,可以有效地減少初始加載的資源和時(shí)間,在 Vue 中實(shí)現(xiàn)異步組件加載非常簡(jiǎn)單,開(kāi)發(fā)者有多種方法可以做到,本文給大家介紹了一些常用的實(shí)現(xiàn)方法2024-11-11
vue?點(diǎn)擊按鈕?路由跳轉(zhuǎn)指定頁(yè)面的實(shí)現(xiàn)方式
這篇文章主要介紹了vue?點(diǎn)擊按鈕?路由跳轉(zhuǎn)指定頁(yè)面的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04
Vue3組件異步更新和nextTick運(yùn)行機(jī)制源碼解讀
這篇文章主要為大家介紹了Vue3組件異步更新和nextTick運(yùn)行機(jī)制源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

