用标准networking技术替代angular度

我正在开发一个项目,在最新的浏览器上使用ECMA 6,这个产品将在1.5年内发货。 所以我们认为为什么不使用Web Components现在Angular 2不可用(这将是ECMA 6)。 而当我们在这个时候,我们可以完全取代Angular而不必回到石器时代吗?

如何取代Angular?

有一个叫做youmightnotneedjquery.com的网站,基本上是关于现代浏览器实际上是如何使用jQuery传统上的大多数东西的。 我有兴趣看到类似Angular的东西。

我们主要使用四个angular度特征。 我有什么替代他们的select?

  • Angular Directives – > Web组件
  • Angular Modules – > ECMA 6模块 (不完全一样的东西)
  • 有angular度的路线 – >
  • angular度双向数据绑定 – >

PS。 我们不想用类似Backbone或Ember的东西代替Angular。 我们希望用标准的networking技术取代它,但是如果我们必须使用小工具填补这个空白,我们会考虑它。

我在过去的三周里一直在研究,结果Angular在经历了一个激烈的变革之后,很多人都在考虑一个替代scheme。 幸运的是,W3C Web Components标准实际上拥有我们所需要的全部function,而且它现在可以使用Polymer项目中的polyfills。 所以要回答这个问题:

  • Angular Directives – > Web Components使用polyfill直到所有的浏览器都支持它。
  • Angular Modules – > ECMA 6 Modules问题的一部分是通过HTML导入来解决的。 但是,您也可以使用Traceur,直到浏览器支持它。
  • Angular Routes – > 有一个组件可以使用<app-router>
  • angular度双向数据绑定 – > 聚合物在普通的标准Web组件顶部添加了一个“魔术”层。 这包括许多function,包括数据绑定 。

+加更多

如果您想知道为了减lessHTTP请求的数量而连接文件的构build过程,请查看Addy Osmani关于Vulcanize的文章 。 Spoiler:即将到来的HTTP 2优化可能不需要它。

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

如果你想让自己熟悉Web组件,下面是一些很好的文章: http : //webcomponents.org/articles/

这里有大量的Web组件: http : //customelements.io/我不知道它是否会成为一个新的NPM,但是列表组件是非常令人印象深刻的。

暴露一个Angular组件的API是相当复杂的。 人们已经想出了从链接function到发布事件的各种方法。 然而,在Web组件中,使组件与外部世界进行交互非常容易 ,事实上,您公开的API和事件与标准HTML标记(如<audio>没有多大区别。

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

结论

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

  1. 你有一个巨大的源代码投资的angular度,不想将所有的东西都移到标准的网页。 (无论如何,Angular 2.0会弃用你的代码,所以你被困在Angular 1. *中)
  2. 你的团队懒得学习一种新技术(在这种情况下,networking可能不是这种态度的正确平台)。

Angular对于自己正在做的事情很有好处,并且有自己的Hype循环 。 Web组件解决了Angular试图解决的许多问题。 可能Angular有作为Web组件概念validation的angular色。 但现在是时候继续前进了。 networking日新月异, 移动别人的奶酪是不可避免的 。

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

RIP Angular 2009-2014

有一个元素是新的有一个应用程序?

TLDR:认真考虑编写一个几乎Angular 2.0兼容的Angular 1.3应用程序,然后再滚动你自己的框架

看起来好像你已经认识到Angular以正确的方式做了很多事情,这就是为什么你试图复制它,所以基本上你将通过结合大量的图书馆来推出自己的产品。 除非您有大量工程时间,否则您构build的框架可能是:

  • 轻轻logging
  • 跨浏览器的维护噩梦和(最糟糕的是)
  • 新员工很难学习

如果没有一个框架已经做了你想做的事情,我认为你自己的做法是有道理的,但是通过尝试重新创buildAngular,你是:

  • 承担了许多已经由专门团队完成的工程工作,可以用于build筑产品
  • 由于你必须:让新员工变得更加困难,
    • find愿意使用本土框架的候选人,而不是在他们可以在其他地方使用的开放源码框架中发展自己的技能
    • 培训这些员工使用您的框架(除非您的文档已经成熟,否则祝您好运)

我知道你的问题是如何取代Angular,但是我看到有太多的公司走上了自己的路,并且为此付出了代价。 同样,如果你的预算包含大量的核心资源来构build(并logging和维护)框架,并且当时间轴变得紧张的时候,如果推后来推动,angular落将不会被削减,然后滚动你自己的可能是有道理的。 不过,我认为你应该认真考虑阅读如何编写Angular 1.3应用程序,以便他们很容易地移植到Angular 2.0并走Angular路线。 只要看看你错过的社区的大小:
http://www.airpair.com/js/javascript-framework-comparison