如今的Vue

ticklishfish 发布于1年前 阅读12336次
0 条评论

 

如今的 Vue

Vue 2.0 RC1 发布

我们宣布 Vue 2.0 是早在4月份的时候,而今天,带着非常激动的心情,我要发布Vue 2.0 正式发布的候选版本 !从这一版本开始,Vue API基本不会改变了,并且在官方正式发布之前,也不会有重大的改变了。

所有官方的支持库,例如:vue-router, vuex, vue-loader以及vueify 全部都已经更新了,兼容Vue 2.0。这意味着Vue 2.0技术栈已经很完美了,现在唯一一个大家都期待的事情就是Vue 2.0的文档以及发布相关的其他东西。所以,我们准备了一个 Vue 2.0 入门资源指导 去帮助大家快速进入2.0。

Vue.js知名度

最近我在Quora上回答过一个问题 “Vue.js 在业界知名度如何?”,大家可以看下完整的答案 这里 ,下面我也给列出一些要点:

  • 根据谷歌搜索Vue权值的计算,GitHub Vue 项目star 统计以及 js项目官方排名统计 ,在过去的几个月里Vue.js一直是快速增长的库之一,并且根据过去的几个月数据显示,Vue 的增长不会降低。

  • 在NPM 每个月12万~15万的速度量下载,到目前为止总共有1百万以上的下载量。

  • 官方网站 vuejs.org 有150万的页面访问量以及每月15万的UV。

  • 每周3.6万以上的vue-devtool 活跃使用者。

  • 在几个重要的开源项目中使用:Laravel,Gitlab,PageKit等等。

  • 强大的国际化平台支持:中国最大的公司平台(阿里巴巴,百度,腾讯),中国其他大公司(估值在10亿美元以上的 — 小米,滴滴,大疆创新,饿了么),日本/英国 的企业(Line,Nintendo,Sainsbury’s)

赞助支持

现在 Vue.js在 patreon 这个网站上,从社区和赞助商那里每月可以获得8000以上美元。我真的充满激情于全职工作Vue.js开源项目上,这当然是一个非常棒的事。对此,我非常感谢所有的赞助者们。

我认为Vue.js 在能够获得持续的经济支持上是一个很好的典范经历。对于开源项目来说,需要有很多的承诺:这是开源项目,而不是一个商业公司的副产品试图招聘有利。开源项目的目标是制造一些东西让更多的人在开发时更容易并且更有效率。它能够一直持续不是为了收益,而是简单为了那些每天都把开源项目用在他们工作中的人。老实说,我不认为Vue.js很容易过时,我希望它能够作为一个有价值的案例,来帮助更多热衷于开源项目的人。

JavaScript Vuejs 338

Evan You Follow I design, code and sometimes dream about making art.Apr 275 min read

Vue.js 2.0

假如你从来没有听说过Vue.js:Vue.js是一个由一个 核心层 , 附带的工具以及相关支持库 组成。 点击这里 ,你可以了解到更多

摘要: 今天,我非常激动的宣布Vue 2.0 preview 版本出来啦!这个版本带来了很多激动人心的改进和新特性。下面让我们看看到底有什么!

更轻,更快

Vue 始终关注于轻量和快速,而2.0 版本把它做的更好。2.0的渲染层基于轻量级的virtual-DOM 实现,大多数情况下初始化渲染的速度以及内存消耗提高了2~4倍(详情见benchmarks).从模板到virtual-DOM,编译器和运行时可以独立开来,所以你可以预编译模板并且在运行时的时候让你的应用工作起来。而这运行时的代码 min+zip 之后 只有不到12kb(作为参考,React 15 在min+zip之后有44kb)。编译器同样可以在浏览器中工作,这就意味着你仍然可以像之前一样,写一段script标签然后继续工作。即使你把编译器加进去,build 构建之后的min+zip大小也只有17kb,仍然比现在的Vue.js1.0小许多。

非普通的Virtual-DOM

现在,Virtual-DOM大家都已经听腻了,因为业界都有太多的实现 — Vue 2.0解决了现在virtual-DOM 实现的常见缺点。结合Vue的响应式系统,Vue 2.0让你不用做任何事情就给你提供优化的重渲染。每一个组件在它渲染期间都会跟踪它自己相应的依赖,所以系统能精确的知道什么时候去渲染,并且重渲染哪个组件。不需要'shouldComponentUpdate',也不需要 immutable 数据结构 —— 就这样就可以了

