vue項目如何打包扔向服務器 - Hi-Sen - 博客園

當我們將 vue 項目完成后,面臨的就是如何將項目進行打包上線,放到服務器中。我使用的是 vue-cli(simple) 腳手架,所以就講一下如何將項目進行打包,并放到 tomcat 上。?
??如果是 vue-cli (非 simple 腳手架),這篇文章可能有點幫助。地址鏈接:vue-cli 如何打包上線

??先來描述一下期間遇到的問題有哪些:

1、打包后將 dist 文件夾和 index.html 放到 tomcat,在瀏覽器中訪問時,出現空白頁,f12 提示 404。?
2、打包好的靜態資源均是絕對路徑,無法引入進項目,也是 404。

1、項目目錄結構

這里寫圖片描述

這是打包后的,所以有 dist 文件夾,打包方式:npm run build

2、webpack.config.js

這里寫圖片描述

這里只是一小部分,因為這邊最關鍵的就是 publicPath,下面會提,這邊可以解決靜態資源 404 無法引入的問題。

3、npm run build 打包后的文件。

npm run build?打包后生成一個 dist 文件夾,這里面的目錄:

這里寫圖片描述

我對 webpack 打包工具的原理不是很清楚,所以文件夾應該生成什么不是了解。我這邊是這樣子的。主要是一個主要的 build.js, 因為我們的 index.html 引入的就是這個 js 文件。還有一些圖片文件和 ElementUI 生成的 ttf 和 woff。

4、如何放到服務器中。

接下來就是需要將生成的 dist 文件夾和 index.html 文件放到服務器中,只需要這兩個。首先我將這兩個文件放在同一個文件夾中,我命名為 gas(隨意)。

這里寫圖片描述

然后將文件夾放到 tomcat 中,我將文件夾放到 tomcat 的 webapps 文件夾目錄下:

這里寫圖片描述

這里寫圖片描述

ok 部署完成,啟動 tomcat,你會發現顯示一個空白頁,一些靜態資源都是 404。

5、解決空白頁和靜態資源無法引入的問題。

1、首先空白頁的問題,可以重 f12 中看出來都是絕對路徑的原因,而我們打包后,應該的引入路徑是相對路徑,這時我們需要的是修改 index.html 頁面。

看一下沒改之前的:

這里寫圖片描述

看我 /dist/build.js 引用的是絕對路徑,這就導致了在 tomcat 去訪問 index.html 頁面時,報404。我們需要將路徑變成相對路徑 ./dist/build/。多一個點,很關鍵。好了到這里應該主頁面可以顯示了。

但是你會發現,我的靜態資源,我的圖片(不包括 img 形式的引入),例如我在 css 中 background:url() 的圖片顯示404。

2、解決靜態資源失效的問題

這就需要修改我們的 webpack.config.js 中的 publicPath 了,默認的 vue-cli 腳手架環境搭建好后,publicPath 是這樣的:

這里寫圖片描述

可以看到我們的路徑是: /dist/。所以這時候我們如果打開頁面,靜態資源的路徑都會是這樣子的,并且報錯404:

http://10.0.0.181:8088/dist/bg.png?fe9b889cea51978538ce352593be0573
  • 1

顯然可以看出和我們想要的路徑不一致,上面我貼出來的在 tomcat 的文件目錄中我將 dist 和 index.html 都放進了一個 gas 的文件夾中。所以正確的路徑應該是這樣的:

http://10.0.0.181:8088/gas/dist/bg.png?fe9b889cea51978538ce352593be0573
  • 1

看出區別了嗎!

解決:

所以我需要改變一下 webpack.config.js 中的輸出路徑 publicPath: /gas/dist/。將最外層的文件夾路徑加進去,這樣就可以將靜態資源引入進項目了。

ok,到現在為止,最主要的兩個問題解決了,一個是 index.html 空白頁,另一個是 靜態資源路徑不正確的問題。

6、index.html 頁面中的link 和 srcipt 引用的資源失效問題:

