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 相关文章推荐
js传值 判断
Oct 26 Javascript
web 页面分页打印的实现
Jun 22 Javascript
Javascript学习笔记2 函数
Jan 11 Javascript
Jquery Ajax学习实例7 Ajax所有过程事件分析示例
Mar 23 Javascript
Javascript获取窗口(容器)的大小及位置参数列举及简要说明
Dec 09 Javascript
得到jQuery detach()后节点中的某个值实现代码
Feb 05 Javascript
详解JavaScript表单验证(E-mail 验证)
Mar 31 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
Jan 03 Javascript
Vue多种方法实现表头和首列固定的示例代码
Feb 02 Javascript
D3.js的基础部分之数组的处理数组的排序和求值(v3版本)
May 09 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
element-ui 实现响应式导航栏的示例代码
May 08 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
mysql 的 like 问题,超强毕杀记!!!
2007/01/18 PHP
php实现批量下载百度云盘文件例子分享
2014/04/10 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
php blowfish加密解密算法
2016/07/02 PHP
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
深入学习JavaScript中的原型prototype
2015/08/13 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
vue 使用ref 让父组件调用子组件的方法
2018/02/08 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
使用Python制作获取网站目录的图形化程序
2015/05/04 Python
十条建议帮你提高Python编程效率
2016/02/16 Python
python并发编程之多进程、多线程、异步和协程详解
2016/10/28 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
基于Python中单例模式的几种实现方式及优化详解
2018/01/09 Python
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
HTML5 拖拽批量上传文件的示例代码
2018/03/28 HTML / CSS
html5 css3网站菜单实现代码
2013/12/23 HTML / CSS
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
.NET方向面试题
2014/11/20 面试题
STP的判定过程
2012/10/01 面试题
水产养殖学应届生求职信
2013/09/29 职场文书
《画风》教学反思
2014/04/16 职场文书
设备管理实施方案
2014/05/31 职场文书
运动会标语
2014/06/21 职场文书
学生逃课检讨书1000字
2014/10/20 职场文书
硕士学位申请报告
2015/05/15 职场文书
复兴之路观后感3000字
2015/06/02 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
css 边框添加四个角的实现代码
2021/10/16 HTML / CSS