基于Vue生产环境部署详解


Posted in Javascript onSeptember 15, 2017

前面的话

开发时,Vue 会提供很多警告来帮助解决常见的错误与陷阱。生产时,这些警告语句却没有用,反而会增加载荷量。再次,有些警告检查有小的运行时开销,生产环境模式下是可以避免的。本文将详细介绍Vue生产环境部署

生产环境

如果用 Vue 完整独立版本 (直接用 <script> 元素引入 Vue),生产时应该用精简版本 (vue.min.js)

如果用 Webpack 或 Browserify 类似的打包工具时,生产状态会在 Vue 源码中由 process.env.NODE_ENV 决定,默认在开发状态。Webpack 与 Browserify 两个打包工具都提供方法来覆盖此变量并使用生产状态,警告语句也会被精简掉。每一个 vue-cli 模板有预先配置好的打包工具,但了解怎样配置会更好

【webpack】

使用 Webpack 的 DefinePlugin 来指定生产环境,以便在压缩时可以让 UglifyJS 自动删除代码块内的警告语句

var webpack = require('webpack')
module.exports = {
 // ...
 plugins: [
  // ...
  new webpack.DefinePlugin({
   'process.env': {
    NODE_ENV: '"production"'
   }
  }),
  new webpack.optimize.UglifyJsPlugin({
   compress: {
    warnings: false
   }
  })
 ]
}

【Browserify】

运行打包命令,设置 NODE_ENV 为 "production"。等于告诉 vueify 避免引入热重载和开发相关代码

使用一个全局 envify 转换 bundle 文件。这可以精简掉包含在 Vue 源码中所有环境变量条件相关代码块内的警告语句

NODE_ENV=production browserify -g envify -e main.js | uglifyjs -c -m > build.js

【Rollup】

使用 rollup-plugin-replace:

const replace = require('rollup-plugin-replace')
rollup({
 // ...
 plugins: [
  replace({
   'process.env.NODE_ENV': JSON.stringify( 'production' )
  })
 ]
}).then(...)

预编译模板

当需要处理 DOM 内或 JavaScript 内的模板时,“从模板到渲染函数”的编译就会在线上发生。通常情况下这种处理是足够快的,但是如果应用对性能很敏感最好还是回避。

预编译模板最简单的方式就是使用单文件组件 - 相关的构建设置会自动把预编译处理好,所以构建好的代码已经包含了编译出来的渲染函数而不是原始的模板字符串。

如果使用 Webpack,并且喜欢分离 JavaScript 和模板文件,可以使用 vue-template-loader,它也可以在构建过程中把模板文件转换成为 JavaScript 渲染函数

提取组件的CSS

当使用单文件组件时,组件内的 CSS 会以 <style> 标签的方式通过 JavaScript 动态注入。这有一些小小的运行时开销,如果使用服务端渲染,这会导致一段“无样式的内容瞬间 (fouc)”。横跨所有组件提取 CSS 到同一个文件回避这件事情,这也会更好的压缩和缓存 CSS

跟踪运行时错误

如果在组件渲染时出现运行错误,错误将会被传递至全局 Vue.config.errorHandler 配置函数 (如果已设置)。利用这个钩子函数和错误跟踪服务 (如 Sentry),可能是个不错的主意

以上这篇基于Vue生产环境部署就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE7中javascript操作CheckBox的checked=true不打勾的解决方法
Dec 07 Javascript
jQuery asp.net 用json格式返回自定义对象
Apr 07 Javascript
关于eval 与new Function 到底该选哪个?
Apr 17 Javascript
鼠标滚轮改变图片大小的示例代码
Nov 20 Javascript
超级简单实现JavaScript MVC 样式框架
Mar 24 Javascript
Bootstrap入门书籍之(零)Bootstrap简介
Feb 17 Javascript
AngularJS  自定义指令详解及实例代码
Sep 14 Javascript
Input文本框随着输入内容多少自动延伸的实现
Feb 15 Javascript
Vue.js展示AJAX数据简单示例讲解
Mar 29 Javascript
AngularJs每天学习之总体介绍
Aug 07 Javascript
vue-router之nuxt动态路由设置的两种方法小结
Sep 26 Javascript
Vue源码解析之数组变异的实现
Dec 04 Javascript
基于Vue单文件组件详解
Sep 15 #Javascript
json2.js 入门教程之使用方法与实例分析
Sep 14 #Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
Sep 14 #Javascript
iframe与主框架跨域相互访问实现方法
Sep 14 #Javascript
VsCode插件整理(小结)
Sep 14 #Javascript
推荐VSCode 上特别好用的 Vue 插件之vetur
Sep 14 #Javascript
vue 计时器组件的实现代码
Sep 14 #Javascript
You might like
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
Thinkphp 中 distinct 的用法解析
2016/12/14 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
玩转方法:call和apply
2014/05/08 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
2016/03/03 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
js轮播图代码分享
2016/07/14 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
Bootstrap中glyphicons-halflings-regular.woff字体报404错notfound的解决方法
2017/01/19 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
JavaScript中splice与slice的区别
2017/05/09 Javascript
关于axios如何全局注册浅析
2018/01/14 Javascript
JS/jQuery实现DIV延时几秒后消失或显示的方法
2018/02/12 jQuery
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
webpack结合express实现自动刷新的方法
2019/05/07 Javascript
Python性能优化的20条建议
2014/10/25 Python
python设计模式大全
2016/06/27 Python
详解如何用OpenCV + Python 实现人脸识别
2017/10/20 Python
Django自定义用户认证示例详解
2018/03/14 Python
Django实现全文检索的方法(支持中文)
2018/05/14 Python
django框架使用方法详解
2019/07/18 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
2020/07/14 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
公司领导推荐信
2013/11/12 职场文书
民族团结先进个人材料
2014/02/05 职场文书
机械系毕业生求职信
2014/05/28 职场文书
违反交通法规检讨书
2014/09/10 职场文书
2014年纪委工作总结
2014/12/05 职场文书
实习员工转正的评语汇总,以备不时之需
2019/12/17 职场文书