精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue 項目多級路徑部署終極指南:基于環(huán)境變量的統(tǒng)一配置方案

開發(fā)
本文將提供一個完整的解決方案,從環(huán)境變量配置到Nginx部署,確保你的Vue項目可以靈活部署在任何路徑下。

本文將提供一個完整的解決方案,從環(huán)境變量配置到Nginx部署,確保你的Vue項目可以靈活部署在任何路徑下。

一、環(huán)境變量統(tǒng)一配置

1. 環(huán)境變量配置文件

我們首先在項目根目錄創(chuàng)建以下環(huán)境文件:

# .env.development 
VUE_APP_BASE_URL=/
VUE_APP_PUBLIC_PATH=/
VUE_APP_API_BASE_URL=/api/
# .env.production 
VUE_APP_BASE_URL=/department/project/
VUE_APP_PUBLIC_PATH=/department/project/
VUE_APP_API_BASE_URL=/department/project/api/

關鍵點說明:

  • VUE_APP_BASE_URL: 路由基礎路徑
  • VUE_APP_PUBLIC_PATH: 靜態(tài)資源基礎路徑
  • VUE_APP_API_BASE_URL: API請求基礎路徑

二、Vue項目核心配置

1. vue.config.js 完整配置

const path = require('path')

module.exports = {
// 靜態(tài)資源路徑
publicPath: process.env.VUE_APP_PUBLIC_PATH || '/',

// 輸出目錄
outputDir: 'dist',

// 靜態(tài)資源目錄
assetsDir: 'static',

// 文件名哈希
filenameHashing: true,

// webpack配置
chainWebpack: config => {
    // 設置publicPath
    config.output
      .publicPath(process.env.VUE_APP_PUBLIC_PATH || '/')
    
    // 圖片處理
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => {
        options.limit = 8192
        options.fallback = {
          loader: 'file-loader',
          options: {
            name: 'static/img/[name].[hash:8].[ext]',
            publicPath: process.env.VUE_APP_PUBLIC_PATH || '/'
          }
        }
        return options
      })
  },

// 開發(fā)服務器配置
devServer: {
    // 支持history模式
    historyApiFallback: {
      disableDotRule: true,
      rewrites: [
        { 
          from: newRegExp('^.*'), 
          to: path.posix.join(process.env.VUE_APP_PUBLIC_PATH || '/', 'index.html') 
        }
      ]
    },
    
    // 代理配置
    proxy: {
      [process.env.VUE_APP_API_BASE_URL]: {
        target: 'http://your-api-server.com',
        changeOrigin: true,
        pathRewrite: {
          [`^${process.env.VUE_APP_API_BASE_URL}`]: ''
        }
      }
    }
  },

// 生產(chǎn)環(huán)境關閉sourcemap
productionSourceMap: false
}

三、路由配置優(yōu)秀實踐

1. 路由配置文件 (src/router/index.js)

import Vue from'vue'
import VueRouter from'vue-router'

Vue.use(VueRouter)

// 獲取基礎路徑,確保不以斜杠結尾
const BASE_PATH = (process.env.VUE_APP_BASE_URL || '/').replace(/\/$/, '')

const routes = [
  {
    // 根路徑重定向
    path: '',
    redirect: 'home'
  },
  {
    // 注意:不要以斜杠開頭
    path: 'home',
    component: () =>import('@/views/Home.vue'),
    name: 'home',
    meta: { title: '首頁' }
  },
  {
    path: 'about',
    component: () =>import('@/views/About.vue'),
    name: 'about',
    meta: { title: '關于我們' }
  },
  {
    path: '*',
    component: () =>import('@/views/NotFound.vue'),
    name: 'not-found',
    meta: { title: '頁面不存在' }
  }
]

const router = new VueRouter({
mode: 'history',
base: BASE_PATH,
  routes,

// 滾動行為
  scrollBehavior(to, from, savedPosition) {
    if (savedPosition) {
      return savedPosition
    } else {
      return { x: 0, y: 0 }
    }
  }
})

router.beforeEach((to, from, next) => { 
document.title = to.meta.title || '默認標題'

  next()
})

exportdefault router

四、資源加載與API請求規(guī)范

1. 資源加載工具類 (src/utils/resource.js)

/**
 * 獲取靜態(tài)資源完整URL
 * @param {string} relativePath 相對路徑
 * @returns {string} 完整URL
 */
exportconst getAssetUrl = (relativePath) => {
const baseUrl = process.env.VUE_APP_PUBLIC_PATH || '/'
return`${baseUrl.replace(/\/$/, '')}/${relativePath.replace(/^\//, '')}`
}

