Facebook发布React 16 专利条款改为MIT开源协议
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,并展示了一些新特性,这些特性包括:
- render 函数可返回数组和字符串。不必增加嵌套了,数组需带有 key 属性。
- 更好的错误处理。现在你可以在组件内部出错时使用一个替代的 UI。
- Portal 函数。可以在 DOM 任意位置插入内容。现在想弹个对话框或 tooltip 更方便了。
- 超快的 SSR。React 16 改进了服务端渲染,据测试,相比 React 15.6.1,在不同版本的 Node 环境下可达到 5-10 倍的性能提升。
- 支持自定义的 DOM 属性。现在不用使用属性 whitelist 了,React 会将未知属性直接传到 DOM 中。
- 减小了库文件大小。现在的 React 核心库大小仅 5.3kb(gzip 后 2.2kb),相比原来缩减了 30%。
- 更改为 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 说,这些变更”只会影响到一些不太常见的情况,我们不希望它们给大多数应用造成影响“。
Facebook发布React 16 专利条款改为MIT开源协议的更多相关文章
- 关于 Facebook 的 React 专利许可证
本文转载自:酷 壳 – CoolShell 作者:陈皓 随着 Apache.百度.Wordpress 都在和 Facebook 的 React.js 以及其专利许可证划清界限,似乎大家又在讨论 Fac ...
- React 16.3.0 发布,构建用户界面的 JavaScript 库
React 16.3.0 已发布,React 是 Facebook 推出的一个为数据提供渲染为 HTML 视图,用来构建用户界面的开源 JavaScript 库. React 视图通常采用包含以自定义 ...
- React 16 加载性能优化指南
关于 React 应用加载的优化,其实网上类似的文章已经有太多太多了,随便一搜就是一堆,已经成为了一个老生常谈的问题. 但随着 React 16 和 Webpack 4.0 的发布,很多过去的优化手段 ...
- 盘点 React 16.0 ~ 16.5 主要更新及其应用
目录 0. 生命周期函数的更新 1. 全新的 Content API 2. React Strict Mode 3. Portal 4. Refs 5. Fragment 6. 其他 7. 总结 生命 ...
- react 16.8版本新特性以及对react开发的影响
Facebook团队对社区上的MVC框架都不太满意的情况下,开发了一套开源的前端框架react,于2013年发布第一个版本. react最开始倡导函数式编程,使用function以及内部方法React ...
- Facebook的React Native之所以能打败谷歌的原因有7个(ReactNative vs Flutter)
https://baijiahao.baidu.com/s?id=1611028483072699113&wfr=spider&for=pc 如果你喜欢用(或希望能够用)模板搭建应用, ...
- React 16 升级时遇到的一个坑,分享一下
遇到的坑 今天在跟着dva.js官网上面的一个教程写东西的时候,照着教程上面的代码写之后,运行总是报错:TypeError: Cannot read property 'object' of unde ...
- Facebook发布全新JavaScript引擎:Hermes
摘要: JS引擎开始升级了... 原文:技术栈中的爱马仕?Facebook发布全新JavaScript引擎:Hermes 作者:Carson_Ho Fundebug经授权转载,版权归原作者所有. 前言 ...
- react 16.3+ 新生命周期
react 16.3版本出现了两个新的生命周期函数,并将逐渐废弃componentWillMount().componentWillReceiveProps().componentWillUpdate ...
随机推荐
- bzoj:4105: [Thu Summer Camp 2015]平方运算
Description Input 第一行有三个整数N,M,p,分别代表序列的长度.平方操作与询问操作的总次数以及在平方操作中所要模的数. 接下来一行N个数代表一开始的序列{X1,X2,... ...
- 【Java学习笔记之十一】Java中常用的8大排序算法详解总结
分类: 1)插入排序(直接插入排序.希尔排序) 2)交换排序(冒泡排序.快速排序) 3)选择排序(直接选择排序.堆排序) 4)归并排序 5)分配排序(基数排序) 所需辅助空间最多:归并排序 所需辅助空 ...
- bzoj:1666: [Usaco2006 Oct]Another Cow Number Game 奶牛的数字游戏
Description 奶牛们又在玩一种无聊的数字游戏.输得很郁闷的贝茜想请你写个程序来帮她在开局时预测结果.在游戏的开始,每头牛都会得到一个数N(1<=N<=1,000,000).此时奶 ...
- 修改mysql密码的四种方法
方法1: 用SET PASSWORD命令 首先登录MySQL. 格式:mysql> set password for 用户名@localhost = password('新密码'); 例子:my ...
- Ajax 跨域,这应该是最全的解决方案了
https://segmentfault.com/a/1190000012469713 前言 从刚接触前端开发起,跨域这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了 ...
- 最强PostMan使用教程(1)
最近需要测试产品中的REST API,无意中发现了PostMan这个chrome插件,把玩了一下,发现postman秉承了一贯以来google工具强大,易用的特质.独乐乐不如众乐乐,特此共享出来给大伙 ...
- win7系统如何在防火墙里开放端口
用到的端口需要在防火墙里开放,win7的比XP的要复杂一些,此方法同样适用于server2008系统 方法/步骤 1 依次点击"开始"-"控制面板"-" ...
- OpenCV3.4两种立体匹配算法效果对比
以OpenCV自带的Aloe图像对为例: 1.BM算法(Block Matching) 参数设置如下: ) + ) & -; cv::Ptr<cv::StereoBM> b ...
- sqlite效率探测
在编译后当然就是使用sqlite,贸贸然去测试了一下创建数据库,插入数据,仅几条数据,发现,真不错的数据库,后来把数据量提高到10000的 时候,发现,怎么这么慢,后来自己都受不了,网上一查,原来是如 ...
- PostgreSql 分页limit
摘录自:http://jingyan.baidu.com/article/a17d528538119b8098c8f2ca.html 语法: select * from persons limit ...