国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Vue 項目多級路徑部署終極指南:基于環境變量的統一配置方案

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

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

一、環境變量統一配置

1. 環境變量配置文件

我們首先在項目根目錄創建以下環境文件:

# .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: 靜態資源基礎路徑
  • VUE_APP_API_BASE_URL: API請求基礎路徑

二、Vue項目核心配置

1. vue.config.js 完整配置

const path = require('path')

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

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

// 靜態資源目錄
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
      })
  },

// 開發服務器配置
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}`]: ''
        }
      }
    }
  },

// 生產環境關閉sourcemap
productionSourceMap: false
}

三、路由配置優秀實踐

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請求規范

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

/**
 * 獲取靜態資源完整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'

// 創建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;

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

    # 項目部署路徑 - 使用環境變量中的路徑
    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優化配置
    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

# 設置環境
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. 多環境構建腳本 (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配置是否與環境變量一致
  • 驗證publicPath配置是否正確

2. 靜態資源加載失敗

排查步驟:

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

3. API請求路徑錯誤

最佳實踐:

  • 使用axios實例配置baseURL
  • 確保API路徑與VUE_APP_API_BASE_URL一致
  • 開發環境使用代理,生產環境使用絕對路徑

八、性能優化建議

資源壓縮:

  • 開啟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";
}

代碼分割:

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

九、總結

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

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

2009-07-03 16:46:07

JSP環境變量

2010-10-11 09:25:31

MySQL環境變量

2011-12-21 10:46:17

Java

2021-11-29 10:25:16

Linux環境變量命令

2009-06-29 15:06:23

環境變量配置Java

2015-11-08 14:44:48

2015-03-05 11:28:51

Linux桌面環境終極指南

2010-09-16 15:33:48

Java環境變量

2011-06-14 09:04:52

Qt 環境變量

2009-06-16 15:57:53

Java環境變量

2009-12-11 15:06:37

Linux系統

2010-01-11 17:39:31

Fedora 8配置J

2020-11-23 15:21:12

Linux環境變量

2021-06-09 08:21:14

Webpack環境變量前端

2010-04-06 12:45:28

CentOS系統

2020-12-28 10:50:09

Linux環境變量命令

2011-05-31 13:41:50

Android 環境變量

2009-06-15 16:28:30

JAVA環境變量

2020-12-18 09:15:16

LinuxVue命令

2017-03-07 19:30:54

Windows 7Windowsjava
點贊
收藏

51CTO技術棧公眾號

青青草在线免费视频| 精品亚洲夜色av98在线观看| 国产伦精品一区二区三区视频青涩| 狠狠88综合久久久久综合网| 国产成人免费视频网站高清观看视频 | 男人天堂久久| 欧美精品一线| 成人免费看视频| 国产日韩欧美精品在线| 日本黄色一区二区| 久久亚洲精品视频| 成人免费大片黄在线播放| 亚洲欧美日韩不卡一区二区三区| 欧美黄色免费影院| 国产一区二区av在线| 麻豆freexxxx性91精品| 亚洲女与黑人做爰| 欧美韩国理论所午夜片917电影| 一区视频二区视频| 在线观看黄网| 亚洲色图二区| 亚洲国产欧美日韩另类综合| 国产精品美女久久久久av超清| 黄色成人免费看| 久久99亚洲网美利坚合众国| 欧美gay男男猛男无套| 国产精品美女久久久久aⅴ| 欧美激情视频免费观看| 91n.com在线观看| 日韩毛片网站| 成人午夜精品一区二区三区| 这里只有精品丝袜| 欧美成人福利在线观看| 日韩a一区二区| 综合分类小说区另类春色亚洲小说欧美| 亚洲精品国产成人| 一道本视频在线观看| 日本精品在线播放| 国产香蕉久久精品综合网| 欧美在线视频免费观看| www.欧美日本韩国| 狠狠躁夜夜躁人人躁婷婷91| 亚洲黄色性网站| 色综合色综合色综合色综合| 国产精品国产自产拍高清av| 国产日本韩国在线播放| 亚洲电影第三页| 成人在线免费观看| 欧美电视剧在线看免费| 成人久久网站| 韩国视频理论视频久久| 91精品啪在线观看国产18| 久久综合福利| 99精品黄色片免费大全| 亚洲精品少妇久久久久久| 一本色道**综合亚洲精品蜜桃冫| 爆操欧美美女| 久久精品国产欧美激情| 欧美亚洲激情| 一区二区国产日产| 自拍偷在线精品自拍偷无码专区| 国产美女视频一区二区三区| 亚洲欧美变态国产另类| 精品三级av| 好吊妞www.84com只有这里才有精品| 麻豆91在线看| 五月综合激情在线| 欧美精品1区2区| 日韩成人精品| 久久riav| 中文字幕在线一区二区三区| 免费高清完整在线观看| 欧美成人精品xxx| 欧美日本三区| 国产裸体舞一区二区三区| 在线观看欧美精品| 国产美女精品视频免费播放软件| 114国产精品久久免费观看| 成人免费毛片aaaaa**| 资源视频在线播放免费| 亚洲色图偷窥自拍| 日韩免费视频| 免费男女羞羞的视频网站中文版| 亚洲人精品一区| 日日噜噜噜夜夜爽爽| 国产成人三级在线观看| 成人网站免费观看入口| 欧美大片在线影院| 日日夜夜精品视频天天综合网| 无码人妻丰满熟妇区五十路百度| 最新av在线| 欧美成人官网二区| 国产伦精品一区二区三区千人斩 | 1024在线播放| 国产精品精品视频一区二区三区| 国产一区视频导航| 中文字幕在线视频网| 中文字幕亚洲图片| 久久精品盗摄| 欧美著名女优| 欧美激情视频一区二区三区不卡 | 成人欧美一区二区三区黑人| 99re66热这里只有精品3直播| 欧美性videos| 国产精品亚洲激情| 国产日韩精品久久久| 午夜伦理福利在线| 国产精品一区二区三区不卡| 一区二区三区高清| 69精品国产久热在线观看| 国产片侵犯亲女视频播放| 欧美一级在线免费| 国产精品www994| 宅男视频免费在线观看视频| 国内精品久久影院| 91免费看`日韩一区二区| 一级毛片久久久| 色综合视频二区偷拍在线| 欧美日韩中文字幕日韩欧美| jizz性欧美2| 精品中文字幕av| 一道本无吗dⅴd在线播放一区| 蜜桃一区二区三区四区| 国产一区久久精品| 九九九九精品九九九九| 91黄色免费版| 欧美激情五月| 人操人视频在线观看| 国产mv久久久| 一区二区三区四区在线播放| 女人av一区| av成人动漫| 国产欧美日韩免费看aⅴ视频| 亚洲一级电影视频| 波多野结衣在线播放一区| 天堂男人av| 91久久国产精品| 一本大道av伊人久久综合| 最新国产精品久久久| 超碰97在线免费观看| 精品蜜桃传媒| 欧美一区日本一区韩国一区| 久久亚洲风情| 丝袜诱惑一区二区| www.日本三级| 久久6免费高清热精品| 国产精品伦一区| 久久99影视| 久久99久久| 日韩动漫在线观看| 亚洲欧美精品suv| 91视频com| 1313精品午夜理伦电影| 久久综合色播| 国产精品福利视频| 亚洲国产日韩欧美在线图片| 高清不卡在线观看av| 9999久久久久| 嫩草研究院在线观看| 欧美连裤袜在线视频| 国产亚洲精品美女久久久| av在线播放成人| 亚洲免费观看高清完整版在线观| 欧美精品一区二区三区涩爱蜜| 国产一区二区无遮挡| 日韩视频在线观看一区二区| 成人午夜电影小说| 精品国产精品| 欧美韩日亚洲| 欧美特级aaa| 国外成人免费视频| 中文字幕日韩欧美在线| 亚洲六月丁香色婷婷综合久久| 亚洲久色影视| 欧美电影在线观看网站| 中文字幕大看焦在线看| 亚洲国产一区二区三区在线播| 久久手机免费视频| 欧美日韩国产页| 日韩综合小视频| 免费精品一区| 香蕉视频免费在线播放| 欧美男女爱爱视频| 91亚洲国产成人精品性色| 亚洲少妇激情视频| 精品日本高清在线播放| 国产成人av资源| 久久久久亚洲| 国产精品一区二区精品视频观看| 麻豆app在线观看| 欧美日韩性生活片| av一区二区三区免费| 久久综合亚洲社区| 欧美丰满高潮xxxx喷水动漫| 国产亚洲精品免费| 久久亚洲电影| 日韩精品永久网址| 96视频在线观看欧美| 色av手机在线| av网站免费|