最近要把vue脚手架开发的一个项目上线,只知道vue脚手架是基于node的服务端项目,那么只需要 npm run dev 就可以轻松启动整个项目,当我想当然的给服务器配置合适的node环境(这里也遇到了坑,服务器系统对node版本的兼容性等),然后想当然的把整个项目源文件拷贝到服务器上,满心欢喜地去线上测试~~

悲剧发生了,停在启动页(首页)迟迟没有反应。我嘞个去,一看network请求,app.js这个被webpack打包的引用依赖文件足足14.7M,我的天,我用的测试服务器只有1M的带宽,也就是说客户机网络足够快,再忽略掉传输损耗等因素,这个页面也得加载十几秒(理想状态下)。实际的情况是一两分钟之后app.js才能加载完成,开始首页渲染。这肯定是不能接受的情况。

怎么解决呢?我的踩坑过程是这样的(如果是一步到位看最终解决方案,请跳过,直接看最后一部分)

1.找寻webpack打包app.js的原理和优化方案,没想到网上遇到这种情况的还挺多,

于是乎,就按照上面的方案去做,把vue\vue-resouce、vue-router等取消本地依赖打包,换成静态资源外链的形式,当然也用了路由懒加载,app.js突飞猛进缩小到了8M,但是还是不行啊,加载时间还是1min左右。当时的目标是能缩减到2M左右,这样作为开发者的我还算能接受,用户能不能接受我就不知道了。哈哈哈。

项目中用到了echart和v-chart这两个东西比较大。感觉肯定吃掉了我很大的空间,预示就想把他们外链出去,想法是对的,但是v-charts的外链依然碰壁连连。确实这样做貌似也看到了曙光,app.js可以缩小到3M,但是v-charts在项目中不起作用了,所以说我可能看到的只是假象。

2.基于前面的尝试,让我觉得应该寄希望于webpack打包机制,于是乎做好了啃新的准备,看了一上午,把代码优化到7M左右,效果不明显啊!

我甚至觉得我之前的依赖有多余的吧,要不要精简一下,但是不好下手,删一个就报错。准备重构项目了!又去安装了脚手架的3.0版,哎,3.0.和2.0还是差别蛮大的,也是一鼻子灰。

然后就是最后的解决方法了,其实就是一个误区啦!!(稍后更新)

3.误区解读:其实vue脚手架本身就提供两种模式 开发模式&生产模式  也就是npm run dev&npm run build;我们发布版本上线的时候是要用生产模式,打包之后的文件目录格式是这样的:

生成dist文件夹就是你可以直接放到服务器上的文件,其中包括了静态资源文件,还有那些依赖文件都已经打包进index.html并且进行了压缩。

值得注意的是当你用build打包的时候有个地方的配置需要改一下:看下图

这两个地方之前是原本静态资源的相对路径,因为打包完之后index和static文件夹在同一目录下,所以改成当前路径。

一直以来的误区就是脚手架必须依赖与node环境,实际不然,只是开发模式,发布之后就是普通的html,可以跑在之前的服务器下。

这样一来,你会发现app.js和vendor.js都不过几百K的大小,一般超不过1M,运行速度大大提高。

上面说到的vue脚手架其实不准确,应该是基于vue脚手架和elementui的开源后台管理项目vueAdmin!(并非原生的vue脚手架,不过除了启动命令没太大区别,原生命令看这里)在GitHub 上有源码。

