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 相关文章推荐
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
javascript学习笔记(五) Array 数组类型介绍
Jun 19 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
Mar 04 Javascript
js实现两个值相加alert出来精确到指定位
Sep 25 Javascript
jQuery控制iFrame(实例代码)
Nov 19 Javascript
js单例模式详解实例
Nov 21 Javascript
angularjs实现下拉列表的选中事件示例
Mar 03 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
May 24 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
vue刷新和tab切换实例
Feb 11 Javascript
VUE预渲染及遇到的坑
Sep 03 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 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读取RSS feed的代码
2008/08/01 PHP
封装一个PDO数据库操作类代码
2009/09/09 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JS代码放在head和body中的区别分析
2011/12/01 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
JavaScript继承学习笔记【新手必看】
2016/05/10 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
js文件中直接alert()中文出来的是乱码的解决方法
2016/11/01 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
JavaScript随机数的组合问题案例分析
2020/05/16 Javascript
Python Socket编程入门教程
2014/07/11 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python遍历文件夹找出文件夹后缀为py的文件方法
2018/10/21 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
解决html5中的video标签ios系统中无法播放使用的问题
2020/08/10 HTML / CSS
机械化及自动化毕业生的自我评价分享
2013/11/06 职场文书
个人教师自我评价范文
2013/12/02 职场文书
家长会主持词开场白
2014/03/18 职场文书
乔丹名人堂演讲稿
2014/05/24 职场文书
群众路线调研报告范文
2014/11/03 职场文书
银行招聘自荐信
2015/03/06 职场文书
2015年新农合工作总结
2015/03/30 职场文书
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
Python函数中apply、map、applymap的区别
2021/11/27 Python
Elasticsearch 配置详解
2022/04/19 Java/Android
二维码条形码生成的JavaScript脚本库
2022/07/07 Javascript