基于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 相关文章推荐
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
基于jQuery实现表格数据的动态添加与统计的代码
Jan 31 Javascript
js监听输入框值的即时变化onpropertychange、oninput
Jul 13 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
简述Matlab中size()函数的用法
Mar 20 Javascript
js 索引下标之li集合绑定点击事件
Jan 12 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
May 03 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 Javascript
vue中el-input绑定键盘按键(按键修饰符)
Jul 22 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 Javascript
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 Vue.js
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
基于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学习资料汇总与网址
2007/03/16 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
php打包网站并在线压缩为zip
2016/02/13 PHP
CI映射(加载)数据到view层的方法
2016/03/28 PHP
PHP中FTP相关函数小结
2016/07/15 PHP
windows 2008r2+php5.6.28环境搭建详细过程
2019/06/18 PHP
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
基于jquery的使ListNav兼容中文首字拼音排序的实现代码
2011/07/10 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
用jquery中插件dialog实现弹框效果实例代码
2013/11/15 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
微信小程序 wx.uploadFile在安卓手机上面the same task is working问题解决
2016/12/14 Javascript
JS常见创建类的方法小结【工厂方式,构造器方式,原型方式,联合方式等】
2017/04/01 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
jQuery实现select下拉框获取当前选中文本、值、索引
2017/05/08 jQuery
js 获取html5的data属性实现方法
2017/07/28 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
js实现电灯开关效果
2021/01/19 Javascript
python开启多个子进程并行运行的方法
2015/04/18 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
2019/10/27 Python
关于Python3 lambda函数的深入浅出
2019/11/27 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
2020/06/22 Python
css3 伪类选择器快速复习小结
2019/09/10 HTML / CSS
介绍一下Python下range()函数的用法
2013/11/07 面试题
试用期转正鉴定评语
2014/01/27 职场文书
情人节活动策划方案
2014/02/27 职场文书
民事授权委托书范文
2014/08/02 职场文书
给医院的感谢信
2015/01/21 职场文书
大学升旗仪式主持词
2015/07/04 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
Python使用pyecharts控件绘制图表
2022/06/05 Python