3

这些年来,我们看到了多种用于 Web 开发的技术,例如:

同构反应:

它提供了客户端和服务器之间共享的通用代码库。

网页组件:

Polymer.js 展示了为浏览器创建原生元素的方式。

这两种技术都在朝着相反的方向发展。Web 开发人员应该遵循哪一种?这里欢迎任何建议/评论。

4

1 回答 1

6

React 和 Web 组件很相似,但又不一样。Web Components 的优点(或者至少这个想法,我们还没有完全实现)是您应该能够使用自定义元素扩展 HTML。浏览器不给你一个<datepicker>元素?抛出一个实现它的 Web 组件!您不必担心它是如何实现的,您只需导入它,然后就可以使用它。原来它的可访问性差或浏览器支持差?其他人肯定会创造出更好的东西。

不过,目前 Web 组件的一个大问题是它们添加了全局名称。因此,如果有像 NPM for Node 这样的事实上的 Web 组件注册表,您将有一场争夺最佳名称的竞赛。但是对于 NPM,这不是一个大问题,因为您可以将变量命名为您想要的名称,例如var Promise = require('bluebird');. 它告诉你它做了什么。但是一个名为的 Web 组件blue-bird会很糟糕,因为在阅读使用它的标记时你不会知道它会做什么。因此,如果在 Web 组件最终确定之前没有解决这个问题,我们最终会得到长的、带前缀的、奇怪的名称,以避免名称冲突。

Web 组件旨在成为非常通用的小型组件。诸如日期选择器、带有自动完成功能的选择列表、地图元素等。它们并不是为了解决您如何构建应用程序,而是解决我们如何在站点之间重用公共元素的问题。因此,您可能会看到自定义元素,<date-picker>但您不会看到特定应用的 Web 组件index.html<body><my-app></my-app></body>哪里。my-app好吧,也许您会看到它,但这并不是 Web 组件的真正目的,它并没有为您提供很多工具来实现它。

另一方面,React 就是关于如何构建应用程序以及在组件之间传递数据。您可以将纯 Javascript 对象作为属性传递给 React 组件,但唯一可以作为属性传递给 Web 组件的是字符串。这适用于简单的东西,但不适用于您的整个应用程序。

它们不是相互排斥的,因为您可能会看到很多人在他们的 React 应用程序中使用 Web 组件。但是如果你看到有人创建了一个依赖于 React 的 Web 组件,请随意对他们大喊大叫。Web 组件应该是隔离和可重用的,并且在其中包含像 React 这样的大型库/框架是一种反模式。

于 2015-04-30T06:08:02.017 回答