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 相关文章推荐
javascript vvorld 在线加密破解方法
Nov 13 Javascript
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
Aug 23 Javascript
javascript为下拉列表动态添加数据项
May 23 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
BootStrap中Table分页插件使用详解
Oct 09 Javascript
js 获取html5的data属性实现方法
Jul 28 Javascript
angular 实现的输入框数字千分位及保留几位小数点功能示例
Jun 19 Javascript
详解在vue-test-utils中mock全局对象
Nov 07 Javascript
小程序实现录音上传功能
Nov 22 Javascript
详解Vue3 Composition API中的提取和重用逻辑
Apr 29 Javascript
vue.js实现简单购物车功能
May 30 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使用PDO方法详解
2014/12/27 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
PHP面向对象五大原则之依赖倒置原则(DIP)详解
2018/04/08 PHP
JavaScript下申明对象的几种方法小结
2008/10/02 Javascript
鼠标悬浮停留三秒后自动显示大图js代码
2014/09/09 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
AngularJS 与百度地图的结合实例
2016/10/20 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
2016/12/11 Javascript
纯JS实现图片验证码功能并兼容IE6-8(推荐)
2017/04/19 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
Angularjs中date过滤器失效的问题及解决方法
2018/07/06 Javascript
Vue常用的几个指令附完整案例
2018/11/06 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
jquery操作select常见方法大全【7种情况】
2019/05/28 jQuery
vue实现侧边栏导航效果
2019/10/21 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
小程序分享链接onShareAppMessage的具体用法
2020/05/22 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
解决pycharm无法识别本地site-packages的问题
2018/10/13 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
PyCharm 配置远程python解释器和在本地修改服务器代码
2019/07/23 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
LivingSocial爱尔兰:爱尔兰本地优惠
2018/08/10 全球购物
焊接专业毕业生求职信
2013/10/01 职场文书
酒吧总经理岗位职责
2013/12/10 职场文书
先进集体事迹材料
2014/02/17 职场文书
党的群众路线教育实践活动心得体会900字
2014/03/07 职场文书
有兼职工作经历的简历自我评价
2014/03/07 职场文书
2016年大学生社会实践心得体会
2015/10/09 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
2016年第29个世界无烟日宣传活动总结
2016/04/06 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
python 命令行传参方法总结
2021/05/25 Python
MySQL令人大跌眼镜的隐式转换
2021/08/23 MySQL