据了解,Facebook几周前发表了一篇名为《关于React使用许可协议的官方声明》的申明。声明中称,任何人不能将React用于与Facebook及其合作公司有直接或间接竞争关系的项目中,否则Facebook公司自动取消其使用许可。
Facebook 在 React 的专利许可证里“偷跑”了一堆让开发者恐慌和心寒的条款,直白的翻一下,大意是如果你在你的产品里用到了 React,哪怕只有一点点,你对于产品所拥有的知识产权也等于直接送给 Facebook 免费用。
React作为Facebook 内部开发 Instagram 的项目中,是一个用来构建用户界面的优秀 JS 库,于 2013 年 5 月开源。随着React用户的增多,Facebook在 2016 年7月,修改了开源许可协议中的附加专利条款Additional patent grant,并在当时引起了强烈的讨论。而在今年的7月16号,由于Facebook之前存在的协议,Apache 基金会把Facebook BSD+Patents加入了黑名单,并从开源项目中移除。
就在昨天,知名技术博客平台wordpress创始人Matt在其博客上发文,将全面停止使用React,原因则是专利问题。
同时,一些国内大公司也因 Facebook条款 有逐步停用 React / React Native 技术栈呢?
如何看待Facebook 条款约束
作为前端的三大框架之一,React的应用可以说是非常的广泛,包括BAT在内的许多大公司很多项目都是基于其开发的。根据Facebook 的附加协议,所有采用React框架的项目(事实上)将全部免费赠予facebook使用,这对于大公司来说无疑不是灾难性的。
以百度为例,按照React目前协议,facebook事实上可以免费大胆的使用百度人工智能、自动驾驶方面获颁的专利,为了不让Facebook获取相关的敏感信息,唯一选择就是不让公司的前端使用React。这样看来,美帝国主义确实是比较恶心的。
对于上面的问题,除了自研方案之外,还有如下的一些替换方案:
Vue:除了VDom之外,Vue的响应性能和React相比还是有很大的区别,无论是本身的语法层面还是外围的第三方支持软件,总之,迁移起来不会是那么容易的事情。
Preact:应该来说,Preact是迁移的最佳方案,但也还是有很多的问题。例如,缺少了 SyntheticEvent 这一层抽象,不同浏览器之间事件响应 API 不统一的问题就暴露出来了,这对于兼容会是一个比较头疼的问题。