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

Vue 項目打包部署總結

開發 前端
使用Vue做前后端分離項目時,通常前端是單獨部署,用戶訪問的也是前端項目地址,因此前端開發人員很有必要熟悉一下項目部署的流程與各類問題的解決辦法了。

 使用Vue做前后端分離項目時,通常前端是單獨部署,用戶訪問的也是前端項目地址,因此前端開發人員很有必要熟悉一下項目部署的流程與各類問題的解決辦法了。

Vue項目打包部署本身不復雜,不過一些前端同學可能對服務器接觸不多,部署過程中還是會遇到這樣那樣的問題。本文介紹一下使用nginx服務器代理前端項目的方法以及項目部署的相關問題,內容概覽:

一、準備工作——服務器和nginx使用

1. 準備一臺服務器

我的是ubuntu系統,linux系統的操作都差不多。沒有服務器怎么破?

如果你只是想體驗一下,可以嘗試各大廠的云服務器免費試用套餐,比如華為云免費試用,本文相關操作即是在華為云上完成的。

不過如果想時常練練手,我覺得可以購買一臺云服務器,比如上面的華為云或者阿里云都還挺可靠。

2. nginx安裝和啟動

輕裝簡行,這部分不作過多贅述(畢竟網上相關教程一大堆),正常情況下僅需下面兩個指令: 

  1. # 安裝,安裝完成后使用nginx -v檢查,如果輸出nginx的版本信息表明安裝成功  
  2. sudo apt-get install nginx  
  3. # 啟動  
  4. sudo service nginx start 

啟動后,正常情況下,直接訪問 http://服務器ip 或 http://域名 (本文測試用的服務器沒有配置域名,所以用ip,就本文而言,域名和ip沒有太大區別)應該就能看到nginx服務器的默認頁面了——如果訪問不到,有可能是你的云服務器默認的http服務端口(80端口)沒有對外開放,在服務器安全組配置一下即可。

3、 了解nginx: 修改nginx配置,讓nginx服務器代理我們創建的文件

查看nginx的配置,linux系統下的配置文件通常會存放在/etc目錄下,nginx的配置文件就在/etc/nginx文件夾,打開文件/etc/nginx/sites-available/default(nginx可以有多個配置文件,通常我們配置nginx也是修改這個文件):

可以看到默認情況下,nginx代理的根目錄是/var/www/html,輸入 http://服務器ip會訪問這個文件夾下的文件,會根據index的配置值來找默認訪問的文件,比如index.html、index.htm之類。

我們可以更改root的值來修改nginx服務代理的文件夾:

1)、創建文件夾/www,并創建index.html,寫入"Hello world"字符串 

  1. mkdir /www  
  2. echo 'Hello world' > /www/index.html 

2)、修改root值為 /www

3)、sudo nginx -t 檢查nginx配置是否正確

4)、加載nginx配置:sudo nginx -s reload

再次訪問頁面,發現頁面內容已經變成了我們創建的index.html:

二、Vue項目打包同步文件到遠程服務器

1、 打包

默認情況下,使用vue-cli創建的項目,package.json里的script應該已經配置了build指令,直接執行yarn build 或者 npm run build即可。

2、 同步到遠程服務器

我們使用nginx部署Vue項目,實質上就是將Vue項目打包后的內容同步到nginx指向的文件夾。之前的步驟已經介紹了怎樣配置nginx指向我們創建的文件夾,剩下的問題就是怎么把打包好的文件同步到服務器上指定的文件夾里,比如同步到之前步驟中創建的/www。

