vue的项目如何打包上线


Posted in Vue.js onApril 13, 2022

vue.js项目打包上线

最近一直坚持每个月写一个小的vue.js 开发的项目,最后开发完成后想到很久之前给别人回答的一个问题:vue的项目如何上线,当时有千奇百怪的回答,我在想,这些人都是肿了么,vue的官方都说了,这个框架只是做了view这一层,所以并不是把这些开发完的东西直接拷贝到服务器上,而且需要打包为静态文件上传服务器的。

这里我简单的列出这个过程

首先需要修改一下配置文件再打包,很多人都是遇到过打包后运行一片空白等等问题,这些问题主要就是路径的问题,所以需要修改config下面的index.js这个配置文件里选项:

vue的项目如何打包上线

上图中第一个要修改的就是静态文件的路径,打包后静态文件就在当前目录下,所以修改为./

第二个是环境设置为生产环境

修改好后打开cmd运行下面的命令打包即可:

vue的项目如何打包上线

注意下面的tip,告诉你这个打包后的文件需要放到服务器才能打开,不能直接使用浏览器打开,打包后的文件结构如下:

vue的项目如何打包上线

这时我们需要使用服务器的方式来访问index.html就可以了。这里可能很多人也会遇到一些问题,比如大家可能在开发的时候使用的proxytable来解决跨域的问题,这里就会没有数据了,这个需要自己通过服务器在解决一下才可以的,proxytable在这里只是为了方便大家开发的跨域解决方案。

vue.js打包之后遇到的坑

最近在用webpack+vue写项目,经过几天的熬夜加班改BUG,终于把基本的框架给写完了,后面只要加一些小功能就可以了,太好吧!先来npm run build 打包出来看看吧!

vue的项目如何打包上线

打包中...,我们用本地服务器打开看一下。

额,不看不知道,一看吓一跳,坑咋这么多呢!但是作为一名积极向上的IT从业者,填坑吧。

打包之后没有被渲染出来

vue的项目如何打包上线

怎么回事,刚打开就告诉我啥也没有,这是要搞事情的前奏啊!,我们看一下错误信息,告诉我路径有问题,默默的看一下自己的地址栏和自己的文件所在目录,原来是我的打包文件没有放到根目录下,这个时候我们可以把我们的两个文件放到根目录下,但是作为一名有个性的IT人士,当然要看有没有其他方法。从上面的路径中隐隐约约有点预感,static是直接相对于根目录,说明这有可能打包的时候,有可能设置了绝对路径,如果我改成相对路径,那不就可以了吗。

vue的项目如何打包上线

我们去看一下项目文件下的config>index.js找到里面的build下的assetsPublicPath:'/',把它改成assetsPublicPath:'./',加个小点表示相对路径,不加表示绝对路径。npm run build运行。成功。

路由(router)mode:'history',导致页面不能渲染问题

vue的项目如何打包上线

地址栏的那个#怎么那么让我不舒服呢!对于有轻度强迫症的我来说,这是不能忍不了的。

我们在项目打包前,开发项目时(npm start),在vueRouter里设置mode:"history".可以去掉#号。

这里强行解释一番:

路由(router)默认 hash 模式,使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载,因为对于正常的页面来说,更换URl一定是会导致页面的更换的, 而只有更换URL中的查询字符串和hash值的时候才不会重新加载页面。

路由(router)的history模式,这种模式充分利用了history.pushState API来完成URL的跳转而不需要重新加载页面。没有#号。

npm run build打包中....

什么鬼,为什么我的路由(router)部分没有被渲染出来,这就是history的坑了,解决方法一,会到以前的hash模式;解决方法二,设置routes里的路由name。

vue的项目如何打包上线

这是因为路由(router)无法找到路径中的组件,所以也就无法渲染了。只需要修改 src > router > index.js,在每个path后加上组件名称就行了,这样就可以了。

这里有个小问题:

vue的项目如何打包上线

vue的项目如何打包上线

为了我们的时间考虑,还是放到根目录吧!

首页没有问题了,逐个链接测试一下。

vue的项目如何打包上线

vue的项目如何打包上线

这是什么鬼,路径和其他图片路径一样,图片也存在啊,为啥你就是这么傲娇,就是报错。来看一下控制台。

vue的项目如何打包上线

结合之前的./原来是相对路径问题,是我的开发文件assets下多个图片文件夹。

vue的项目如何打包上线

这个时候为了开发项目的可读性和维护性。只能默默的把前面改的相对路径'./'改回绝对路径'/'了。这就尴尬了,额额额,大家就当没看到哈!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
Vue项目利用axios请求接口下载excel
Nov 17 Vue.js
在vue中动态修改css其中一个属性值操作
Dec 07 Vue.js
Vue实现指令式动态追加小球动画组件的步骤
Dec 18 Vue.js
如何在vue中使用kindeditor富文本编辑器
Dec 19 Vue.js
利用Vue实现简易播放器的完整代码
Dec 30 Vue.js
vue form表单post请求结合Servlet实现文件上传功能
Jan 22 Vue.js
如何管理Vue中的缓存页面
Feb 06 Vue.js
Vue中使用wangeditor富文本编辑的问题
Feb 07 Vue.js
vue中axios封装使用的完整教程
Mar 03 Vue.js
vue实现简单数据双向绑定
Apr 28 Vue.js
vue中div禁止点击事件的实现
Apr 02 Vue.js
vue组件vue-esign实现电子签名
Apr 21 Vue.js
vue2的 router在使用过程中遇到的一些问题
Apr 13 #Vue.js
vue+elementUI实现表格列的显示与隐藏
Apr 13 #Vue.js
如何优化vue打包文件过大
Apr 13 #Vue.js
使用vue判断当前环境是安卓还是IOS
Apr 12 #Vue.js
vue配置型表格基于el-table拓展之table-plus组件
Apr 12 #Vue.js
vue数据字典取键值项目的字典问题
vue报错function () { [native code] },无法出现我们想要的内容 Unknown custom element
You might like
php中生成随机密码的自定义函数代码
2013/10/21 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
php统计文章排行示例
2014/03/04 PHP
合并ThinkPHP配置文件以消除代码冗余的实现方法
2014/07/22 PHP
php中使用Ajax时出现Error(c00ce56e)的详细解决方案
2014/11/03 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
JS判断变量是否为空判断是否null
2014/07/25 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
node.js操作mongodb简单示例分享
2017/05/25 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
vue中页面跳转拦截器的实现方法
2017/08/23 Javascript
详谈js原型继承的一些问题
2017/09/06 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
基于vue.js实现购物车
2020/01/15 Javascript
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
Python中非常实用的一些功能和函数分享
2015/02/14 Python
python引用DLL文件的方法
2015/05/11 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
一行python实现树形结构的方法
2019/08/09 Python
python单向链表的基本实现与使用方法【定义、遍历、添加、删除、查找等】
2019/10/24 Python
Jupyter安装拓展nbextensions及解决官网下载慢的问题
2021/03/03 Python
HTML5触摸事件(touchstart、touchmove和touchend)的实现
2020/05/08 HTML / CSS
小学生获奖感言范文
2014/02/02 职场文书
运动会开幕式解说词
2014/02/05 职场文书
班级光棍节联谊会策划书
2014/10/10 职场文书
2014年防汛工作总结
2014/12/08 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
话题作文之财富(600字)
2019/12/03 职场文书
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python