/**
 * 獲取API完整URL
 * @param {string} endpoint API端點
 * @returns {string} 完整API URL
 */
exportconst getApiUrl = (endpoint) => {
const baseUrl = process.env.VUE_APP_API_BASE_URL || '/api/'
return`${baseUrl.replace(/\/$/, '')}/${endpoint.replace(/^\//, '')}`
}

2. Axios實例配置 (src/utils/request.js)

import axios from'axios'
import { getApiUrl } from'./resource'

// 創(chuàng)建axios實例
const service = axios.create({
baseURL: process.env.VUE_APP_API_BASE_URL,
timeout: 10000
})

// 請求攔截器
service.interceptors.request.use(
config => {
    // 可以在這里添加token等
    // config.headers['Authorization'] = getToken()
    return config
  },
  error => {
    returnPromise.reject(error)
  }
)

// 響應攔截器
service.interceptors.response.use(
response => {
    return response.data
  },
  error => {
    returnPromise.reject(error)
  }
)

exportdefault service

五、Nginx服務器配置

1. 基礎Nginx配置

server {
    listen       80;
    server_name  example.com;

    # 靜態(tài)資源緩存設置
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 1y;
        add_header Cache-Control "public, no-transform";
    }

    # 項目部署路徑 - 使用環(huán)境變量中的路徑
    location /department/project/ {
        alias   /var/www/html/department/project/dist/;
        try_files $uri $uri/ /department/project/index.html;

        # 開啟gzip壓縮
        gzip on;
        gzip_types text/plain text/css application/json application/javascript text/xml;

        # 安全頭設置
        add_header X-Frame-Options "SAMEORIGIN";
        add_header X-Content-Type-Options "nosniff";
        add_header X-XSS-Protection "1; mode=block";
    }

    # API代理
    location /department/project/api/ {
        proxy_pass http://api-server/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

2. HTTPS增強配置

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/ssl/certs/example.com.crt;
    ssl_certificate_key /etc/ssl/private/example.com.key;

    # SSL優(yōu)化配置
    ssl_session_timeout 1d;
    ssl_session_cache shared:MozSSL:10m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    location /department/project/ {
        alias /var/www/html/department/project/dist/;
        try_files $uri $uri/ /department/project/index.html;

        # 安全頭
        add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload";
        add_header Content-Security-Policy "default-src 'self'";
    }
}

六、完整部署流程

1. 構建與部署腳本

#!/bin/bash

# 設置環(huán)境
ENV="production"
DEPLOY_PATH="/var/www/html/department/project"

# 安裝依賴
npm install

# 構建項目
npm run build:${ENV}

# 同步文件到服務器
rsync -avz --delete dist/ user@server:${DEPLOY_PATH}/dist/

# 重啟Nginx
ssh user@server "sudo systemctl restart nginx"

echo"Deployment completed!"

2. 多環(huán)境構建腳本 (package.json)

{
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "build:dev": "vue-cli-service build --mode development",
    "build:test": "vue-cli-service build --mode test",
    "build:production": "vue-cli-service build --mode production",
    "lint": "vue-cli-service lint"
  }
}

七、常見問題解決方案

1. 頁面刷新404問題

解決方案:

  • 確保Nginx配置中包含正確的try_files指令
  • 檢查Vue路由的base配置是否與環(huán)境變量一致
  • 驗證publicPath配置是否正確

2. 靜態(tài)資源加載失敗

排查步驟:

  • 檢查瀏覽器開發(fā)者工具中的網(wǎng)絡請求
  • 確認請求路徑是否包含正確的基礎路徑
  • 驗證Nginx的alias路徑是否正確
  • 檢查文件權限:chmod -R 755 /var/www/html

3. API請求路徑錯誤

最佳實踐:

  • 使用axios實例配置baseURL
  • 確保API路徑與VUE_APP_API_BASE_URL一致
  • 開發(fā)環(huán)境使用代理,生產(chǎn)環(huán)境使用絕對路徑

八、性能優(yōu)化建議

資源壓縮:

  • 開啟Nginx gzip壓縮
  • 使用Brotli壓縮(需要Nginx支持)
  • 壓縮圖片資源

緩存策略:

location ~* \.(js|css)$ {
    expires 365d;
    add_header Cache-Control "public";
}

location ~* \.(jpg|jpeg|png|gif|ico)$ {
    expires 30d;
    add_header Cache-Control "public";
}

代碼分割:

// 使用動態(tài)導入實現(xiàn)路由懶加載
component: () => import('@/views/Home.vue')

九、總結

這種方案在多個大型項目中得到驗證,能夠滿足企業(yè)級應用的部署需求。希望本指南能幫助你解決Vue項目在多級路徑下的部署問題!

