vue2.x学习笔记(二十八)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12682573.html。
生产环境部署
以下大多数内容在你使用vue cli的时候都是默认开启的,仅跟你自定义的构建设置有关。
开启生产环境模式
在开发环境下,vue会提供很多的警告来帮助你对付常见的错误与陷阱。而在生产环境下,这些警告语句却没有用,反而会增加应用的体积。此外,有些警告检查还有一些比较小的运行时开销,而这是在生产环境模式下可以避免的。
不使用构建工具的情况
如果使用vue的完整独立版本,即直接用<script>元素引入vue而不提前进行构建,请记得在生产环境下使用压缩后的版本(vue.min.js)。
使用构建工具的情况
当使用webpack或Browserify类似的构建工具时,vue源码会根据【process.env.NODE_ENV】属性来决定是否启用生产环境模式,默认情况为开发环境模式。在webpack与Browserify中都有方法来覆盖此变量,以启用vue的生产环境模式,同时在构建过程中警告语句也会被压缩工具去除。所有这些在vue-cli模板中都预先配置好了,但是了解以下怎样配置会更好。
在webpack4+中,可以使用mode选项:
module.exports = {
mode: 'production'
}
但是在webpack3以及更低的版中中,则需要使用DefinePlugin:
var webpack = require('webpack')
module.exports = {
// ...
plugins: [
// ...
new webpack.DefinePlugin({
'process.env.NODE_ENV': JSON.stringify('production')
})
]
}
而Browserify或Rollup等其他构建工具也提供了相应的方法,需要时查阅官方文档即可。
模板预编译
当使用dom内模板或javascript内的字符串模板时,模板会在运行时被编译为渲染函数。通常情况下这个过程已经足够快了,但是对性能敏感的应用还是最好避免这种用法。
预编译模板最简单的方式就是使用单文件组件(single-file components),相关的构建设置会自动把预编译处理好,所以构建好的代码已经包含了编译出来的渲染函数而不是原始的模板字符串。
如果你使用webpack,并喜欢分离javascript和模板文件,你可以使用vue-template-loader,它可以在构建过程中把模板文件转换称为javascript渲染函数。
提取组件的CSS
当使用单文件组件的时候,组件内的css会以<style>标签的方式通过javascript动态注入。这有一些小小的运行时开销,如果你使用服务器渲染,这会导致一段【无样式内容闪烁(fouc)】。将所有组件的css提取到同一个文件可以就避免这个问题,也会让css更好地进行压缩和缓存。
查阅这个构建工具各自的文档来了解:
1.webpack+vue-loader(vue-cli的webpack模板已经预先配置好)。
2.Browserify+vueify。
3.Rollup+rollup-plugin-vue。
跟踪运行时的错误
如果在组件渲染的时候出现运行时错误,错误将会被传递至全局【Vue.config.errorHandler】配置函数(如果已经设置)。利用这个钩子函数来配合跟踪服务是个不错的主意,比如在函数中打印出具体的错误信息直接定位错误原因。另外可以使用Sentry插件,它为vue提供了官方集成。
"我还是很喜欢你,像雨洒落热带极地,不远万里。"
vue2.x学习笔记(二十八)的更多相关文章
- Java学习笔记二十八:Java中的接口
Java中的接口 一:Java的接口: 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承 ...
- Java基础学习笔记二十八 管家婆综合项目
本项目为JAVA基础综合项目,主要包括: 熟练View层.Service层.Dao层之间的方法相互调用操作.熟练dbutils操作数据库表完成增删改查. 项目功能分析 查询账务 多条件组合查询账务 添 ...
- angular学习笔记(二十八-附2)-$http,$resource中的promise对象
下面这种promise的用法,我从第一篇$http笔记到$resource笔记中,一直都有用到: HttpREST.factory('cardResource',function($resource) ...
- angular学习笔记(二十八-附1)-$resource中的资源的方法
通过$resource获取到的资源,或者是通过$resource实例化的资源,资源本身就拥有了一些方法,$save,$delete,$remove,可以直接调用来保存该资源: 比如有一个$resour ...
- angular学习笔记(二十八)-$http(6)-使用ngResource模块构建RESTful架构
ngResource模块是angular专门为RESTful架构而设计的一个模块,它提供了'$resource'模块,$resource模块是基于$http的一个封装.下面来看看它的详细用法 1.引入 ...
- PHP学习笔记二十八【抽象类】
<?php //定义一个抽象类.主要用来被继承 //如果一个类继承了抽象类,则它必须实现该抽象类的所有抽象方法(除非它自己也是抽象类) // abstract class Animal{ pub ...
- vue2.x学习笔记(十八)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12629705.html. 处理边界情况 这里记录的都是和处理边界情况有关的功能,即一些需要对vue的规则做一些小调 ...
- Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)
在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- python3.4学习笔记(二十五) Python 调用mysql redis实例代码
python3.4学习笔记(二十五) Python 调用mysql redis实例代码 #coding: utf-8 __author__ = 'zdz8207' #python2.7 import ...
随机推荐
- 并发——详细介绍CAS机制
一.前言 今天花了点时间了解了一下JDK1.8中ConcurrentHashMap的实现,发现它实现的主要思想就是依赖于CAS机制.CAS机制是并发中比较重要的一个概念,所以今天这篇博客就来详细介 ...
- Oracle数据库表和表列讲解
如果将数据库比作一个存储东西的储物柜,表就像是储物柜上的各个抽屉,每个抽屉分门别类地存放了各种数据,在设计和规划数据库时,表的定义和规划往往相当重要,良好的表设计决定了程序人员编写程序的便利性与数据库 ...
- 构建LNMP
构建LNMP 案例1:部署LNMP环境 案例2:构建L ...
- php静态变量的运用
<?php $count = 5; function get_count() { static $count = 0; return $count++; } echo $count; echo ...
- scratch 如何改变变量的作用域
在新建变量的时候,有个选项是“适用于所有角色”还是“仅适用于当前角色”.通常称前者为全局变量,所有角色都可以访问到这个变量:后者,称为局部变量,只能在当前角色里访问到这个变量.例如,在使用克隆功能时, ...
- 分享layui的table的一些小技巧,前端分页
最近一直在折腾报表,期间使用了layui的table做展示(版本号:2.5.5) 起初:以为是查询结果出来后,前端和服务端分页一弄就完事了,参考例子,但是sql写得太长太长了,翻页困难,数据库是老旧的 ...
- 多角度让你彻底明白yield语法糖的用法和原理及在C#函数式编程中的作用
如果大家读过dapper源码,你会发现这内部有很多方法都用到了yield关键词,那yield到底是用来干嘛的,能不能拿掉,拿掉与不拿掉有多大的差别,首先上一段dapper中精简后的Query方法,先让 ...
- String 对象-->charAt() 方法
1.定义和用法 charAt() 方法获取指定下标的字符,下标从0开始 语法: string.charAt(index) 参数: index:指定的下标 举例:获取下标为2的字符 var str = ...
- 区间dp入门+例题
区间dp作为线性dp的一种,顾名思义是以区间作为阶段进行dp的,使用它的左右端点描述每个维度,决策往往是从小状态向大状态转移中推得的.它跟st表等树状结构有着相似的原理---向下划分,向上递推. dp ...
- python3(二十六)slots
""" """ __author__ = 'shaozhiqi' # python是动态语言,所以定义类后,我们可以动态的给类绑定属性和方法 ...