基于vue脚手架的项目打包上线(发布)方法和误区
最近要把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脚手架的项目打包上线(发布)方法和误区的更多相关文章
- 从零开始搭建vue移动端项目到上线的步骤
初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack myproject(项目目录 ...
- Vue脚手架搭建项目
全局安装vue脚手架 $ npm install -g vue-cli 卸载方法 $ npm uninstall -g vue-cli 查看vue版本(注意:大写的V) $ vue -V 创建项目 $ ...
- 基于node的前端项目代码包发布至nexus
目录 目录... 3 1. 前言... 1 2. 配置... 1 2.1. 配置angular.json文件... 1 2.2. 配置package.json文件... 1 2.3. 复制git地址. ...
- vue+webpack+element-ui项目打包优化速度与app.js、vendor.js打包后文件过大
从开通博客到现在也没写什么东西,最近几天一直在研究vue+webpack+element-ui项目打包速度优化,想把这几天的成果记录下来,可能对前端牛人来说我这技术比较菜,但还是希望给有需要的朋友提供 ...
- 基于Vue的工作流项目模块中,使用动态组件的方式统一呈现不同表单数据的处理方式
在基于Vue的工作流项目模块中,我们在查看表单明细的时候,需要包含公用表单信息,特定表单信息两部分内容.前者表单数据可以统一呈现,而后者则是不同业务的表单数据不同.为了实现更好的维护性,把它们分开作为 ...
- vue.js项目打包上线
最近一直坚持每个月写一个小的vue.js 开发的项目,最后开发完成后想到很久之前给别人回答的一个问题:vue的项目如何上线,当时有千奇百怪的回答,我在想,这些人都是肿了么,vue的官方都说了,这个框架 ...
- 基于Vue的WebApp项目开发(二)
利用webpack解析和打包.vue组件页面 相关知识: vue项目中的每个页面其实都是一个.vue的文件,这种文件,Vue称之为组件页面,必须借助于webpack的vue-loader才能运行,所以 ...
- 基于Vue的WebApp项目开发(一)
了解webpack的魔力: 项目结构以及开发环境 webpack初体验之打包文件 1.首先创建三个文件,分别是index.html.main.js和calc.js index.html <!DO ...
- 从零开始搭建vue移动端项目到上线
先来看一波效果图 初始化项目 1.在安装了node.js的前提下,使用以下命令 npm install --g vue-cli 2.在将要构建项目的目录下 vue init webpack mypro ...
随机推荐
- JAVA版-微信高清语音.speex转.wav格式
功能介绍: PC端将.speex文件解码为*.wav文件 使用场景: 在MAC/Linux下Java JNI 调用C Speex,后端Java处理微信服务器下载下来的微信高清语音.speex解码为.w ...
- FLASK日志记录
from flask import Flask from flask_restful import Resource, Api import logging app = Flask(__name__) ...
- cocos-creator 脚本逻辑-1
1.节点 编辑组件的脚本文件时.可以通过以下语句获得节点 this 就是当前组件 this.node 拿到组件依附的节点 This.node.parent 拿到组件依附的节点 的父节点 This.no ...
- css3之背景定位
属性: background-position: left top || left bottom || right top || right bottom || center center || 像素 ...
- Angular-ui/bootstarp modal 主控制器与模态框控制器传值
调用模态框: $scope.open = function (size) { //这里很关键,是打开模态框的过程 var modalInstance = $uibModal.open({ animat ...
- CentOS 7运维管理笔记(12)----GUI配置工具Webmin的安装
早期的Linux系统管理员或是Web管理员在修改服务器配置时使用最多的就是vi编辑器,但是现在越来越多的基于GUI界面的配置工具出现了,毕竟人们还是喜欢以直接的可视化的方式来修改服务器的配置,而不是再 ...
- vue中全局引入bootstrap.css
1.首先在官网上下载bootstrap的压缩包(必须是官网上下载的) 将压缩包解压后引入在项目文件夹下面.如下图所示: 2.在main.js中引入 import './assets/bootstrap ...
- Winform访问本地SQLServer数据库文件
Winform访问本地SQLServer数据库文件 1.项目中添加config配置,如下: <configuration> <connectionStrings> <ad ...
- Django_MTV模型
创建DJango项目过程: 1:安装Django包 方式一:pip3 install django 方式二:pycharm-->file--->settings-->找到projec ...
- Android Studio最新稳定版下载 - 百度网盘(更新于2017年7月14日)
Android Studio是一个为Android平台开发程序的集成开发环境,其包含用于构建Android应用所需的所有工具.Android Studio 2.3.3为最新稳定版(截止到2017年7月 ...


