vue 开发2017年变化回顾及2018年展望
vue.js 变化
从 github 的发布记录我们可以看到2017年 vue.js 的第一个发布为 v2.1.9,最后一个为 v2.5.13,主要发布小版本 2.2~2.5。这些发布提升了vue 与 TypeScript 的结合、改进了对服务端渲染(SSR)和 native 渲染的支持、提供了更好的测试、开发体验及其他的一些功能与优化。
vue@2.2 变化
1)使用 v-for 必须要添加 key 属性。
2)单文件组件(SFC)标签需要闭合,尽管 html5 中标签没有闭合也是有效的。
3)prop 属性和 computed 属性定义在组件的原型上,而不是作为每个实例自身的属性。
4)更好的错误处理 Vue.config.errorHandler
vue.config.errorHandler = function(err, vm, info) {
// handle error
}
在 2.2.0+,这个钩子函数可以捕获组件生命周期钩子中产生的错误,如果这个函数为 undefined,捕获的错误将会使用 console.error 打印出来而不会使应用崩溃。
在 2.4.0+,也会捕获 vue 自定义事件的 handler 中抛出的错误。
错误追踪服务如 Sentry 和 Bugsnag 提供了和这个选项的官方集成。
5)Vue.util 中暴露的一些方法和属性被移除了。
6)服务端渲染改进
7)组件自定义 v-model
自定义组件允许使用 v-model 时自定义属性和事件,默认使用 value 属性和 input 事件。
8)provide 和 inject
9)vm.$props
可以通过 this.$props 获取组件当前属性
10)<transition> 和 <transition-group> 支持 duration 属性
11)性能分析 Vue.config.performance
12)keep-alive 增加 activated 和 deactivated 钩子函数
13)vm.$on 支持多事件
14)v-on 支持新的 mouse event 修饰符 .left, .right, .middle
15)使用驼峰风格属性将会警告(实际上单文件组件并没有此问题,因为会自动转化为短横线分隔式命名)
vue@2.3 变化
1)许多重要的服务端渲染的改进,发布了 ssr guide。
2)异步组件改进、函数式组件改进
3).sync 修饰符回归。不过只是一个简单的语法糖,:foo.sync 等价于 :foo="bar" @update:foo="val => var = val",子组件更新 foo 的值时,需要明确地触发事件:
this.$emit('update:foo', newValue)
4)Vue.config.errorHandler 支持自定义指令和 nextTick 回调中抛出的错误
5)v-on 支持 .passive 修饰符
6)属性验证支持 type: Symbol
7)style 绑定支持数组
<div :style="{ display: ["-webkit-box", "-ms-flexbox", "flex"] }">
vue@2.4 变化
1)完全的服务端渲染 + 异步组件支持。这意味着在服务端渲染中异步组件/代码分割不再局限于路由级别。
2)inheritAttrs 选项和 $attrs, $listeners
<div>
<input v-bind="$attrs" v-on="$listeners">
</div>
3)v-on 支持对象
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
4)增加 comments 选项
默认 false,设置为 true 时,将会保留 tempalte 里面的 html 注释
5)服务端渲染性能提升了2~8倍(取决于你的组件可以优化多少)
vue@2.5 变化
1)增加 errorCaptured 钩子来增强错误处理
2)TypeScript 声明改进
3)函数式组件改进
template 支持函数式组件
<template functional>
<div>{{ props.foo }}</div>
</template>
4)v-on 改进
添加了 .exact 修饰符
<!-- this will fire even if Alt or Shift is also pressed -->
<button @click.ctrl="onClick">A</button>
<!-- this will only fire when only Ctrl is pressed -->
<button @click.ctrl.exact="onCtrlClick">A</button>
key 修饰符,如:
<input @keyup.page-down="onPageDown">
5)简化的 scoped slot
6)nextTick 内部实现改变
在 v-on 内绑定的事件处理函数中的 DOM 更新延迟由 micro task 改成了 macro task
vue-router 变化
1)传递属性给路由组件
在组件中使用 $route 耦合性非常强,通过传递属性的方式可以解耦,大大增强组件的灵活性。
2)组件内的钩子函数 beforeRouteUpdate
使用这个钩子函数,可以不用像之前那样必须 watch $route
3)router.addRoutes
动态添加路由的利器
4)router.push() 和 router.replace() 支持可选的第二个回调参数(onComplete)和第三个回调参数(onAbort)
5)导航的 next 函数支持接收一个错误作为参数
6)新的 router guard 方法 router.beforeResolve()
7)新的路由实例选项 fallback
控制路由当浏览器不支持 history.pushState 时是否 fallback 到 hash 模式。当服务端渲染需要兼容 ie9 时,设置为 false,因为服务端渲染不能使用 hash 路由模式,而 ie9 不支持 history.pushState。
8)当浏览器支持 history.pushState 时,hash 模式也可以支持 scrollBehavior,同时这个函数也支持返回 Promise。
9)发布了 v3.x,主要是为了兼容 TypeScript。
vuex
vuex 没有大的变化,有添加一下方法。和 vue-router 一样发布了 v3.x,也是为了兼容 TypeScript。
2018 展望
vue 3.x
2018年很有可能发布 Vue 3,这个版本只支持长期更新的浏览器,如 Edge,不会支持 IE。主要改变的是 vue.js 内部,外部 api 会尽量 100% 兼容。对于低版本浏览器,可以使用 vue 2.x,因为2.x 和 3.x 将会同时维护。查看计划
vue-cli 3.x
vue-cli 2.x 暴露了一堆配置,对新手很不友好,更重要是这样很难直观地知道项目相对于默认配置的修改,而且这些配置直接从 github 拉取下来,也没有版本的概念。
vue-cli 3.x 将会只暴露一个配置的 js 文件,并且会预设很多默认配置,可能会类似于 Nuxt.js,具体查看讨论
vue-devtools 4.x(已发布)
新发布的 vue-devtools 比上一个版本强大了很多,支持从页面中选择组件、Inspect DOM、过滤观察的 data/state 等,直接编辑 data 等。
服务端渲染
随着 Nuxt 1.0 正式版本的发布,相信接下来很多公司都会将其用于部分对 SEO 有要求的官网页面。
移动端
weex 和 nativescript-vue 被越来越多的公司用于生产环境了,但是成熟度、流行程度相对于 react 的 react-native 有一段距离。ios11.3 也支持了 Service Workers,也许接下来 PWA 会很流行?
style guide
目前官方只发布了 beta 版的 style guide,接下来可能会发布正式版,配合 eslint-plugin-vue 让我们写出更好的 vue 代码。
vue 开发2017年变化回顾及2018年展望的更多相关文章
- 【转】[总结]vue开发常见知识点及问题资料整理(持续更新)
1.(webpack)vue-cli构建的项目如何设置每个页面的title 2.vue项目中使用axios上传图片等文件 3.qs.stringify() 和JSON.stringify()的区别以及 ...
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- vue开发体验
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 使用vue开发项目需要注意的问题和可能踩到的坑
最近,在公司给一些刚刚使用vue进行开发的同学做了一次分享, 其中包括一些vue开发中需要注意的点, 以及一些可能会踩到的坑.具体内容如下: 一.生命钩子使用需要注意的地方 1.beforeCreat ...
- vue开发项目详细教程(第一篇 搭建环境篇)
最近做vue做项目碰到了不少坑,看了三天文档便开始上手做项目了,不是我牛b,是因为项目紧,我没有时间去深入学习,所以只能一边学一边做了. 我要做的项目是一个官方网站(包括管理后台),也因为是我第一次使 ...
- vue开发小结(上)
前言: 18年年底,就一个字,忙,貌似一到年底哪个公司都在冲业绩,包括我们自己开发自己公司的项目也一样得加把劲.自从18年年初立了个flag17年年终总结——走过2017,迎来2018Flag到现在又 ...
- weex和vue开发环境配置详解(配置系统变量等等)
本文详细讲解如何搭建weex和vue开发环境 安装java 现在java安装包,网上的安装包都是国外的,很难下载下来 就用这个链接下载,亲测无毒,http://www.wmzhe.com/soft-3 ...
- Vue开发入门看这篇文章就够了
摘要: 很多值得了解的细节. 原文:Vue开发看这篇文章就够了 作者:Random Fundebug经授权转载,版权归原作者所有. 介绍 Vue 中文网 Vue github Vue.js 是一套构建 ...
- 十分钟上手-搭建vue开发环境(新手教程)
想写一些关于vue的文章已经很久了,因为这个框架已经火了很久,在公司里用的框架都比较老旧,但怎么也得跟上前端发展变化的潮流,这不,开始使用vue开发项目了,一遍开发一边踩坑中,今天要记录的是五分钟搭建 ...
随机推荐
- 例子:js超级玛丽小游戏
韩顺平_轻松搞定网页设计(html+css+javascript)_第34讲_js超级玛丽小游戏_学习笔记_源代码图解_PPT文档整理 采用面向对象思想设计超级马里奥游戏人物(示意图) 怎么用通过按键 ...
- 使用 mysql PDO 防止sql注入
技巧: 1. php升级到5.3.6+,生产环境强烈建议升级到php 5.3.9+ php 5.4+,php 5.3.8存在致命的hash碰撞漏洞. 2. 若使用php 5.3.6+, 请在在PDO的 ...
- Netty对Protocol Buffer多协议的支持(八)
Netty对Protocol Buffer多协议的支持(八) 一.背景 在上篇博文中笔者已经用代码演示了如何在netty中使用Protocol Buffer,然而细心的用户可能会发现一个明显的不足之处 ...
- Caused by: java.net.ConnectException: Call From master/192.168.199.130 to master:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.
1:安装好hive,准备启动的时候出现下面的错误(由于hive是基于Hadoop的,所以必须先将你的集群启动起来,我就是没有启动集群,直接启动hive导致的错误): [root@master bin] ...
- Linux 常见命令示例【一】
查看端口占用 [查看目前系统上已在监听的网络联机及其pid netstat –tlnp] 文件挂载 Linux与windows文件传输(三方软件:secureCRT, WINscp) 1)sftp S ...
- 【动态规划】洛谷P1006传纸条
题目描述: 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就无法直接交谈了.幸运的 ...
- flush table with read lock的轻量级解决方案[原创]
为什么要使用FTWRL MySQL dba在日常工作中,数据备份绝对是工作频度最高的工作内容之一.当你使用逻辑方式进行备份(mydumper,mysqldump)或物理方式进行备份(percona ...
- Kafka、Logstash、Nginx日志收集入门
Nginx作为网站的第一入口,其日志记录了除用户相关的信息之外,还记录了整个网站系统的性能,对其进行性能排查是优化网站性能的一大关键. Logstash是一个接收,处理,转发日志的工具.支持系统日志, ...
- Spring Boot快速入门(三):依赖注入
原文地址:https://lierabbit.cn/articles/6 spring boot使用依赖注入的方式很简单,只需要给添加相应的注解即可 @Service用于标注业务层组件 @Contro ...
- LVS集群ipvsadm命令和调度算法(6)
一.ipvsadm命令参考 为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 术语解释: 1.virtual-service-address:是指虚拟服务器的ip地址2.r ...