同步文件可以在git-bash或者powershell使用scp指令,如果是linux環境開發,還可以使用rsync指令: 

  1. scp -r dist/* root@117.78.4.26:/www  
  2. 或  
  3. rsync -avr --delete-after dist/* root@117.78.4.26:/www  

注意這里以及后續步驟是root使用用戶遠程同步,應該根據你的具體情況替換root和ip(ip換為你自己的服務器IP)。

為了方便,可以在package.json腳本中加一個push命令,以使用yarn為例(如果你使用npm,則push命令中yarn改成npm  run即可): 

  1. "scripts": {  
  2.     "build": "vue-cli-service build",  
  3.     "push": "yarn build && scp -r dist/* root@117.78.4.26:/www"  
  4.   }, 

這樣就可以直接執行yarn push 或者npm run push直接發布了。不過還有一個小問題,就是命令執行的時候要求輸入遠程服務器的root密碼(這里使用root來連接遠程的,你可以用別的用戶,畢竟root用戶權限太高了)。

為了避免每次執行都要輸入root密碼,我們可以將本機的ssh同步到遠程服務器的authorized_keys文件中。

3、 同步ssh key

    a. 生成ssh key:使用git bash或者powershell執行ssh-keygen可以生成ssh key。會詢問生成的key存放地址,直接回車就行,如果已經存在,則會詢問是否覆蓋:    

    b. 同步ssh key到遠程服務器,使用ssh-copy-id指令同步 

  1. ssh-copy-id -i ~/.ssh/id_rsa.pub root@117.78.4.26 

輸入密碼后,之后再次同步就不需要輸入密碼了。其實ssh_key是同步到了服務器(此處是root用戶家目錄)~/.ssh/authorized_keys文件里:

當然你也可以手動復制本地~/.ssh/id_rsa.pub(注意是pub結尾的公鑰)文件內容追加到服務器~/.ssh/authorized_keys的后面(從命名可以看出該文件可以存儲多個ssh key)

注意:這里全程使用的是root用戶,所以沒有文件操作權限問題。如果你的文件夾創建用戶不是遠程登錄用戶,或許會存在同步文件失敗的問題,此時需要遠程服務器修改文件夾的讀寫權限(命令 chmod)。

創建了一個測試項目(點擊本鏈接可以在gihub查看)試一下,打包、文件上傳一句指令搞定啦:

訪問一下,果然看到了我們熟悉的界面:

至此,常規情況下發布Vue項目就介紹完了,接下來介紹非域名根路徑下發布以及history路由模式發布方法。

三、非域名根路徑發布

有時候同一臺服務器同一端口下可能會根據目錄劃分出多個不同的項目,比如我們希望項目部署到http://a.com/test下,這樣訪問http://a.com/test訪問到的是項目的首頁,而非test前綴的地址會訪問到其它項目。此時需要修改nginx配置以及Vue打包配置。

1、 nginx配置

只需要添加一條location規則,分配訪問路徑和指定訪問文件夾。我們可以把/test指向之前創建的/www文件夾,這里因為文件夾名稱和訪問路徑不一致,需要用到alias這個配置:

如果文件夾名稱與訪問路徑一致都為test,那這里可以用root來配置:

這里要將/test配置放到/之前,意味著在路由進入的時候,會優先匹配/test。如果根路徑/下的項目有子路由/test,那http://xxxx/test只會訪問到/www里的項目,而不會訪問該子路由。

2、項目配置

為了解決打包后資源路徑不對的問題,需要在vue.config.js中配置publicPath,這里有兩種配置方式,分別將publicPath配置為./和/test:

更新nginx配置,發布后即可正常訪問啦。這里的兩種配置方式是有區別的,接下來會看一下它們的區別。

如果不進行項目配置,直接發布訪問會出現JS、CSS等資源找不到導致頁面空白的問題:

該問題原因是資源引用路徑不對,頁面審查元素可以看到,頁面引用的js都是從根路徑下引用的:

查看打包后的文件結構,可以看到js/css/img/static等資源文件是與index.html處于同級別的:

對于兩種配置方式,看看都是怎么生效的:

    a. publicPath配置為./, 打包后資源引用路徑為相對路徑:

 

     b. publicPath配置為/test,打包后資源相對路徑為從域名根目錄開始的絕對路徑:

兩種配置都可以正確地找到JS、CSS等資源。不過還有個問題,那就是static中的靜態資源依舊會找不到。

3、絕對路徑引用的靜態資源找不到的問題

因為在打包過程中,public下的靜態資源都不會被webpack處理,我們需要通過絕對路徑來引用它們。當項目部署到非域名根路徑上時,這點非常頭疼,你需要在每個引用的URL前面加上process.env.BASE_URL(該值即對應上文配置的publicPath),以使得資源能被正常訪問到。我們可以在main.js把這個變量值綁定到Vue.prototype,這樣每個Vue組件都可以使用它: 

  1. Vue.prototype.$pb = process.env.BASE_URL 

在模板中使用: 

  1. <img :src="`${$pb}static/logo.png`"> 

然而,更加頭疼并且沒有良好解決方案的問題是在組件style部分使用public文件夾下的靜態資源:

  •  如果需要使用圖片等作為背景圖片等,盡量使用內聯方式使用吧,像在模板中使用一樣。
  •  如果需要引入樣式文件,則在index.html中使用插值方式引入吧。

關于靜態資源的問題,vue-cli的推薦是盡量將資源作為你的模塊依賴圖的一部分導入(即放到assets中,使用相對路徑引用),避免該問題的同時也帶來其它好處:

四、history模式部署

默認情況下,Vue項目使用的是hash路由模式,就是URL中會包含一個#號的這種形式。#號以及之后的內容是路由地址的hash部分。

正常情況下,當瀏覽器地址欄地址改變,瀏覽器會重新加載頁面,而如果是hash部分修改的話,則不會,這就是前端路由的原理,允許根據不同的路由頁面局部更新而不刷新整個頁面。

H5新增了history的pushState接口,也允許前端操作改變路由地址但是不觸發頁面刷新,history模式即利用這一接口來實現。因此使用history模式可以去掉路由中的#號。

1、項目配置

在vue-router路由選項中配置mode選項和base選項,mode配置為'history';如果部署到非域名根目錄,還需要配置base選項為前文配置的publicPath值(注意:此情況下,publicPath必須使用絕對路徑/test的配置形式,而不能用相對路徑./)

2、 nginx配置

對于history模式,假設項目部署到域名下的/test目錄,訪問http://xxx/test/about的時候,服務器會去找/test指向的目錄下的about子目錄或文件,很顯然因為是單頁面應用,并不會存在a這個目錄或者文件,就會導致404錯誤:

我們要配置nginx讓這種情況下,服務器能夠返回單頁應用的index.html,然后剩下的路由解析的事情就交給前端來完成即可。

這句配置的意思就是,拿到一個地址,先根據地址嘗試找對應文件,找不到再試探地址對應的文件夾,再找不到就返回/test/index.html。再次打開剛才的about地址,刷新頁面也不會404啦:

3、history模式部署到非域名根路徑下

非域名根目錄下部署,首先肯定要配置publicPath。需要注意的點前面其實已經提過了,就是這種情況下不能使用相對路徑./或者空串配置publicPath。

為什么呢?

原因是它會導致router-link等的表現錯亂,使用測試項目分別使用兩種配置打包發布,審查元素就能看出區別。在頁面上有兩個router-link,Home和About:

兩種配置打包后的結果如下。

    a. publicPath配置為./或者空串:    

     b. publicPath配置為/test:

publicPath配置為相對路徑的router-link打包后地址變成了相對根域名下地址,很明顯是錯誤的,所以非域名根路徑部署應該將publicPath配置為完整的前綴路徑。

五、結語

關于Vue項目發布的相關問題就先總結這么多,幾乎在每一步都踩過坑才有所體會,有問題歡迎各位同學一起探討。 

 

責任編輯:龐桂玉 來源: 前端大全
相關推薦

2024-11-01 08:10:00

Vue開發

2023-09-14 20:55:52

NodeJSDocker

2020-12-18 09:15:16

LinuxVue命令

2023-09-12 07:06:04

2024-01-16 08:26:25

Vue項目服務器

2024-02-19 16:25:29

前端Vue.jsJavaScript

2021-09-01 11:10:55

Spring BootShellJava

2013-12-11 22:08:22

2025-02-07 08:39:32

Shell部署測試

2021-08-04 08:27:00

VueReact自動化部署

2022-02-20 19:02:16

RollupVue 2JavaScrip

2009-08-11 17:39:59

.NET打包項目

2013-01-21 10:19:50

JavaScript項目管理JS

2012-08-15 09:22:49

JavaScript

2024-02-20 08:51:56

PythonFlask工具

2015-06-11 16:36:27

ASP.NET

2021-05-26 10:40:28

Vue3TypeScript前端

2022-09-07 08:00:00

機器學習MLFlow工具

2012-07-04 10:47:56

軟件項目項目管理項目流程

2012-07-11 23:32:33

MVC3項目
點贊
收藏

51CTO技術棧公眾號

丰满人妻妇伦又伦精品国产| 波多野结衣一二三四区| 成人影音在线| www国产精品av| 国产精品久久久久久久av电影 | 成人国产电影网| 欧美有码在线视频| 免费精品在线视频| 国产精品久久久网站| 91福利在线免费观看| 麻豆md0077饥渴少妇| 外国精品视频在线观看| 九九久久精品视频| 2025国产精品视频| 翔田千里88av中文字幕| 亚洲精品白浆高清| 精品乱人伦小说| 久久久久久久久久久久91| 国产丝袜在线播放| 国产精品成人免费| 蜜桃av噜噜一区二区三| wwwav在线播放| 免费高清视频精品| 91精品国产九九九久久久亚洲| 天天躁日日躁aaaa视频| 中文字幕日韩高清在线| 欧美三级中文字幕| 又粗又黑又大的吊av| 成人免费高清| 国产精品免费人成网站| 免费一区二区三区| 人成网站在线观看| 国产伦精品一区二区三区免费迷 | 免费一级肉体全黄毛片 | 日本丰满少妇黄大片在线观看| 亚欧在线观看视频| 丁香一区二区三区| 91久久久久久国产精品| 中文字幕在线观看第二页| 国产精品普通话对白| 久久久久久九九九| 欧美日韩在线观看成人| 香蕉久久网站| 日韩最新在线视频| 丁香六月激情综合| 欧美日韩中字| 在线观看亚洲视频| 亚洲色图日韩精品| 日本午夜一区| 中文日韩在线视频| 亚洲精品视频网址| 久久国产亚洲精品| 日韩中文字幕视频在线观看| 超碰人人人人人人人| 日本女优一区| 久久久黄色av| 欧美人妻一区二区| 欧美三级午夜理伦三级中文幕| 精品中文字幕在线2019| 久草资源在线视频| 激情久久五月| 91精品国产高清自在线| 国产黄色免费观看| 日韩国产在线一| 国产美女精品视频| 国产永久免费视频| 国产成人亚洲精品青草天美| 不卡视频一区| 天堂中文在线8| 久久蜜桃香蕉精品一区二区三区| 日本一区二区精品| 午夜伦理在线| 亚洲一区二区视频在线观看| 91精品国产91久久久久麻豆 主演| 欧美人与禽性xxxxx杂性| 亚洲一二三四在线| 女人扒开屁股爽桶30分钟| 欧美极度另类| 欧美电影影音先锋| 国产精品熟妇一区二区三区四区 | 亚洲黄色av女优在线观看| 一级特黄a大片免费| 女人av一区| 日韩网站免费观看高清| 欧美成人片在线观看| 在线亚洲成人| 国产精品视频免费在线| 国产极品999| www国产精品av| 一区二区三区欧美成人| 丰满诱人av在线播放| 日韩欧美视频一区二区三区| 一区二区三区入口| 超碰精品在线观看| 亚洲欧美日韩第一区| 手机在线中文字幕| 99视频精品| 国产日韩专区在线| 天天射天天操天天干| 国产精品嫩草影院com| 国产精品999视频| 成人在线视频观看| 亚洲福利视频久久| www.黄色com| 99国产精品视频免费观看一公开| 国产在线999| 亚洲人视频在线观看| 国产精品久久久久7777按摩| 男人添女人下部高潮视频在观看 | 欧美日韩免费观看一区二区三区| 国偷自产av一区二区三区麻豆| 美女久久99| 色综合色综合网色综合| 伊人久久国产精品| 91视频91自| 国产精品无码电影在线观看| 韩国精品视频在线观看| 日韩国产欧美精品在线| 欧美成人精品欧美一| 美女爽到高潮91| 久久久久网址| av免费在线视| 日韩三级av在线播放| 成人无码精品1区2区3区免费看 | 999国产精品永久免费视频app| 69av在线视频| 亚洲精品无amm毛片| 国产精品家庭影院| 国产精品无码一本二本三本色| 国产主播性色av福利精品一区| 久久精品视频网站| 中文字幕 视频一区| 91视频.com| 91成人在线观看喷潮教学| 精品久久亚洲| 久久中国妇女中文字幕| 92久久精品一区二区| 国产精品每日更新| av五月天在线| 波多野结衣的一区二区三区| 日本精品久久电影| 四虎电影院在线观看| 亚洲国产欧美在线| 国内自拍偷拍视频| 欧美精品91| 成人看片视频| 欧美v亚洲v| 亚洲成人三级在线| 日本天堂网在线观看| 99在线精品视频| 国产素人在线观看| 日韩电影不卡一区| 国产69久久精品成人| 欧美日韩国产中文字幕在线| 狠狠色噜噜狠狠狠狠97| 免费在线观看成年人视频| 亚洲影视在线| 亚洲va韩国va欧美va精四季| 国产成人福利夜色影视| 色先锋资源久久综合5566| 一级黄在线观看| 亚洲欧洲无码一区二区三区| 在线一区二区不卡| 欧美日韩一卡| 久久精品国产一区二区三区日韩| 中文字幕在线直播| 在线精品国产欧美| 国产色综合视频| 亚洲成人在线免费| www.色天使| 蜜臀av性久久久久蜜臀aⅴ四虎| 伊人久久av导航| 亚洲乱码一区| 91sao在线观看国产| av电影在线观看网址| 91精品国产综合久久福利| 精品无码久久久久久久| 91色视频在线| gogogo高清免费观看在线视频| 欧美国产激情| 欧美日韩一区二区三区在线视频 | 7777精品伊久久久大香线蕉语言 | 中出一区二区| 国产综合动作在线观看| 亚洲精品粉嫩美女一区| 久久在精品线影院精品国产| 三级小视频在线观看| 欧美在线免费视屏| 麻豆chinese极品少妇| 久久久影院官网| 天堂av在线8| 一区二区三区国产在线| 亚洲一区二区三区乱码 | 色一情一区二区三区四区| 国产午夜久久av| 91国内免费在线视频| 1pondo在线播放免费| 精品久久99ma| 中日韩av在线| 精品人伦一区二区三区蜜桃网站 | 色综合久久久久综合99| 国产美女福利视频| 久久婷婷色综合| 欧美专区第二页| 日韩国产在线观看一区| 婷婷无套内射影院| 亚洲国产精品综合久久久| 蜜桃成人免费视频| gogo久久日韩裸体艺术| 成人黄色午夜影院| 欧美1级2级| 海角国产乱辈乱精品视频| 91青青在线视频| 精品无人国产偷自产在线| www黄色网址| 欧美日韩精品一区二区三区四区 | 99在线视频免费| 99天天综合性| 农村末发育av片一区二区| 久久99九九99精品| 国产97色在线 | 日韩| 91久久视频| 日本福利视频在线观看| 婷婷丁香综合| 亚洲一区三区电影在线观看| 国产99久久精品一区二区300| 国产精品12| 亚洲精品观看| 亚洲一区久久久| 日韩黄色三级在线观看| 国产精品久久久久久av福利软件| 丝袜诱惑一区二区| 欧美在线一区二区视频| 黄频免费在线观看| 亚州成人av在线| 国产精品电影| 777777777亚洲妇女| a级大胆欧美人体大胆666| 久久久久国产视频| 成年人视频免费在线播放| 欧美成人在线网站| 亚洲按摩av| 欧美人与性动交| 欧美韩日亚洲| 久久久噜久噜久久综合| 大菠萝精品导航| 97av在线影院| 日本在线啊啊| 日本精品一区二区三区在线| 欧美性xxx| 国产精品黄色影片导航在线观看| 欧美日韩视频网站| 国产精品1234| 亚洲精品aaa| 亚洲最大福利网| av动漫精品一区二区| 国产私拍一区| 亚洲v天堂v手机在线| 蜜桃传媒一区二区| 在线一级成人| 亚洲日本无吗高清不卡| 午夜精品毛片| 一卡二卡三卡视频| 性久久久久久| 亚洲精品自拍网| 国产一区二区在线电影| 国产av一区二区三区传媒| 99re热这里只有精品免费视频| 无码人妻精品一区二区三应用大全| 久久嫩草精品久久久精品| 一区二区三区在线播放视频| 亚洲免费观看在线视频| 国产成人亚洲欧洲在线| 色88888久久久久久影院野外| 亚洲天堂网在线观看视频| 91精品久久久久久久91蜜桃 | caoporn国产精品| 亚洲精品理论片| 国产精品久久久久影视| 久久久久久免费观看| 色婷婷激情久久| 国产sm主人调教女m视频| 日韩电影中文 亚洲精品乱码| 成人午夜在线观看视频| 欧美区在线播放| 日本欧美一区| 成人精品水蜜桃| 欧美理论在线播放| 日本美女爱爱视频| 久久婷婷一区| 曰本三级日本三级日本三级| 91亚洲国产成人精品一区二区三| 免费黄色国产视频| 欧美日韩精品二区| 国产情侣av在线| 伊人激情综合网| 久草在线视频资源| 国产精品久久久久久久天堂| 高清日韩中文字幕| 一区二区三区四区久久| 校园春色综合网| 男男受被啪到高潮自述| 亚洲国产高清在线| 日韩激情在线播放| 日韩一区二区视频在线观看| 国产福利片在线| 91av在线影院| 一区中文字幕电影| 一区二区三区四区欧美日韩| 先锋影音国产一区| 亚洲自拍偷拍精品| 亚洲人吸女人奶水| 波多野结衣影片| 日韩av网址在线| 欧美家庭影院| 91精品在线看| 精品国产91久久久久久浪潮蜜月| 国产日本在线播放| 国产馆精品极品| 99自拍视频在线| 欧美午夜精品理论片a级按摩| 天天爽夜夜爽夜夜爽| 欧美激情综合色| 亚洲开心激情| 好吊色视频988gao在线观看| 另类调教123区| 国产传媒国产传媒| 91福利在线播放| 日本福利片在线| 欧美在线视频观看| 人妖一区二区三区| 免费国产a级片| 99国产精品视频免费观看| 麻豆一区产品精品蜜桃的特点 | 国产精品久久久久久久久久免费| 欧美xxxx在线| 男人的天堂狠狠干| www.激情成人| 国产精品黄色大片| 精品播放一区二区| 男男gaygays亚洲| 成人一区二区在线| 红桃视频国产一区| 在线黄色免费网站| 五月综合激情网| 亚洲 欧美 自拍偷拍| 91精品国产亚洲| 日本亚洲不卡| 可以免费观看av毛片| 久久久久久久久久久久久久久99| 色屁屁影院www国产高清麻豆| 日韩电影中文字幕在线| 亚洲综合电影| 日韩一区免费观看| 久久er99热精品一区二区| 国产麻豆视频在线观看| 日韩色视频在线观看| h片在线观看视频免费| 麻豆一区区三区四区产品精品蜜桃| 亚洲综合国产| 少妇的滋味中文字幕bd| 欧美一区日韩一区| 岛国片av在线| 欧美在线3区| 激情成人综合网| 国产一级特黄a高潮片| 亚洲女人被黑人巨大进入al| av成人在线观看| 日韩人妻一区二区三区蜜桃视频| 成人中文字幕合集| 毛片毛片女人毛片毛片| 一个人看的www久久| 国产一区二区三区视频在线| 成人免费性视频| 国产女同性恋一区二区| 99国产精品久久久久99打野战| 欧美—级高清免费播放| 六月丁香久久丫| 99sesese| 午夜精品福利在线| 在线免费看黄| 国产高清一区视频| 日韩av高清在线观看| 欧美成人手机视频| 尤物tv国产一区| 99a精品视频在线观看| www.日日操| 亚洲制服欧美中文字幕中文字幕| 瑟瑟在线观看| 91中文在线视频| 免费看的黄色欧美网站| 加勒比婷婷色综合久久| 亚洲乱码国产乱码精品精天堂| 亚洲色图综合| 黄色免费视频大全| 亚洲欧美经典视频| 加勒比一区二区三区在线| 操一操视频一区| 日本欧美加勒比视频| 久久精品这里有|