除此之外,Vue 2.0 从模板到virtual-DOM的编译阶段提供了一些高阶优化:

  1. 它会检测出静态 class 类名 以及 属性,这样就能让他们在初始化渲染之后永远不再做对比差异了。

  2. 它会检测出最大的静态子树(不会动态绑定的子树)并且在渲染函数中把他们提出来。这样每一次重渲染时,它会直接重用完全相同的virtual nodes并且跳过对比。

这些高阶优化通常在使用JSX时候只能通过 Babel 插件才能实现,但是在Vue 2.0你就可以得到这些,甚至在使用浏览器内的编译器的时候,也能做到。

这个新的渲染系统也允许你通过简单的冻结数据来禁止响应式的转换,以及可以手动的强制更新,这表明在重新渲染的过程之中会给你全部的控制权。

结合以上这些技术,Vue 2.0 保证了在每一个可能的场景下都有高性能的表现,它把开发者在优化方面需要做的努力降到了最低!

Templates, JSX, or Hyperscript?

开发者对于用模板还是JSX还是有很多争执。一方面,模板越来越接趋近于HTML — 它能更好的反映你应用的语义结构并且更容易去思考设计,布局以及样式。另一方面,模板作为DSL,也有被局限,与此同时,JSX/hyperscript 的程序本质让他们有图灵完备语义的完全表达能力。

作为一个兼有设计和开发的人,我更喜欢用模板来写我的大部分界面,但是在一些情况下,我也喜欢JSX/hyperscript的灵活性。例如:一个组件要程序化的处理它子组件的时候,用基于模板的slot机制还是有一些局限性的。

所以,为什么不能兼得两个呢?在Vue 2.0,你可以继续使用熟悉的模板语法,或者无论何时当感觉用模板DSL受到约束时,你也可以直接用底层的virtual-dom 层的代码。你仅仅只需要用一个render函数去替换 template 这个选项。甚至,你还可以在模板直接使用一个构造少,状态少的“functi,不要忘记了,你仍然可以使用这个 single-file components.

流式服务端渲染

随着virtual-dom的迁移,Vue 2.0 自然也支持服务端的渲染以及客户端的hydration。当前主流的服务端渲染的实现有一个痛点,那就是,比如在React中,渲染是同步的,所以如果app比较复杂,就会阻塞服务端的事件循环。同步的服务端渲染对于客户端在获得内容的速度上甚至会有不利的影响。Vue 2.0 提供了内建的流式服务端渲染,你可以渲染你的组件,获得一个可读的stream,然后直接 pipe 到HTTP response。这保证了你服务端的响应度,并且以最快的速度将内容渲染到你的用户。

更多的可能性

随着新的结构,还有更多的可能性值得我们探索开发 — 例如,在手机端渲染 native 界面。目前,我们正在探索Vue 2.0的一个端,用 weex 作为一个 native的渲染支持,这个项目是由中国最大的科技公司之一,阿里巴巴的工程师们维护。Vue 2.0 运行在ReactNative内,在技术上也是可行的。我们拭目以待!

兼容性 & 计划

Vue2.0 仍然 处在pre-alpha 阶段,但是你可以来 这里 查看源码。即使2.0 是完全重新写的,除了有些功能是有意废弃的,2.0的API和1.0大部分都是兼容的。点击查看 2.0中和1.0相同的官方例子 — 你会发现,并没有很大的变化。

对于部分废弃的功能,我们是为了提供简洁的API,而最大化提高开发者的效率,这是我们一直努力的结果。你可以从这里查看1.0 和 2.0 的特性比较 这里 ,如果你现在的项目中恰好大量使用了1.0中2.0被废弃的功能,这就意味着会有一定的迁移成本,但是不用担心,我们不久会提供更 详细的升级指导。

现在我们还有很多工作没有完成。一旦我们达到了满意的测试覆盖率,那么我们将会发布第一个alpha版本,并且我们的目标是在五月底六月初提供beta版本。除了测试之外,我们也会更新相关的支持库(vue-router, Vuex, vue-loader, vueify等)。目前,只有Vuex能在2.0下使用,但是我们保证,当2.0正式发布时,一切都会非常顺利的工作。

我们也并没有遗漏1.x 哦!1.1将会和2.0beta 一起发布。随着6个月各种挑剔的bug修复以及9个月的安全升级的长时间支持版本服务。1.1将会有可选的废弃警告,为你升级到2.0做好准备。敬请关注!

需要 登录 后回复方可回复, 如果你还没有账号你可以 注册 一个帐号。