9 月 26 日,用于构建 UI 的 JavaScript 库 React 16 的最新版本上线。

Facebook 最终在现有的两种 React 版本中选择了出现 bug 概率最少的一款。这次版本更新的最大看点是 React 重写了核心。

并如之前承诺的,将 React 16 JavaScript 库以及 GraphQL 查询语言的许可证从原来的 BSD + 专利条款改为更受欢迎的 MIT 许可证。

之前专门做了一个关于React.js例子的网站。推荐访问阅读:Reactjs Examples

作为最广泛使用的用于构建 Web 用户界面的基础框架,React 的这一许可证的修改得到了社区的强烈反响,虽然有些不同意见,但是大部分人还是表示喜闻乐见——一方面代表了社区的胜利,另外一方面也可以避免大量的采用 React 的项目重写。

Facebook 前端工程师 Andrew Clark 在博客上正式发布了 React 16,并展示了一些新特性,这些特性包括:

  1. render 函数可返回数组和字符串。不必增加嵌套了,数组需带有 key 属性。
  2. 更好的错误处理。现在你可以在组件内部出错时使用一个替代的 UI。
  3. Portal 函数。可以在 DOM 任意位置插入内容。现在想弹个对话框或 tooltip 更方便了。
  4. 超快的 SSR。React 16 改进了服务端渲染,据测试,相比 React 15.6.1,在不同版本的 Node 环境下可达到 5-10 倍的性能提升。
  5. 支持自定义的 DOM 属性。现在不用使用属性 whitelist 了,React 会将未知属性直接传到 DOM 中。
  6. 减小了库文件大小。现在的 React 核心库大小仅 5.3kb(gzip 后 2.2kb),相比原来缩减了 30%。
  7. 更改为 MIT 开源协议。上周 Facebook 发表博客表示怂了,从 React 16 开始更改为更宽松的 MIT 协议。对于某些不方便升级的 React 用户,还发布了 15.6.2 版本,也改用了 MIT 协议。

除了上面这些之外,React 16 变化最大的是因为使用了新引擎 React Fiber。

React Fiber 是对 React 核心架构的彻底重写,Fiber 是一种轻量的执行线程,依靠更高级的任务调度,实现协作式的多任务处理。

上面的大多数特性都是由 React Fiber 带来,并且它还让 异步渲染 成为了可能,采用了异步渲染以后 React 应用响应会更加灵活,主线程将不会被阻塞。

Facebook 的工程经理 Sophie Alpert 在一篇讲述架构变更的文章中写道,“这好比给一辆行进中的汽车更换引擎”:

我们在保持外部 API 不变的同时彻底重写了 React……数百个公司(包括 Facebook 在内)每天都在使用 React,我们希望在重写 React 时不会影响到他们。

Facebook 使用了功能开关(feature flag),这样 Fiber 和 Non-Fiber 版本就可以放在一起。他们运行单元测试,在 facebook.com 和 messenger.com 上运行新代码,以此来发现和减少软件缺陷,并驱动新渲染器的功能演进。

当然,重写是不完美的,可能会带来一些重大的变更。Clarks 说,这些变更”只会影响到一些不太常见的情况,我们不希望它们给大多数应用造成影响“。

最新文章

  1. 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
  2. node-gyp rebuild 卡住?
  3. 源码分析-mysql
  4. 深入了解webservice_开发实战篇
  5. 【bzoj1029】道路抢修
  6. Windows组策略同步问题
  7. archlinux随记
  8. 常用 cmd 命令
  9. 【Ruby on Rails学习二】在线学习资料的整理
  10. Xcode简易基础篇,以新手角度去操作
  11. _00019 Storm架构介绍和Storm获取案例(简单的官方网站Java案例)
  12. 算法导论学习---红黑树具体解释之插入(C语言实现)
  13. C++侵入式链表
  14. 查询MySQL中某个数据库中有多少张表
  15. HTML5微数据
  16. 吕鑫VC6.0-VS2015 全套C/C++、MFC新手实战入门教程、Linux视频教程 最好的基础入门教程没有之一
  17. ubuntu debain下好用的编辑器
  18. C作业--初步
  19. docker启动异常driver not supported
  20. Emgucv - 下载、安装、配置

热门文章

  1. [ZOJ3494]BCD Code
  2. Max Sum(dp)
  3. class 文件反编译器的 java 实现
  4. JqGrid 多行表头设置
  5. 基于逆波兰式的JAVA计算器
  6. ASP.NET core1.0 EF MYSQL搭建中碰到几个问题记录
  7. 关于JWPlayer播放器的一些测试学习
  8. 邓_ Jqery·笔记本【照片】
  9. Codeforces 448 E. Divisors (DFS,储存结构)
  10. python 操作python