react 版权问题_React 16 两三事

React 16发布并切换至MIT协议,引入新Fiber渲染引擎、非阻塞渲染等特性。同时,版权问题引发社区讨论,促使开发者思考前端组件化的未来。需要注意的Breaking Changes包括生命周期方法的变化和部分内部特性的修改。开发者对于迁移React 16持谨慎态度,版权事件可能长期影响社区。
摘要由CSDN通过智能技术生成

这两天 React 16 发布了,同时, React 16 与 15.6.x 都已经切换到 MIT 协议。版权的热议与一些公司的决断对于整个社区而言看起来是个好事,同时,也给前端的组件化带来了更多的思考。

对于 React 16 的相关信息,有几个内容可以去看下:

React 16 大致有以下改变:新的 Fiber render 引擎:以支持许多原来做不到的关于 render 的特性

支持非阻塞式渲染

render 支持 fragments (数组) 与字符串类型

支持 Error 边界捕获

添加 ReactDOM.createPortal 方法来进行组件 DOM 节点之外的渲染,这个特性使得模态框、popover、tooltip 之类的渲染变得更加方便。BTW, 这个本来是另一个开源库的思路: tajo/react-portal

支持 stream 的 server side render

减少的体积:大致减少了 30% 的文件体积

可能需要关注的 Breaking Changes:unstable_renderIntoContainer, unstable_handleError 等之前的内部特性有改变,如果有依赖库用到了的话可能需要注意

生命周期的顺序更加稳定,尤其是子节点的 componentWillMount 总会发生在父节点的 componentWillUnmount 之前

componentDidUpdate 方法不再能够获取 prevContext 参数

Shallow Renderer 不再调用 componentDidUpdate 方法,并且不再提供 unstable_batchedUpdates 方法(这个似乎会影响到一些之前的测试代码)

不再有 react-with-addons.js 这个库。目测这个之后会有开源库来提供类似功能,但 React 官方提倡的是分别引用不同的 npm 库来做 addons 的事情

Rewrite 的过程

其中有些内容感觉还是挺值得借鉴学习的:并没有 fork branch,而是用了一个 useFiber 的布尔值作为 Flag 来在运行时决定使用那个引擎。关于多人维护的代码在版本管理时使用什么策略这个问题也是老生常谈了,我跟小伙伴们也讨论过 flag 的方式,虽然挺理想的但还真不是什么团队都玩得来的。

最开始的开发流程,基本上是实现最基础的 API subset ,然后跑单元测试

测试过程中也在调整 test case,因为有可能有些问题之前没测到,或者是之前的测试依赖了一些内部方法

Dogfooding:在 Facebook 的内部工具以及对外产品上灰发新版本 React 作为测试,对外的大型产品主要从 http://messenger.com 开始。说实话这个对于 UI 框架而言真够大胆的……

作为开发者

反正我是不会这么快迁移到 React 16 的……尤其是对于现有产品平台。

反而,之前的版权事件让我有些去 React 化的倾向,或者更确切的说,弱化 UI 框架对于项目的影响的倾向。具体怎么做可能还值得进一步探讨,比如更多使用 Web 标准的方案比如 CSS 而非与框架绑定的 CSS in JS;比如基础组件更多考虑纯粹 Vanilla JS 实现,然后再用框架封装;有哪些逻辑可以进一步分离,如何分离,等等。

React 之后会怎样也还真不好说,这一次版权事件感觉并没有就这么终结,应该还会潜移默化地进一步对社区造成长久影响,需要进一步观望。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值