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 ...
随机推荐
- 艾编程coding老师课堂笔记:java设计模式与并发编程笔记
设计模式概念 1.1 什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路.它不是语法规定,而是一套用来提高代码可复用性.可维护性.可读性. ...
- javascript入门 之 ztree (六 结点的点击和展开/折叠事件)
1.注意: 测试点击事件时,如果要测试取消选中和追加选中,如果按住ctrl和win键无用,则需要先用鼠标左键按住,然后,在松开左键的前几毫秒按住ctrl键便可! <!DOCTYPE html&g ...
- Jdk 和 jre 的 关系和区别
Jdk 和 jre 的 关系和区别 区别: JDK:是Java Development Kit 的简称–>翻译过来就是:Java 开发工具包.是程序员使用java语言编写java程序所需的开发工 ...
- 多平台博客发布工具OpenWrite的使用
1 介绍 OpenWrite官网 OpenWrite是一款便捷的多平台博客发布工具,可以在OpenWrite编写markdown文档,然后发布到其他博客平台,目前已经支持CSDN.SegmentFau ...
- JAVA中基础类型和字串类型之间的相互转换
转自:https://www.imooc.com/code/2251 仅做个人学习记录之用,侵删. 在程序开发中,我们经常需要在基本数据类型和字符串之间进行转换. 其中,基本类型转换为字符串有三种方法 ...
- 条件变量 condition_variable wait
wait(阻塞当前线程,直到条件变量被唤醒) #include <iostream> #include <string> #include <thread> #in ...
- Centos7_Root密码重置
原因: 最近出去见女朋友,竟然忘了Root用户的密码,此时考验linux基础扎不扎实的时候到了... 操作步骤: 解释补充: mount -o remountr,w / #修改根目录文件系统的权限,实 ...
- day22作业
# 1.检索文件夹大小的程序,要求执行方式如下 # python3.8 run.py 文件夹 import os,sys l = sys.argv[1] size = 0 def get_size(f ...
- Grafana-监控-报警-运维文档
Grafana运维文档 2019/09/23 Chenxin Wuweiwei 参考资料 https://grafana.com/grafana https://blog.52itstyle.vip/ ...
- DNA sequence HDU - 1560(IDA*,迭代加深搜索)
题目大意:有n个DNA序列,构造一个新的序列,使得这n个DNA序列都是它的子序列,然后输出最小长度. 题解:第一次接触IDA*算法,感觉~~好暴力!!思路:维护一个数组pos[i],表示第i个串该匹配 ...