Vue应用部署到服务器的正确方式


Posted in Javascript onJuly 15, 2017

本文介绍了Vue应用部署到服务器,分享给大家,希望此文章对各位有所帮助。

很多时候我们发现辛辛苦苦写的VueJs应用经过打包后在自己本地搭建的服务器上测试没有什么问题,但真正放在服务器上后,会发现或多或少的问题,比如:页面出现空白现象,获取资源路径不对等,我相信以VueJs为技术栈来进行前端开发的小伙伴或多或少都会遇到这样的问题,我也遇到过,那现在我们就来一一解决这样的问题。

如何打包

  1. 基于Vue-Cli,通过npm run build来进行打包的操作

如何部署

  1. 将打包出来的资源,基于Vue-Cli的一般是dist目录下有static目录和index.html文件,可以直接将这两个文件扔到服务端
  2. 但有时候,我们会直接将dist文件扔到服务端

出现的问题

  1. 打包到服务器后,出现资源引用路径的问题
  2. 打包到服务器后,出现空白页的问题
  3. 打包到服务器后,出现引入的css的type被拦截转换为"text/plain"问题
  4. 打包到服务器后,出现路由刷新404的问题

出现资源引用路径的解决方案

一般这个问题是由于在webpack配置打包发布的目录造成的。

情况一.如果是将static与index.html直接放在服务器根目录,也就是说,当前的应用访问的网址如:http://www.xxx.com

解决办法:

配置输出的publiPath:"/"或者"./"

情况二.直接将打包后的dist文件放在了服务器的根目录,也就是如果需要访问当前的应用,访问的网址

如:http://www.xxx.com/dist

解决办法:

首先需要在创建路由实例中增加:

const router = new VueRouter({
mode: 'history',
base: '/mobile/',
scorllBehavior: () => ({
y: 0
}),
routes
});

然后再打包发布目录:

publiPath:"/dist/"或者"http://www.xxx.com/dist/"

出现由于路由的history模式下刷新当前路由出现404的问题

今天做的应用发布到服务器上,发现当刷新当前路由的时候,就会出现404的状况,其实这是因为当刷新当前页面时候,所需要访问的资源在服务器上找不到,也就是说,我们在VueJs开发应用的过程中,设置路由的路径不是真实存在的路径,并且使用了history模式。

解决办法

需要后端进行配合,参考https://router.vuejs.org/en/essentials/history-mode.html

出现引入的css的type被拦截转换为"text/plain"问题

这是我开发过程中遇到的感觉很奇葩的问题,我们都知道,一般基于Vue-Cli,通过WebPack打包后的资源不需要更改什么。可是我发现,当我把代码进行上传后,输入网址,看见的页面把我吓坏了,发现所有样式不存在了,第一反应就是认为是自己在进行打包配置过程中出现了什么问题,然后通过fillder进行调试,发现css文件是正确获取到的

 Vue应用部署到服务器的正确方式

可以看到,这个css文件的type被拦截转换为"text/plain",这时候,我又把相关的配置文件看了两遍,后面发现,真的是日了狗了,让我哭一会儿。先上图

Vue应用部署到服务器的正确方式

我擦,原来是服务器端返回的类型居然是"text/plain"。这个问题很好解决,把这图直接给后端,是不是感觉被坑了/(ㄒoㄒ)/~~。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery Easyui Tree的oncheck事件实现代码
May 28 Javascript
THREE.JS入门教程(4)创建粒子系统
Jan 24 Javascript
jquery 淡入淡出效果的简单实现
Feb 07 Javascript
javascript简单实现图片预加载
Dec 03 Javascript
JS获取Table中td值的方法
Mar 19 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
js实现的万能flv网页播放器代码
Apr 30 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
vue实现提示保存后退出的方法
Mar 15 Javascript
js中时间格式化的几种方法
Jul 22 Javascript
vue项目中跳转到外部链接的实例讲解
Sep 20 Javascript
JavaScript流程控制(循环)
Dec 06 Javascript
js+html5实现侧滑页面效果
Jul 15 #Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 #Javascript
Angular2关于@angular/cli默认端口号配置的问题
Jul 15 #Javascript
js编写简单的计时器功能
Jul 15 #Javascript
深入理解angular2启动项目步骤
Jul 15 #Javascript
js+html5实现复制文字按钮
Jul 15 #Javascript
js+html5实现页面可刷新的倒计时效果
Jul 15 #Javascript
You might like
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
JSON 编辑器实现代码
2009/12/06 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
JS中typeof与instanceof之间的区别总结
2013/11/14 Javascript
原生js实现移动开发轮播图、相册滑动特效
2015/04/17 Javascript
js精美的幻灯片画集特效代码分享
2015/08/29 Javascript
jQuery Validate表单验证插件 添加class属性形式的校验
2016/01/18 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
Node.js实现数据推送
2016/04/14 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
2016/09/01 Javascript
JQuery获取鼠标进入和离开容器的方向
2016/12/29 Javascript
VUE实现一个分页组件的示例
2017/09/13 Javascript
基于JavaScript中字符串的match与replace方法(详解)
2017/12/04 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
javascript头像上传代码实例
2019/09/28 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
Angular+Ionic使用queryParams实现跳转页传值的方法
2020/09/05 Javascript
Vue中正确使用Element-UI组件的方法实例
2020/10/13 Javascript
JavaScript 绘制饼图的示例
2021/02/19 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
Python实现的手机号归属地相关信息查询功能示例
2017/06/08 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
Django框架首页和登录页分离操作示例
2019/05/28 Python
Python中的流程控制详解
2021/02/18 Python
Bose法国官网:购买耳机、扬声器、家庭影院、专业音响
2017/12/21 全球购物
英国标准协会商店:BSI Shop
2019/02/25 全球购物
工作疏忽检讨书
2014/01/25 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
廉洁自律个人总结
2015/02/14 职场文书
个性与发展自我评价
2015/03/06 职场文书
2015年酒店销售部工作总结
2015/07/24 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android