基于vue脚手架的项目打包上线(发布)方法和误区的更多相关文章

  1. 从零开始搭建vue移动端项目到上线的步骤

    初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack myproject(项目目录 ...

  2. Vue脚手架搭建项目

    全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ ...

  3. 基于node的前端项目代码包发布至nexus

    目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 配置angular.json文件... 1 2.2. 配置package.json文件... 1 2.3. 复制git地址. ...

  4. vue+webpack+element-ui项目打包优化速度与app.js、vendor.js打包后文件过大

    从开通博客到现在也没写什么东西,最近几天一直在研究vue+webpack+element-ui项目打包速度优化,想把这几天的成果记录下来,可能对前端牛人来说我这技术比较菜,但还是希望给有需要的朋友提供 ...

  5. 基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式

    在基于Vue的工作流项目模块中,我们在查看表单明细的时候,需要包含公用表单信息,特定表单信息两部分内容.前者表单数据可以统一呈现,而后者则是不同业务的表单数据不同.为了实现更好的维护性,把它们分开作为 ...

  6. vue.js项目打包上线

    最近一直坚持每个月写一个小的vue.js 开发的项目,最后开发完成后想到很久之前给别人回答的一个问题:vue的项目如何上线,当时有千奇百怪的回答,我在想,这些人都是肿了么,vue的官方都说了,这个框架 ...

  7. 基于Vue的WebApp项目开发(二)

    利用webpack解析和打包.vue组件页面 相关知识: vue项目中的每个页面其实都是一个.vue的文件,这种文件,Vue称之为组件页面,必须借助于webpack的vue-loader才能运行,所以 ...

  8. 基于Vue的WebApp项目开发(一)

    了解webpack的魔力: 项目结构以及开发环境 webpack初体验之打包文件 1.首先创建三个文件,分别是index.html.main.js和calc.js index.html <!DO ...

  9. 从零开始搭建vue移动端项目到上线

    先来看一波效果图 初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack mypro ...

随机推荐

  1. 我的Java编码规范

    1.类名采用驼峰命名法,首字母大写. 2.类变量采用驼峰命名法,首字母小写. 3.方法名是一个动词短语,首字母小写,尽量能描述清楚这个方法的意图. 4.注释在精不在多,一个好的注释要尽量描述出这段代码 ...

  2. java 阿里云接口实现发送短信验证码

    此刻自己做的小项目中,需要用到手机发送短信验证码实现注册功能,于是就去阿里云注册了账号,并实现随机发送验证码的功能 第一步:在阿里云官网登录注册   已有支付宝或淘宝的账号可以直接登录,最后需要实名认 ...

  3. 【Machine Learning】决策树之简介(1)

    Content 1.decision tree representation 2.ID3:a top down learning algorithm 3.expressiveness of data ...

  4. 【Udacity】机器学习性能评估指标

    评估指标 Evaluation metrics 机器学习性能评估指标 选择合适的指标 分类与回归的不同性能指标 分类的指标(准确率.精确率.召回率和 F 分数) 回归的指标(平均绝对误差和均方误差) ...

  5. Java—maven项目管理

    Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. Maven环境搭建 http://maven.apache.org/download.c ...

  6. Java中的volatile关键字的功能

    Java中的volatile关键字的功能 volatile是java中的一个类型修饰符.它是被设计用来修饰被不同线程访问和修改的变量.如果不加入volatile,基本上会导致这样的结果:要么无法编写多 ...

  7. ASPNET MVC Error 403.14

    今天创建了一个新的ASPNET MVC 项目部署到本地, 生成成功后在浏览器中输入URL却发现报这个错 解决办法: 因为我的站点是4.5的,但是我没有设置Application Pool所以当前还是默 ...

  8. openAI最近推出了一个新的语言模型 "GPT-2"

    [转]openAI最近推出了一个新的语言模型 "GPT-2",由于效果太好(?)几乎可以以假乱真,所以openAI正在犹豫是否把这个project完整release出来.(于是有人 ...

  9. 一个asp.net小项目总结

    写这篇文章之前先吐槽一下,最近换了一个公司,是给一个国企做外包,有两个月了,感觉这里的气氛有点不爽,还有点怀念以前的公司.具体听我说来,这里有几个团队,.net,java,手机开发,.net只有6个人 ...

  10. CSAPP buffer lab记录——IA32版本

    CSAPP buffer lab为深入理解计算机系统(原书第二版)的配套的缓冲区溢出实验,该实验要求利用缓冲区溢出的原理解决5个难度递增的问题,分别为smoke(level 0).fizz(level ...