同构 ReactJS 或 Web Components(Polymer) 开发者应该遵循哪一个?
Isomorphic ReactJS or Web Components(Polymer) Which one to be followed by a developer?
这些年来,我们看到了多种用于 Web 开发的技术,例如:
同构反应:
它提供了一个在客户端和服务器之间共享的通用代码库。
Web 组件:
Polymer.js展示了为浏览器创建原生元素的方法。
这两种技术都与 direction.Which Web 开发人员应该遵循的方向相反?欢迎任何 suggestions/comments 在这里。
React 和 Web Components 相似,但又不相同。 Web Components 的优点(或者至少是这个想法,我们还没有做到)是您应该能够使用自定义元素扩展 HTML。浏览器没有给你一个 <datepicker>
元素?投入实现它的 Web 组件!您不必担心它是如何实现的,您只需导入它然后就可以使用它。原来它的可访问性差或浏览器支持差?其他人肯定会创造出更好的东西。
目前 Web 组件的一个大问题是它们添加了全局名称。因此,如果真的有一个像 NPM for Node 这样的 Web Components 注册中心,那么您将展开一场争夺最佳名称的竞赛。但是对于 NPM,这不是一个大问题,因为您可以根据需要命名变量,例如 var Promise = require('bluebird');
。它告诉你它做了什么。但是名为 blue-bird
的 Web 组件会很糟糕,因为在阅读使用它的标记时您不会知道它的作用。因此,如果在 Web Components 最终确定之前没有解决这个问题,我们将以长长的、有前缀的、奇怪的名称来避免名称冲突。
Web 组件是非常通用的小型组件。诸如日期选择器、具有自动完成功能的 select 列表、地图元素等之类的东西。它们并不是要解决您构建应用程序的方式,而是要解决我们如何在站点之间重用公共元素的问题。因此,您可能会看到像 <date-picker>
这样的自定义元素,但您不会看到只有 <body><my-app></my-app></body>
的 index.html
,其中 my-app
是您特定应用程序的 Web 组件。嗯,也许你会看到它,但这并不是 Web 组件的真正目的,它也没有给你很多工具来做到这一点。
另一方面,React 就是关于如何构建应用程序以及如何在组件之间传递数据。您可以将普通 Javascript 对象作为属性传递给 React 组件,但唯一可以作为属性传递给 Web 组件的是字符串。这适用于简单的东西,但不适用于您的整个应用程序。
它们并不相互排斥,因为您可能会看到很多人在他们的 React 应用程序中使用 Web 组件。但是如果你看到有人创建了一个依赖于 React 的 Web 组件,请随时向他们大喊大叫。 Web Components 应该是独立的和可重用的,并且在其中包含像 React 这样的大 library/framework 是一种反模式。
这些年来,我们看到了多种用于 Web 开发的技术,例如:
同构反应:
它提供了一个在客户端和服务器之间共享的通用代码库。
Web 组件:
Polymer.js展示了为浏览器创建原生元素的方法。
这两种技术都与 direction.Which Web 开发人员应该遵循的方向相反?欢迎任何 suggestions/comments 在这里。
React 和 Web Components 相似,但又不相同。 Web Components 的优点(或者至少是这个想法,我们还没有做到)是您应该能够使用自定义元素扩展 HTML。浏览器没有给你一个 <datepicker>
元素?投入实现它的 Web 组件!您不必担心它是如何实现的,您只需导入它然后就可以使用它。原来它的可访问性差或浏览器支持差?其他人肯定会创造出更好的东西。
目前 Web 组件的一个大问题是它们添加了全局名称。因此,如果真的有一个像 NPM for Node 这样的 Web Components 注册中心,那么您将展开一场争夺最佳名称的竞赛。但是对于 NPM,这不是一个大问题,因为您可以根据需要命名变量,例如 var Promise = require('bluebird');
。它告诉你它做了什么。但是名为 blue-bird
的 Web 组件会很糟糕,因为在阅读使用它的标记时您不会知道它的作用。因此,如果在 Web Components 最终确定之前没有解决这个问题,我们将以长长的、有前缀的、奇怪的名称来避免名称冲突。
Web 组件是非常通用的小型组件。诸如日期选择器、具有自动完成功能的 select 列表、地图元素等之类的东西。它们并不是要解决您构建应用程序的方式,而是要解决我们如何在站点之间重用公共元素的问题。因此,您可能会看到像 <date-picker>
这样的自定义元素,但您不会看到只有 <body><my-app></my-app></body>
的 index.html
,其中 my-app
是您特定应用程序的 Web 组件。嗯,也许你会看到它,但这并不是 Web 组件的真正目的,它也没有给你很多工具来做到这一点。
另一方面,React 就是关于如何构建应用程序以及如何在组件之间传递数据。您可以将普通 Javascript 对象作为属性传递给 React 组件,但唯一可以作为属性传递给 Web 组件的是字符串。这适用于简单的东西,但不适用于您的整个应用程序。
它们并不相互排斥,因为您可能会看到很多人在他们的 React 应用程序中使用 Web 组件。但是如果你看到有人创建了一个依赖于 React 的 Web 组件,请随时向他们大喊大叫。 Web Components 应该是独立的和可重用的,并且在其中包含像 React 这样的大 library/framework 是一种反模式。