vue項(xiàng)目打包部署到服務(wù)器的方法示例
上上一篇我寫(xiě)過(guò)一些關(guān)于vue項(xiàng)目部署到linux服務(wù)器的文章,但是那是以node作為開(kāi)發(fā)環(huán)境 pm2 守護(hù)進(jìn)程的方式,讓他能正常運(yùn)行,可是還是出現(xiàn)了問(wèn)題,因?yàn)閷儆谂cAPP交互的頁(yè)面,在webView中打開(kāi)過(guò)慢,APP的用戶(hù)體驗(yàn)非常的差,所以我查找了資料,改變了部署方式,接下來(lái)我介紹一下
這一次,我想Tomcat為例
我們先看一下Linux中 Tomcat下面的目錄結(jié)構(gòu):
以vue-cli 搭建出來(lái)的手腳架 webpack的模板下的/config/index.js,這里可以看到assetsPublicPath這個(gè)鍵,而且還有兩次,中間我自己挖過(guò)的坑我就不說(shuō)了,這里要說(shuō)的是,剛才兩個(gè)鍵的后面都進(jìn)行一次修改,都加一個(gè) './'
為什么要改這里呢,是因?yàn)槁窂絾?wèn)題,如果不修改,部署到Tomcat上會(huì)出現(xiàn)空白頁(yè)
接下來(lái)我來(lái)貼出我修改后的config/index.js的配置
'use strict' // Template version: 1.1.3 // see http://vuejs-templates.github.io/webpack for documentation. const path = require('path') module.exports = { build: { env: require('./prod.env'), index: path.resolve(__dirname, '../dist/index.html'), assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublicPath: './', productionSourceMap: true, // Gzip off by default as many popular static hosts such as // Surge or Netlify already gzip all static assets for you. // Before setting to `true`, make sure to: // npm install --save-dev compression-webpack-plugin productionGzip: false, productionGzipExtensions: ['js', 'css'], // Run the build command with an extra argument to // View the bundle analyzer report after build finishes: // `npm run build --report` // Set to `true` or `false` to always turn it on or off bundleAnalyzerReport: process.env.npm_config_report }, dev: { env: require('./dev.env'), port: process.env.PORT || 4000, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: {}, // CSS Sourcemaps off by default because relative paths are "buggy" // with this option, according to the CSS-Loader README // (https://github.com/webpack/css-loader#sourcemaps) // In our experience, they generally work as expected, // just be aware of this issue when enabling this option. cssSourceMap: false } }
是不是修改的都是 assetsPublicPath這個(gè)鍵的值 "/" ,改成"./"
這里我還想提一下我中間遇到的坑:
在開(kāi)發(fā)模式的時(shí)候我們會(huì)在這里配置proxyTable: {}, 配置他的原因是為了開(kāi)發(fā)的時(shí)候解決前后端分離跨域問(wèn)題的
這里一般我們會(huì)這么去寫(xiě)
dev: { env: require('./dev.env'), port: 4000, autoOpenBrowser: true, assetsSubDirectory: 'static', assetsPublicPath: '/', proxyTable: { '/api': { changeOrigin: true, target: 'http://192.168.0.116:8080', pathRewrite: { '^/api': '' } } },
記住,這么寫(xiě)是為了開(kāi)發(fā)模式的時(shí)候方便前后分離開(kāi)發(fā),但是我們?cè)诖虬臅r(shí)候一定要去掉這一部分了,因?yàn)樵谕画h(huán)境同端口下是不存在跨域問(wèn)題的了
而我這里打包的時(shí)候就把這一部分給去掉了
變成proxyTable: {}
與此同時(shí),我們?cè)陂_(kāi)發(fā)模式的時(shí)候?qū)慳xios時(shí)會(huì)在接口前面加一個(gè)"/api" 我們?cè)诖虬巴瑯右サ?,變成后端給的那種接口,這樣在部署到服務(wù)器的時(shí)候,接口路徑才能正確
接下來(lái)我們還需要修改一個(gè)地方 vue-router
vue單頁(yè)面應(yīng)用絕大部分都用到了這個(gè)vue-router,所以我們這里也需要做一部分修改就需要給 src/router/index.js添點(diǎn)東西,如下面:
export default new Router({ mode : 'history', base: '/dist/', //添加的地方 routes: [ { path: '/', name: 'index', component: index } ] })
然后我們?cè)賵?zhí)行npm run build ,就能發(fā)現(xiàn)我們打包出來(lái)的一個(gè)文件dist 而這個(gè)打包好的文件在這個(gè)項(xiàng)目的根目錄下,我們把他放到Tomcat的目錄下的WebApps中,就跨域訪(fǎng)問(wèn)到你的頁(yè)面了
http://59.111.111.11:4000/dist/
備注:記得開(kāi)通服務(wù)器上的端口號(hào),要不然也是訪(fǎng)問(wèn)失敗。
需要注意的是:圖片資源命名的時(shí)候不要有中文,因?yàn)橹形牡脑?huà)服務(wù)器訪(fǎng)問(wèn)可能圖片顯示不出來(lái)。
如果遇到Vue 項(xiàng)目部署到服務(wù)器的問(wèn)題,請(qǐng)點(diǎn)擊此文章http://chabaoo.cn/article/129750.htm,或許能找到解決方法
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Vue.js實(shí)現(xiàn)一個(gè)循環(huán)倒計(jì)時(shí)功能
在Web應(yīng)用中,倒計(jì)時(shí)功能常用于各種場(chǎng)景,如活動(dòng)倒計(jì)時(shí)、定時(shí)任務(wù)提醒等,Vue.js作為一款輕量級(jí)的前端框架,提供了豐富的工具和API來(lái)實(shí)現(xiàn)這些功能,本文將詳細(xì)介紹如何使用Vue.js實(shí)現(xiàn)一個(gè)循環(huán)倒計(jì)時(shí)功能,需要的朋友可以參考下2024-09-09vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取完整步驟
Vue的數(shù)據(jù)綁定功能非常強(qiáng)大,很適合用來(lái)讀取Excel內(nèi)容,這篇文章主要給大家介紹了關(guān)于vue實(shí)現(xiàn)excel文件的導(dǎo)入和讀取的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10vue/react單頁(yè)應(yīng)用后退不刷新方案
本文主要介紹了vue/react單頁(yè)應(yīng)用后退不刷新方案,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-10-10Vue項(xiàng)目中ESLint配置超全指南(VScode)
ESLint是一個(gè)代碼檢查工具,用來(lái)檢查你的代碼是否符合指定的規(guī)范,下面這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目中ESLint配置(VScode)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04vue給input file綁定函數(shù)獲取當(dāng)前上傳的對(duì)象完美實(shí)現(xiàn)方法
這篇文章主要介紹了vue給input file綁定函數(shù)獲取當(dāng)前上傳的對(duì)象完美實(shí)現(xiàn)方法,需要的朋友可以參考下2017-12-12用Vue實(shí)現(xiàn)頁(yè)面訪(fǎng)問(wèn)攔截的方法詳解
大家在做前端項(xiàng)目的時(shí)候,大部分頁(yè)面, 游客都可以直接訪(fǎng)問(wèn) , 如遇到 需要登錄才能進(jìn)行的操作,頁(yè)面將提示并跳轉(zhuǎn)到登錄界面,那么如何才能實(shí)現(xiàn)頁(yè)面攔截并跳轉(zhuǎn)到對(duì)應(yīng)的登錄界面呢,本文小編就來(lái)給大家介紹一下Vue實(shí)現(xiàn)頁(yè)面訪(fǎng)問(wèn)攔截的方法,需要的朋友可以參考下2023-08-08Vue開(kāi)發(fā)實(shí)踐指南之應(yīng)用入口
這篇文章主要給大家介紹了關(guān)于Vue開(kāi)發(fā)實(shí)踐指南之應(yīng)用入口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-01-01