[Web翻译]我们还需要Web框架吗?

633 阅读6分钟

副标题:网络上基于组件的开发的过去、现在和未来。

原文地址:medium.com/@marcushell…

原文作者:medium.com/@marcushell…

发布时间:2017年3月23日 - 5分钟阅读

在之前的两篇文章中,我比较了Polymer和Angular在性能开发者体验方面的情况。在本系列的最后一篇文章中,我想回过头来看看我们是如何落到Google有两种模式为Web构建组件的境地,这对今天的开发者来说意味着什么,以及未来可能带来什么。

简单回顾一下历史

Polymer和Angular或许比你意识到的更相似。首先,两者都是谷歌的项目。两者也都采取了基于组件的方式来构建应用。

Polymer项目开始于2013年末,是一个库和浏览器的polyfill,以帮助开发者开始使用两年前推出的Web Components标准。Angular 2的工作在Polymer之后大约一年,即2014年底开始。Angular 2的目标之一是提高性能和更可扩展的、基于组件的开发模式。最初,Angular团队计划将组件模型基于标准组件。

Angular 2与使用其他库(Polymer、X-Tag等)构建的Web组件玩得很好,让你可以像使用Angular编写的组件一样轻松地将数据传入其中。Angular组件在支持它们的浏览器中使用Web标准(如阴影DOM和HTML5模板标签)。 -- angular.io,2015年3月。

Angular团队后来改变了自己的立场,建立了自己的组件模型,与Web组件非常相似,只是不与Web平台绑定。他们这样做是为了不依赖DOM。出于性能的考虑,他们希望把浏览器的一些工作卸载给Web Worker,在服务器上做预渲染,并支持Web以外的平台。这样做的缺点是增加了复杂性--包括运行时间和开发时间。

虽然Polymer和Angular对组件的作用都有比较相似的看法,但它们在规定性上有很大的不同。Polymer是一个建立在Web标准之上的小型库。它的组件模型从在静态页面上使用单个Web组件到构建整个应用程序都可以扩展。它包括用于数据绑定、路由和本地化的助手,但它们都是可选的。对于如何构建应用程序,有一些新兴的最佳实践,但Polymer并没有将任何这些实践强加给开发人员。

Angular是前端框架中的Java EE

而Angular则更有意见。它也不仅仅是一个框架,而是一个属于自己的平台。Angular是前端框架中的Java EE。它为企业开发者提供了他们在构建复杂应用时习惯的工具和模式。它支持路由、依赖注入、本地化、预渲染和测试。它为开发人员提供了一种定义明确的方式来构建他们的应用程序和处理数据流,消除了构建应用程序的许多不确定性。

为什么谷歌要同时打造Polymer和Angular?

那为什么Google会有这两个独立的项目来构建基于组件的Web应用呢?Angular使用Web Components作为它的组件模型不是更合理吗?毕竟,这也是Angular 2团队最初试图做的事情吧?

我认为,Google的最终目标是让Web尽可能地吸引应用开发者。Web毕竟是他们赚钱的地方。 他们发现的一个障碍是,Web需要一个组件模型来支持构建更复杂的应用。他们需要一个快速的解决方案,于是Angular 2被创建了自己的组件模型。

同时,谷歌与W3C和其他浏览器厂商合作,通过了在Web平台本身添加组件模型的标准。标准化进程很慢,所以他们创建了浏览器polyfills和Polymer库,帮助开发者开始使用即将到来的功能。

通过同时拥有Angular和Polymer,谷歌可以在短期内提供一种构建基于组件的Web应用的方式,同时为长期的工作提供更优雅的解决方案。如果未来版本的Angular在浏览器普遍支持的情况下转而使用(或至少支持)Web Components,我也不会感到惊讶。

社区参与

说到社区规模和参与度,毫无疑问,哪个更受开发者欢迎。在过去的五年里,Angular已经成为最受欢迎的Web框架之一,而Polymer和Web Components仍然是一种非常小众的技术。

过去五年,Angular(蓝色)和Polymer(红色)的谷歌趋势。

Polymer主要针对组件开发者。事实上,在大多数情况下,当构建复杂的应用程序时,单靠Web Components是一个太低级的结构。开发者希望得到更多的结构和帮助,这意味着他们在构建大型应用时要寻找框架。

Angular的流行也意味着有更多的社区生成的文档、课程和其他学习材料可用。你也更有可能在Stack Overflow和类似的网站上找到Angular问题的答案。对于正在为下一个项目寻找成熟工具的开发者来说,尤其是当他们需要得到管理层的认同时,Angular目前看起来更有吸引力。

为下一代Web框架铺平道路

从开发者采用Polymer和Angular的情况来看,开发者在构建应用时希望使用框架的情况相当明显。在我看来,Angular代表了当前一代的Web框架,而Polymer则是为下一代框架铺平道路。

基于Web Components,未来的Web框架可以更精简、更快速地构建,因为它们不再需要在浏览器中构建和运行自己的组件模型。共享组件模型还意味着框架可以变得更加模块化。有些项目只需要一个路由器,其他项目可能还需要依赖注入、本地化或测试库。能够只选择你需要的部分,将使开发更容易,最终用户体验更快。

虽然Web组件是一个非常强大的概念,但我认为它们对大多数开发人员的最大影响是,它们为新一代更快、更轻量级的框架和工具铺平了道路--在未来,每个新的框架都不需要构建自己的组件集。


原文发表于 vaadin.com


www.deepl.com 翻译