原因還是路徑的地址不對:

妥協的解決方法是:將自己引用的資源手動放到打包出來的 dist 文件夾內,然后在 index.html 中按照 dist 的相對路徑進行引用。

這里寫圖片描述

代碼中的 icon.ico 就是我手動將 icon 圖標放到 dist 文件夾中,然后按照對應的引用路徑進行引用。其他的 css 和 js 引用一樣。

7、待解決的問題:

1、在我的項目中,使用了 ElementUI 框架,但是在打包放到服務器中后,發現按鈕樣式變了,所有的 padding 失效,所有我只能自己手動進行添加樣式。

2、在我的 index.html 中如果引入 link css文件時,還是沒辦法引入相對路徑,所以我將 css 樣式都放到了各自的組件中的 style 中了,其他的一般都是用 npm 注入依賴的形式進行安裝。

8、網上搜索到的相關問題和解決方法。

1、求助!Vue項目用Webpack打包后放到服務器上,但訪問是空白頁?弄了好久了也不知道什么原因

2、vue項目中,npm run build生成的index.html文件只有放在根目錄下打開才能生效,怎么解決?

3、Vue應用部署到服務器的正確方式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/248927.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/248927.shtml
英文地址,請注明出處:http://en.pswp.cn/news/248927.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL備份與恢復-mysqldump備份與恢復

這片博文主要用來介紹MySQL的備份與恢復: MySQL的備份形式可以分為如下幾種: 熱備----即不停機備份冷備----需要關閉MySQL,然后備份其數據文件。(停機備份一般是直接拷貝其datadir目錄)溫備----在線備份,對…

第六次實訓作業異常處理

第六次實訓作業異常處理 編寫一個類ExceptionTest,在main方法中使用try-catch-finally語句結構實現:在try語句塊中,編寫兩個數相除操作,相除的兩個操作數要求程序運行時用戶輸入;在catch語句塊中,捕獲被0除…

k8s學習筆記-調度之Affinity

Kubernetes中的調度策略可以大致分為兩種 一種是全局的調度策略,要在啟動調度器時配置,包括kubernetes調度器自帶的各種predicates和priorities算法,具體可以參看上一篇文章; 另一種是運行時調度策略,包括nodeAffinity…

vue-cli webpack配置分析 - chenBright - SegmentFault 思否

相信vue使用者對vue-cli都不會陌生,甚至可以說,很熟悉了,但對其webpack的配置可能知之甚少吧。 過完年回來后,我接手了公司的新項目。新項目是一個spa。很自然,我就想到了vue-cli腳手架了,當時研究一下它的…

[Xcode 實際操作]六、媒體與動畫-(6)使用UIBlurEffect給圖片添加模糊效果

