Facebook 的React相对于即将到来的Web Components规范的主要优势是什么,反之亦然(或者可能与 Google 的Polymer库进行更全面的比较)?
根据这个 JSConf EU talk和 React 主页,React 的主要好处是:
- 使用组件模型解耦和增加内聚
- 抽象、组合和表现力
- 虚拟 DOM 和合成事件(这基本上意味着它们完全重新实现了 DOM 及其事件系统)
- 在 IE 8 上启用现代 HTML5 事件内容
- 服务器端渲染
- 可测试性
- 绑定到 SVG、VML 和
<canvas>
除了这个虚拟 DOM 概念(显然)之外,几乎所有提到的内容都通过 Web 组件本地集成到浏览器中。我可以看到虚拟 DOM 和合成事件在今天如何有益于支持旧浏览器,但是从长远来看,扔掉大量的原生浏览器代码是不是有点像在踢自己的脚?就现代浏览器而言,这不是很多不必要的开销/重新发明轮子吗?
以下是我认为React 缺少的一些 Web Components 会关心的东西。如我错了请纠正我。
- 本机浏览器支持(阅读“保证更快”)
- 用 vanilla JavaScript 编写 JavaScript,用 CSS 编写 CSS,用 HTML 编写 HTML。
- 使用 Shadow DOM 进行样式封装
- React 有this,这需要在 JavaScript 中编写 CSS。不漂亮。
- 双向绑定