vue项目打包部署到服务器的方法示例


Posted in Javascript onAugust 27, 2018

上上一篇我写过一些关于vue项目部署到linux服务器的文章,但是那是以node作为开发环境 pm2 守护进程的方式,让他能正常运行,可是还是出现了问题,因为属于与APP交互的页面,在webView中打开过慢,APP的用户体验非常的差,所以我查找了资料,改变了部署方式,接下来我介绍一下

这一次,我想Tomcat为例

我们先看一下Linux中 Tomcat下面的目录结构:

vue项目打包部署到服务器的方法示例

以vue-cli 搭建出来的手脚架 webpack的模板下的/config/index.js,这里可以看到assetsPublicPath这个键,而且还有两次,中间我自己挖过的坑我就不说了,这里要说的是,刚才两个键的后面都进行一次修改,都加一个 './'

为什么要改这里呢,是因为路径问题,如果不修改,部署到Tomcat上会出现空白页

接下来我来贴出我修改后的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这个键的值 "/" ,改成"./"

这里我还想提一下我中间遇到的坑:

在开发模式的时候我们会在这里配置proxyTable: {}, 配置他的原因是为了开发的时候解决前后端分离跨域问题的

这里一般我们会这么去写

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': ''
   }
  }
 },

记住,这么写是为了开发模式的时候方便前后分离开发,但是我们在打包的时候一定要去掉这一部分了,因为在同一环境同端口下是不存在跨域问题的了

而我这里打包的时候就把这一部分给去掉了

变成proxyTable: {}

与此同时,我们在开发模式的时候写axios时会在接口前面加一个"/api" 我们在打包之前同样要去掉,变成后端给的那种接口,这样在部署到服务器的时候,接口路径才能正确

接下来我们还需要修改一个地方 vue-router

vue单页面应用绝大部分都用到了这个vue-router,所以我们这里也需要做一部分修改就需要给 src/router/index.js添点东西,如下面:

export default new Router({
 mode : 'history',
 base: '/dist/', //添加的地方
 routes: [
  {
   path: '/',
   name: 'index',
   component: index
  }
 ]
})

然后我们再执行npm run build ,就能发现我们打包出来的一个文件dist 而这个打包好的文件在这个项目的根目录下,我们把他放到Tomcat的目录下的WebApps中,就跨域访问到你的页面了

http://59.111.111.11:4000/dist/

备注:记得开通服务器上的端口号,要不然也是访问失败。

需要注意的是:图片资源命名的时候不要有中文,因为中文的话服务器访问可能图片显示不出来。

如果遇到Vue 项目部署到服务器的问题,请点击此文章https://3water.com/article/129750.htm,或许能找到解决方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Mozilla 表达式 __noSuchMethod__
Apr 05 Javascript
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
js获取窗口相对于屏幕左边和上边的位置坐标
May 15 Javascript
javascript中parseInt()函数的定义和用法分析
Dec 20 Javascript
Node.js编程中客户端Session的使用详解
Jun 23 Javascript
AngularJS中的$watch(),$digest()和$apply()区分
Apr 04 Javascript
微信小程序 引入es6 promise
Apr 12 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
最实用的JS数组函数整理
Dec 05 Javascript
angular2模块和共享模块详解
Apr 08 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
Jun 26 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 Javascript
解决vue中修改了数据但视图无法更新的情况
Aug 27 #Javascript
解决vue接口数据赋值给data没有反应的问题
Aug 27 #Javascript
vue 修改 data 数据问题并实时显示的方法
Aug 27 #Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 #Javascript
解决vue中修改export default中脚本报一大堆错的问题
Aug 27 #Javascript
vue.js 图片上传并预览及图片更换功能的实现代码
Aug 27 #Javascript
JS常见构造模式实例对比分析
Aug 27 #Javascript
You might like
PHP提示Notice: Undefined variable的解决办法
2012/11/24 PHP
学习php中的正则表达式
2014/08/17 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
javascript Array.sort() 跨浏览器下需要考虑的问题
2009/12/07 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
vue单页缓存存在的问题及解决方案(小结)
2018/09/25 Javascript
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
JS函数本身的作用域实例分析
2020/03/16 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
[02:36]DOTA2英雄基础教程 斯拉克
2013/11/29 DOTA
[36:37]2014 DOTA2华西杯精英邀请赛5 24 VG VS iG
2014/05/25 DOTA
videocapture库制作python视频高速传输程序
2013/12/23 Python
Python编写Windows Service服务程序
2018/01/04 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
解决PyCharm IDE环境下,执行unittest不生成测试报告的问题
2020/09/03 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
销售类个人求职信范文
2013/09/25 职场文书
关于读书的演讲稿
2014/05/07 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
关于工作时间玩手机的检讨书
2014/09/18 职场文书
放假通知范文
2015/04/14 职场文书
海洋天堂观后感
2015/06/05 职场文书
行为习惯主题班会
2015/08/14 职场文书
掌握一个领域知识,高效学习必备方法
2019/08/08 职场文书
MyBatis核心源码深度剖析SQL语句执行过程
2022/05/20 Java/Android
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL