用标准网络技术取代角度

Ale*_*ack 37 web-component angularjs ecmascript-6 angularjs-directive

我正在开发一个项目,该项目在最新的浏览器上使用ECMA 6,可以在1.5年内发货.因此我们认为为什么不使用Web组件,因为Angular 2不可用(这将是ECMA 6).虽然我们在这里,但是我们可以完全取代Angular而不必回到石器时代吗?

如何替换Angular?

有一个名为youmightnotneedjquery.com的网站,它基本上是关于现代浏览器实际上如何拥有 jQuery传统上使用的大部分内容.我有兴趣看到类似Angular的东西.

我们主要使用四个Angular特征.我有什么选择来替换它们?

  • Angular Directives - > Web Components
  • 角度模块 - > ECMA 6模块(不完全相同)
  • Angular Routes - > ???
  • 角度双向数据绑定 - > ???

PS.我们不想用类似Backbone或Ember之类的东西替换Angular.我们希望用标准的网络技术取代它,但如果我们必须使用小工具来填补空白,我们会考虑它.

Ale*_*ack 45

我在过去的3个星期里一直在研究,结果发现许多人在Angular采取了激烈的改变之后正在考虑另一种选择.幸运的是,升级的W3C Web Components标准实际上拥有我们所需要的所有功能,并且它现在可用于Polymer项目的polyfill .所以回答这个问题:

  • Angular Directives - > Web Components使用polyfill直到所有浏览器都支持它.
  • 角度模块 - > ECMA 6模块问题的一部分是通过HTML导入解决的.但您也可以使用Traceur,直到浏览器支持它.
  • 角路线 - > 有该™组件使用<app-router>.
  • 角度双向数据绑定 - > 聚合物在普通标准Web组件的顶部添加"神奇"层.这包括许多功能,包括数据绑定.

+还有更多

如果您想知道用于连接文件的构建过程以减少HTTP请求的数量,请查看Addy Osmani关于Vulcanize的帖子.Spoiler:即将推出的HTTP 2优化可能不需要它.

许多Angular项目使用Twitter Bootstrap进行布局.聚合物可以做到这一点加上它与Google的Paper元素很好地配合(完全可选但非常棒).

如果你想让自己熟悉一般的Web组件,这里有一堆很好的文章:http://webcomponents.org/articles/

这里有大量的Web组件:http://customelements.io/我不知道它是否会成为新的NPM,但列表组件相当令人印象深刻且不断增长.

公开Angular组件的API相对复杂.人们已经提出了从链接功能发射事件的各种方法.但是,Web组件中,使组件与外部世界交互非常容易,实际上,您公开的API和事件与标准HTML标记没有太大区别<audio>.

就像Angular一样,你也可以使用Polymer with Dart.

结论

总的来说,我没有看到任何使用Angular的理由,除非:

  1. 您在角度方面拥有巨大的源代码投资,并且不希望将所有内容移植到标准Web.(无论如何,Angular 2.0都会弃用您的代码,因此您将无法使用Angular 1.*)
  2. 你的团队懒得学习新技术(在这种情况下,网络可能不是这种态度的正确平台).

Angular对它正在做的事情有好处并且有自己的Hype循环.Web组件解决了Angular试图解决的许多问题.可能Angular可以作为Web组件的概念证明.但现在是时候继续前进了.网络每天都在重塑自己,移动某人的奶酪是不可避免.

我不是说聚合物是一切的最终答案.充其量只是另一个Angular会在几年内变得毫无用处,但现在是学习和使用它的好时机.在W3C 标准 容易,虽然,聚合物往往是更接近它们.

RIP Angular 2009-2014

有一个元素为那个™是新的有一个应用程序的那个™

  • 您建议Angular用户转移到Polymer,以处理他们将来可能通过使用Polymer最终遇到的Angular问题.似乎最好向人们建议并不意味着他们依赖于另一个框架的方法. (4认同)
  • @bpiec我的意思是它以极端的方式改变了.看看Ember 2.0如何逐步引入他们的变化:https://github.com/emberjs/rfcs/pull/15并将其与Angular 2.0进行比较,这更像是重写:http://eisenbergeffect.bluespire.com/all-约-角2-0 / (2认同)
  • 框架控制应用程序的结构和工作流程.Polymer只是MVVM部分,它为您提供HTML中的数据绑定,事件映射和声明性自定义元素定义,而不是JS.它是W3C规格之上的薄层.使用自定义元素(包括Polymer,Angular 2,React.js自定义元素https://github.com/PixelsCommander/ReactiveElements等)构建的所有内容都将协同工作,因为自定义元素API是普通的旧DOM.如果在Polymer中使用X-Tag元素,您甚至不需要在X-Tag上定义依赖项,因为HTML Imports会为您处理它. (2认同)
  • @Dinoboff node.js社区正在进行没有DI测试而没有任何问题.在Javascript中,您不需要DI进行单元测试. (2认同)
  • @Lew我不确定.我每天都会编写很多单元测试,我必须承认我宁愿只需要(就像在commonJS中那样)要测试的组件,而不是必须注入/模拟它们. (2认同)