Google的Polymer是一个功能齐全的前端框架,可以替代或补充其他前端框架吗?



问题是关于AngularJS,BackboneJS,EmberJS和其他框架。

必须将一个项目从php翻译成javascript,我必须决定,如果我要使用:

  1. AngularJS
  2. 聚合体
  3. 它们的组合

我更喜欢使用聚合物,因为我喜欢它。

然而,我缺少(并在我错的地方纠正我(使:

  1. 它们之间的视图和链接(如在安瓜拉尔(
  2. 控制器
我知道结构取决于

我,如何构建我的应用程序,但似乎angularjs有一个很好的预定义结构来构建mvc应用程序。

因此,我想知道:如果你想构建一个结构良好的Web应用程序,Polymer是Angular的替代品,还是Polymer补充库可以与其他现有框架一起使用?

编辑 21.09.2014没有人真正让我完全满意地回答这个问题,因此我将其标记为尚未回答。许多人说它只是"取决于"。但没有人能够详细说明,它究竟取决于什么。

关于应用程序的复杂性?关于应用程序的需求?聚合物适合什么需求,不适合哪些需求?这些是我一直在寻找的答案。

有人说它可以用作前端框架。其他人说这只是一个图书馆,其他人说"是和否"。不幸的是,答案相当混乱。

我希望对此有一个官方的答案,但我让你知道我的感受是什么。我相信它是一个替代品,但聚合物还没有达到其他框架需要工作的结构。也许这是故意的,也许这只是一个未达到的成熟度问题,因为框架是新的。

我希望创建者能够解释,什么时候最好使用AngularJS,什么时候应该使用Polymer来构建大型可扩展的Web应用程序。

编辑15.08.2015

聚合物1.0出来了。事实证明,Polymer正式不是一个框架,应该与其他前端框架以兼容的方式工作。https://youtu.be/fD2As5RmM8Q?t=6m42s

我直言,两者都是两个不同的东西,它们都服务于两个不同的目的。尽管它们提供了一些共同的功能,但数据绑定可以是其中之一。

聚合体

如果你真的想使用Awesome Webcomponents,Polymer是实现这一目标的一种方法。还有其他选项,例如您可以使用原版JS,或使用其他库,例如Mozilla或Bosonic的X-Tag。这些库填充仍处于起草状态的 Webcomponent 功能。因此,这些库帮助我们在浏览器中拥有/提供相同的用户体验,即使没有对 Web 组件的本机支持。

这是一个成熟的MVC框架。这里的人们知道 Angular 作为 MVC 框架包含/提供什么。

这一切都说要回答你的问题

Google的Polymer并不是一个功能齐全的前端框架,可以用作其他前端框架的替代或补充。它可以用作 Angular 中V部分的替代品,如 MVC 。就像人们在不同的框架中使用 React 作为V一样。对我来说,情况没有太大的不同。在Angular的情况下更具体,聚合物就像Angular 1.x中的directives,而components在即将推出的Angular 2.x中。


引用

为了更确定我在说什么,以及如何将聚合物与Angular2一起使用的其他来源(Angular2至今尚未发布(

  • 您可以在"https://youtu.be/7WgEuNZCCHk?t=32m15s"中查看此视频,从时间开始32:15 Rob解释了如何使用通用Webcomponents/polymer作为Angular2中的组件/视图。
  • 你可以检查这个项目"https://github.com/rkirov/youtube-app",它使用Angular2和google-youtube网络组件。
  • https://github.com/ebidel/polymer-experiments/tree/master/polymer-and-angular/together
  • 从聚合物入门套件

    无框架或框架兼容 使用元素构建应用,或连接外部框架来处理业务逻辑。这取决于你!

所以,在我看来,这两个项目并没有相互竞争。


网络组件规格

Web组件规格在这里供参考

  • 自定义元素 - http://w3c.github.io/webcomponents/spec/custom/
  • HTML 导入 - http://w3c.github.io/webcomponents/spec/imports/
  • 暗影DOM - http://w3c.github.io/webcomponents/spec/shadow/

我只是希望网络组件尽快成为常青浏览器的原生组件。

来自聚合物入门套件:">无框架,或框架兼容使用元素构建应用,或连接外部框架来处理业务逻辑。就看你了!

更新:被描述为碳元素的东西似乎属于:

聚合物(版本 2( 应用工具箱

  • 使用聚合物和 Web 组件的基于组件的架构。
  • 使用应用布局组件的响应式设计。
  • 使用元素的模块化路由。
  • 本地化与<app-localize-behavior> .
  • 通过应用存储元素为本地存储提供交钥匙支持。
  • 脱机缓存作为使用服务工作进程的渐进增强功能。
  • 构建工具以支持以多种方式为应用提供服务:通过服务器推送通过 HTTP/2 进行非捆绑交付,以及捆绑通过 HTTP/1 交付。

碳元素添加框架功能

在2015年聚合物峰会主题演讲期间,谷歌宣布了一套新的">聚合物惯用和面向框架"的元素,暂定名为碳元素。

关于 Angular 2 与聚合物碳的较长 tjsavage 答案中的一些引用:"诀窍在于将 Web 平台视为应用程序框架......聚合物库是将Web组件组件模型作为碳元素使用Web平台本身作为应用程序框架:固执己见的轨道使其更容易理解和实现。

"Angular 2 将提供一种构建应用程序的方法,该方法使用 Angular 对构成良好应用程序结构的看法。碳元素将提供一种不同的方法来构建您的应用程序,更直接地使用 Web 平台本身提供的内容作为其结构基础。

聚合物几乎是全功能。例如,目前它缺少路由,但这并不意味着您无法使用 Polymer 执行此操作。

现在有 https://elements.polymer-project.org/elements/app-route

在Dart中,由于类型的原因,依赖注入也可以很好地与聚合物一起使用。如果在 Dart 中是可能的,那么在 JS 中也是可能的,因为 Dart 可以转换为 JS。不过,普通 JS 中的 DI 可能更麻烦。

在此包中(飞镖(https://github.com/bwu-dart/bwu_polymer_routing我使Angular.dart使用的路由和DI包可用于Polymer。还有用于聚合物的路由包.js可用。

我整理了一些路由器演示。"缺失的部分"实际上取决于您正在构建的应用程序类型。

https://github.com/erikringsmuth/polymer-router-demos

我既将其用作在另一个框架中编写的应用程序的增强功能,也将其用作完整框架本身,它负责页面上的每个元素。

我真的很喜欢Polymer的一切,所以我很高兴在整个应用程序中使用它,甚至构建了自己的路由器。如果你有一个现有的应用程序,我建议把你的脚趾浸入水中,因为Polymer可以很好地组合到其他应用程序中,看看它是否符合你的喜好。

让我再试一次:

Web组件(以及聚合物(背后的关键是,它们是独立的。你在某个地方有一个Web组件,你导入它,然后(如果你幸运的话(它就可以工作,无论它来自哪里。Web 组件不会干扰其他组件。因此,做像MVC这样的事情不是聚合物的业务(尽管它提供了一种数据绑定机制(,因为这属于将事物捆绑在一起的过程。人们认为,通过创建新元素来解决这类事情是最佳实践,这些元素也会创建和响应事件。当涉及到模型时,您编写非可视化Web组件,这些组件没有/不需要模板。TodoMVC有一个(过时的(例子(https://github.com/tastejs/todomvc/tree/gh-pages/examples/polymer(。

因此,Angular 为您提供了如何执行 MVVM 的路径,而使用 Polymer 时如何在应用程序中执行"逻辑"取决于您。恕我直言,Angular适用于更复杂和相当封闭的应用程序,而Polymer适用于任何类型的应用程序,拥抱网络。你甚至可以使用Polymer,如果你根本不在写一个应用程序;)

最新更新