責任編輯:趙寧寧 來源: 大前端歷險記
相關推薦

2009-07-03 16:46:07

JSP環(huán)境變量

2021-11-29 10:25:16

Linux環(huán)境變量命令

2011-12-21 10:46:17

Java

2010-10-11 09:25:31

MySQL環(huán)境變量

2009-06-29 15:06:23

環(huán)境變量配置Java

2011-06-14 09:04:52

Qt 環(huán)境變量

2010-09-16 15:33:48

Java環(huán)境變量

2009-06-16 15:57:53

Java環(huán)境變量

2015-11-08 14:44:48

2015-03-05 11:28:51

Linux桌面環(huán)境終極指南

2009-12-11 15:06:37

Linux系統(tǒng)

2010-01-11 17:39:31

Fedora 8配置J

2021-06-09 08:21:14

Webpack環(huán)境變量前端

2020-11-23 15:21:12

Linux環(huán)境變量

2010-04-06 12:45:28

CentOS系統(tǒng)

2020-12-28 10:50:09

Linux環(huán)境變量命令

2011-05-31 13:41:50

Android 環(huán)境變量

2009-06-15 16:28:30

JAVA環(huán)境變量

2020-12-18 09:15:16

LinuxVue命令

2017-03-07 19:30:54

Windows 7Windowsjava
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品一| 国产色无码精品视频国产| 性爽视频在线| 国产欧美日韩久久| 亚洲一区二区免费| 懂色av.com| 精品成av人一区二区三区| 欧美在线|欧美| 丁香婷婷综合激情| 日韩电影免费| 久久成人免费电影| 午夜精品一区二区三区在线视| 丝袜美腿中文字幕| 国产精品久久久久久av公交车| 亚洲国产另类av| 日韩精品资源| 亚洲精品视频专区| 美腿丝袜亚洲三区| 性欧美亚洲xxxx乳在线观看| 亚洲一级片在线播放| 中文字幕亚洲在线观看 | 欧美日韩亚洲在线 | 国产精品13p| 国产精品欧美一区二区三区| 国产精品毛片一区视频| 一级黄色片在线观看| 99热在线精品观看| 欧美成人精品不卡视频在线观看| 日韩网站在线播放| 视频精品一区二区三区| 欧美在线播放高清精品| 日本日本19xxxⅹhd乱影响| 免费av网站在线看| 久久久精品tv| 国产亚洲欧美一区二区三区| 国产男男gay体育生白袜| 久久精品女人天堂| 91黑丝高跟在线| 中文字幕手机在线观看| 日韩精品影视| 在线视频免费一区二区| 搡老熟女老女人一区二区| 精品一区视频| 欧美高清视频一二三区 | 亚洲精品白虎| 免费黄网站在线观看| 成人污污视频在线观看| 亚洲综合国产精品| 国产一区二区在线播放视频| 琪琪一区二区三区| 欧洲中文字幕国产精品| 99热只有这里有精品| 黄色国产精品| 久久久久久成人| 欧美日韩国产精品一区二区三区| 99re久久最新地址获取| 国产一区二区三区毛片| 欧美三级视频网站| 国产一区日韩| 国产一区二区日韩精品欧美精品| 性欧美13一14内谢| 免费视频亚洲| 在线成人免费网站| 亚洲女优在线观看| 日韩电影免费网站| 色偷偷偷亚洲综合网另类| www.4hu95.com四虎| 欧美限制电影| 日韩最新中文字幕电影免费看| 国产一区二区三区四区五区六区| 欧美禁忌电影网| 亚洲一级一级97网| 极品尤物一区二区| 欧美激情777| 欧美成aaa人片在线观看蜜臀| 波多野结衣爱爱视频| 国内精品久久久久久久97牛牛 | 日韩激情av在线免费观看| 中文字幕av观看| 国产中文精品久高清在线不| 色天天综合狠狠色| 免费在线观看亚洲| 国产日韩欧美三级| 国产精品久久久久9999| 99视频免费看| 成人av片在线观看| 欧洲av一区| 操你啦在线视频| 亚洲成人av在线电影| 亚洲色欲综合一区二区三区| 欧美风情在线视频| 精品久久一二三区| 欧美多人猛交狂配| 中文字幕一区二区三三| 亚洲91精品在线观看| 亚洲中文无码av在线| 国产在线精品一区二区不卡了| 91文字幕巨乱亚洲香蕉| 深夜福利在线视频| 亚洲视频一区二区在线| 免费看国产一级片| 成人在线视频观看| 精品久久国产老人久久综合| 波多野吉衣中文字幕| **女人18毛片一区二区| 97视频免费看| 国产一区二区在线视频聊天| 久久伊人中文字幕| 日本女人高潮视频| 黑人巨大精品欧美一区二区桃花岛| 欧美日韩电影在线播放| 一级特级黄色片| 我不卡伦不卡影院| 国产成人精品综合久久久| 国产黄色av网站| 日本一区二区在线不卡| 亚洲一区二区三区av无码| 国产一区二区主播在线| 精品福利二区三区| 美女三级黄色片| 三级一区在线视频先锋| 99精品国产高清在线观看| yw193.com尤物在线| 黄色成人在线免费| 四虎国产精品永久免费观看视频| 久操国产精品| 91大神福利视频在线| 亚洲国产av一区二区| 中文字幕一区二区三区av | 美女一区二区久久| 裸模一区二区三区免费| 欧美女同一区| 欧美一区二区精品久久911| 国产一区二区三区四区五区六区| 中文日韩在线| 国产精品日韩高清| 在线观看中文| 在线91免费看| 日韩一级片在线免费观看| 国产免费成人| 久久精品99| 韩国精品一区| 亚洲国产精品资源| 久久久国产高清| 成人av在线网| 亚洲 欧美 日韩 国产综合 在线| av不卡一区| 久久久久久999| 男人天堂av网| 五月天激情综合| 欧美大喷水吹潮合集在线观看| 国内成人在线| 国产伦精品一区二区三区高清版 | 你懂的在线视频| 精品欧美国产一区二区三区| 国产人成视频在线观看| 亚洲国产精品第一区二区| 国产九色91| 无码小电影在线观看网站免费| 日韩禁在线播放| 亚洲日本视频在线观看| www亚洲一区| 免费午夜视频在线观看| 少妇精品久久久一区二区三区| 日本精品视频在线观看| 国产免费视频在线| 欧美天堂一区二区三区| 婷婷国产成人精品视频| 久久精品国产久精国产| 丰满女人性猛交| 在线精品国产亚洲| 57pao国产精品一区| 噜噜噜在线观看播放视频| 欧美视频一区二| 天海翼在线视频| 国产东北露脸精品视频| 国产精品国产对白熟妇| 国产伦精品一区二区三区千人斩| 国产精品国产三级国产aⅴ9色 | 性生活视频软件| 亚洲sss视频在线视频| 中文字幕在线免费看线人| 日本美女一区二区| 操bbb操bbb| 欧美精品国产白浆久久久久| 日韩av手机在线看| caopeng在线| 日韩电影免费观看中文字幕| 午夜精品久久久久久久蜜桃| 综合久久久久久| 日本三级日本三级日本三级极| 亚洲免费网址| 中文字幕99| 国产精品久久久久久久久久白浆 | 色老头一区二区三区| 国产黄色一区二区| 一本大道久久a久久综合婷婷 | 99久久综合狠狠综合久久aⅴ| caoporen国产精品| 成人直播视频| 欧美裸身视频免费观看| 青青草av免费在线观看| 91精品久久久久久久91蜜桃| 91精品国产乱码在线观看| 国产精品欧美精品| 午夜免费福利影院| 久久99蜜桃精品| 日日摸日日碰夜夜爽av| 91精品国产乱码久久久久久| 久久福利电影| 国产一区二区三区黄网站| 国产不卡av在线| 98色花堂精品视频在线观看| 日韩有码在线播放| 亚欧洲精品视频| 日韩一级二级三级| 中文字幕+乱码+中文乱码www| 亚洲一级二级在线| 欧美爱爱免费视频| 日本一区二区视频在线| 亚洲久久久久久| 国产aⅴ综合色| 手机在线观看日韩av| 全部av―极品视觉盛宴亚洲| 亚洲中文字幕无码中文字| 欧美激情视频一区二区三区在线播放| 日日骚一区二区网站| 亚洲欧美tv| 久久99精品久久久水蜜桃| 99精品国产高清一区二区麻豆| 91九色视频在线| 巨大黑人极品videos精品| 国产69久久精品成人| 精品极品在线| 国内精品久久久久久| 黄色在线观看视频网站| 欧美日韩高清区| 日本在线视频网址| 欧美成人自拍视频| 永久免费网站在线| 久热国产精品视频| 国产美女福利在线| 久青草国产97香蕉在线视频| av免费在线免费观看| 久久亚洲精品一区二区| 黄色视屏免费在线观看| 超薄丝袜一区二区| 中文字幕在线观看网站| 欧美国产日韩一区二区| 青草视频在线免费直播| 伊人开心综合网| 免费91在线观看| 国产欧美日韩不卡| 亚洲第一成人网站| 欧美激情一区二区在线| 精品成人无码一区二区三区| 久久久午夜精品| 人妻熟人中文字幕一区二区| 国产亚洲成aⅴ人片在线观看| 国产美女喷水视频| 国产日韩一级二级三级| 久久久久亚洲av成人无码电影| ww久久中文字幕| 美国黄色特级片| 国产精品久久免费看| 最新日韩免费视频| 一区二区三区四区在线免费观看| 国产成人自拍网站| 亚洲人成小说网站色在线| 久草视频手机在线观看| 亚洲国产美国国产综合一区二区| 日本一二三区视频| 欧美性69xxxx肥| 午夜一区二区三区四区| 欧美在线观看禁18| 亚洲av无码乱码国产精品久久| 日韩一区二区在线看| 黄色a在线观看| 欧美不卡一区二区三区| 男人的天堂av高清在线| 一区二区三区四区精品| 国产精品视频一区二区久久| 久久精品一本久久99精品| a级网站在线播放| 久久免费视频网| 欧美性片在线观看| 成人在线中文字幕| 我要色综合中文字幕| 久久综合一区二区三区| 欧美日韩精品在线一区| 蜜臀a∨国产成人精品| 色网站在线视频| 国产精品1区2区3区| 亚洲精品理论片| 国产欧美日产一区| 国产97免费视频| 色综合久久中文字幕| 在线观看视频二区| 日韩欧美精品在线视频| 国产小视频免费在线网址| 日韩在线欧美在线国产在线| 欧美韩日亚洲| 国产精品爽黄69| 成人在线tv视频| 日韩精品久久久免费观看| 欧美国产先锋| 大肉大捧一进一出好爽动态图| 麻豆精品一区二区三区| 中文字幕影片免费在线观看| 欧美国产一区在线| 欧美日韩在线国产| 欧美亚洲国产怡红院影院| 国产高清免费av| 亚洲欧美激情一区| gogo久久| 国产日韩欧美在线播放| 中文字幕精品影院| 日本老太婆做爰视频| 亚洲欧美网站| 在线免费看黄色片| 国产精品每日更新| 国产尤物在线视频| 精品国产99国产精品| 337p日本欧洲亚洲大胆鲁鲁| 欧美极品少妇全裸体| www.欧美| 色999五月色| 日韩国产欧美三级| 亚洲色偷偷色噜噜狠狠99网| |精品福利一区二区三区| 波多野结衣一区二区三区四区| 精品久久人人做人人爱| 伊人在线视频| 国产精品电影观看| 看全色黄大色大片免费久久久| 性欧美videosex高清少妇| 性伦欧美刺激片在线观看| 日韩大尺度视频| 欧美极品少妇xxxxⅹ高跟鞋| 在线观看日本视频| 精品国产乱码久久久久久牛牛 | 久久人妻免费视频| 精品日韩99亚洲| 牛牛电影国产一区二区| 成人久久18免费网站图片| 欧美色网址大全| 丰满少妇在线观看| 久久久精品天堂| 亚洲男人的天堂在线视频| 亚洲精品在线网站| 亚洲av无码不卡| 99视频一区二区| 中文字幕第69页| 911精品产国品一二三产区| 番号在线播放| 日韩av色在线| 成人一区二区| 久久精品一区二| 国产精品丝袜久久久久久app| 亚洲毛片一区二区三区| 精品视频一区在线视频| 欧美magnet| 日本一区免费看| 青青草国产成人99久久| jizz中文字幕| 欧美日韩中字一区| 久草资源在线观看| 亚洲最大av在线| 加勒比久久综合| 8x8x最新地址| 一区免费观看视频| 国产精品自偷自拍| 九九热这里只有在线精品视| 日韩三级av高清片| 国产一二三区在线播放| jizz一区二区| 99久久久无码国产精品免费蜜柚| 日韩精品免费电影| 在线成人av观看| 五码日韩精品一区二区三区视频| 国产中文字幕精品| 久久综合亚洲色hezyo国产| 日韩高清a**址| 神马久久资源| 中文精品一区二区三区| 大桥未久av一区二区三区中文| 国产无码精品视频| 永久免费毛片在线播放不卡| 亚洲精品无播放器在线播放| 伊人再见免费在线观看高清版| 99热这里都是精品| 成人一二三四区| 欧美国产视频一区二区| 欧美成人午夜77777| 免费看黄在线看| 国产精品久久久久永久免费观看 | 亚洲一卡二卡三卡四卡无卡久久| 日本福利片在线| 国产中文日韩欧美| 国产精品美女|