目錄:[Swift]Xcode實際操作 本文將演示如何給圖像添加模糊效果。 在項目導航區,打開視圖控制器的代碼文件【ViewController.swift】 1 import UIKit2 3 class ViewController: UIViewController {4 5 override func viewDidLoad() {6 super.…

MapReduce編程實踐

一、MapReduce編程思想 學些MapRedcue主要是學習它的編程思想,在MR的編程模型中,主要思想是把對數據的運算流程分成map和reduce兩個階段: Map階段:讀取原始數據,形成key-value數據(map方法)。即…

webpack基礎+webpack配置文件常用配置項介紹+webpack-dev-server - QxQstar - 博客園

一.webpack基礎 1.在項目中生成package.json:在項目根目錄中輸入npm init,根據提示輸入相應信息。(也可以不生成package.json文件,但是package.json是很有用的,所有建議生成) 2.安裝webpaack a.在全局中安裝…

(十)

空轉載于:https://www.cnblogs.com/shanae/p/10034479.html

編譯原理--NFA/DFA

現成的, 講義: https://www.cnblogs.com/AndyEvans/p/10240790.html https://www.cnblogs.com/AndyEvans/p/10241031.html 一個例子, 寫得非常好. 一下子就全明白了, 尤其是像我這種沒有聽過編譯原理課程的人. https://blog.csdn.net/tyler_download/article/details/53139240 …

Python中pass的用法

空語句 do nothing保證格式完整保證語義完整以if語句為例,在c或c/java中: if(true); //do nothingelse{ //do something}對應于python就要這樣寫: if true: pass #do nothingelse: #do something 1 pass語句在函數中的作用當你在編寫一個程序…

express路由管理的幾種自動化方法分享-js教程-PHP中文網

我們平時在使用express寫代碼的過程中,會根據類別,將路由分為多個不同的文件,然后在項目的入口文件(例如app.js)中將其依次掛載,例如: 1 2 3 4 5 6 7 const index require(./routes/index) con…

dotnet不是內部或外部的命令,也不是可運行的程序或批處理文件

>>這臺電腦>>屬性>>高級系統設置>>環境變量>>系統變量>>Path>>編輯>> 變量值中添加 %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; 即可。轉載于:https://www.cnblogs.com/ZCrystal/p/10894591.html

轉載 vue的基礎使用

轉載https://www.cnblogs.com/majj/p/9957597.html#top vue的介紹 前端框架和庫的區別nodejs的簡單使用vue的起步指令系統組件的使用過濾器的使用watch和computed鉤子函數漸進式的JavaScript框架 vue react angualr作者:尤雨溪 facebook 谷歌公…

Express實現路由分發控制、RESTful API

Express實現路由分發控制、RESTful API 標簽(空格分隔): Node.js 最近在用Express作為自己的WEB應用框架,其中最為迷惑的就是Express的路由控制和分發,在網上搜了很多資料,但是大部分的資料都是將Express的…

springboot運行jar包時候加載指定目錄的其他jar支持包

最近發生一個小故障,調試好的項目,發布成jar包后無法找到oracle的驅動,研究了一下解決了。記錄一下。寫了一個run.sh腳本 #!/bin/bash cd ~ cd app nohup java -Djava.ext.dirs./lib -Doracle.jdbc.thinLogonCapabilityo3 -jar -Xms512m -Xmx…

OpenLayers3關于Map Export的Canvas跨域

一 Canvas跨域現象 地圖導出是地圖中常用的功能,并且OpenLayers3中也提供了兩個地圖導出的例子:http://openlayers.org/en/latest/examples/export-map.html http://openlayers.org/en/latest/examples/export-pdf.html。 看到這兩個例子我們都很興奮,直…

typescript-koa-postgresql 實現一個簡單的rest風格服務器 —— 連接 postgresql 數據庫...

接上一篇,這里使用 sequelize 來連接 postgresql 數據庫 1、安裝 sequelize,數據庫驅動 pg yarn add sequelize sequelize-typescript pg reflect-metadata 2、新建配置文件夾 conf 及 配置文件 db.conf.ts /*** name: 數據庫配置* param : undefined* r…

SmartGit使用教程

說明 官網的客戶端是命令行形式的,有興趣可以去了解下。這里針對圖形界面的smartgit做一個使用說明。 軟件下載和安裝 下載地址[2016.12.16測試可以] 按需選擇,如果不知道自己電腦是什么系統的,那我沒話說了https://www.syntevo.com/smartgit/ 安裝 …

jquery 下拉框 select2 運用 筆記

1,添加select2 樣式 參考&#xff08;https://select2.org/ &#xff09; 2,Html: <select id"txtType" name"Type" class"form-control select2" multiple"multiple"> </select> 3,jquery section scripts{ $(documen…

Asp.Net MVC中Action跳轉小結

首先我覺得action的跳轉大致可以這樣歸一下類&#xff0c;跳轉到同一控制器內的action和不同控制器內的action、帶有參數的action跳轉和不帶參數的action跳轉。 一、RedirectToAction(“Index”);//一個參數時在本Controller下&#xff0c;不傳入參數。 二、RedirectToAction(A…