【问题标题】:Is Google's Polymer a fully functioning Frontend Framework to Subsitute OR Complement other Frontend Frameworks?Google 的 Polymer 是一个功能齐全的前端框架,可以替代或补充其他前端框架吗?
【发布时间】:2014-11-10 02:37:16
【问题描述】:

这个问题是关于 AngularJS、BackboneJS、EmberJS 和其他框架的。

我必须将一个项目从 php 转换为 javascript,我必须决定是否要使用:

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

我更喜欢使用 Polymer,因为我喜欢它。

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

  1. 视图和它们之间的链接(如在 Angular 中)
  2. 控制器

我知道如何构建我的应用程序取决于我的结构,但似乎 angularjs 具有用于构建 mvc 应用程序的良好预定义结构。

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

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

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

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

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

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

编辑 15.08.2015

Polymer 1.0 已发布。事实证明,Polymer 正式不是一个框架,它应该与其他前端框架以互补的方式工作。 https://youtu.be/fD2As5RmM8Q?t=6m42s

【问题讨论】:

  • 我会说这有点基于意见。我建议只使用聚合物,如果您在结构方面遇到任何不便,您也可以轻松地将 Angular 添加到您的项目中。很想听听你的进展;我也肯定会检查聚合物!
  • 关于编辑,你在寻找什么是缺失的?许多框架之所以存在,是因为原生 DOM 缺失太多。有了 Web 组件,DOM 就变成了框架。 Polymer 是一个库,添加了声明性数据绑定和事件映射等内容。
  • Polymer 刚刚在 Google I/O 大会上发布了 1.0,因此根据 Google 的说法,它现在已经“准备就绪”了。
  • 这是 Angular 团队最头疼的问题。
  • 惊喜。似乎将引入一组新元素(碳)。将为布局、路线等提供解决方案的组。我想它更像是一个类固醇图书馆。 youtu.be/jVn8tlnwAEs?t=20m12s

标签: javascript angularjs frameworks polymer


【解决方案1】:

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

聚合物

如果您真的想使用 Awesome Webcomponents,Polymer 是实现这一目标的一种方法。还有其他选项,例如您可以使用 vanilla JS,或使用其他库,例如来自 Mozilla 的 X-TagBosonic。这些库填充了仍处于草稿状态的 Web 组件功能。因此,这些库帮助我们在浏览器之间拥有/提供相同的用户体验,即使在没有对 web 组件的本机支持的情况下也是如此。

角度

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

所有这些都是为了回答你的问题

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


参考文献

为了更确定我在说什么,以及关于如何将 Polymer 与 Angular2 一起使用的其他资源(Angular2 尚未发布到此日期)

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


Web 组件规范

webcomponent 规范在这里供大家参考

我只是希望 webcomponents 是 evergreen browsers ASAP 的原生组件。

【讨论】:

    【解决方案2】:

    来自Polymer Starter Kit: "无框架,或兼容框架 使用元素构建您的应用程序,或连接到外部框架以处理业务逻辑。这取决于你!”

    更新: 所谓的碳元素似乎属于:

    Polymer(version 2) App Toolbox

    • 使用 Polymer 和 Web 组件的基于组件的架构。
    • 使用应用布局组件的响应式设计。
    • 使用元素的模块化路由。
    • 使用<app-localize-behavior>进行本地化。
    • 通过应用存储元素为本地存储提供统包支持。
    • 离线缓存作为渐进式增强,使用服务工作者。
    • 构建工具以支持以多种方式为您的应用提供服务:不捆绑以通过服务器推送通过 HTTP/2 交付,捆绑以通过 HTTP/1 交付。

    碳元素添加框架功能

    The Polymer Summit 2015 Keynote 期间,Google 宣布了一组新的“聚合物惯用和面向框架的”元素,暂定名为 Carbon 元素。

    关于Angular 2 vs Polymer Carbon 的较长 tjsavage 回答中的一些引述: “诀窍在于将 Web 平台视为应用程序框架...Polymer 库对于 Web 组件组件模型就像碳元素将使用 Web 平台本身作为应用程序框架一样:自以为是的轨道,使其更易于理解和实现。”

    “Angular 2 将提供一种构建应用程序的方法,该方法使用 Angular 对构建良好应用程序结构的观点。碳元素将提供另一种构建应用程序的方法,更直接地使用 Web 平台本身提供的内容作为其结构支撑。”

    【讨论】:

      【解决方案3】:

      聚合物几乎功能齐全。 目前它缺少例如路由,但这并不意味着您不能使用 Polymer。

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

      在 Dart 中,依赖注入也适用于 Polymer,因为类型不同。如果在 Dart 中是可能的,那么在 JS 中也是可能的,因为 Dart 会转译为 JS。不过,纯 JS 中的 DI 可能会更麻烦。

      在这个包中 (Dart) https://github.com/bwu-dart/bwu_polymer_routing 我使 Angular.dart 使用的路由和 DI 包可用于 Polymer。还有 Polymer.js 的路由包可用。

      【讨论】:

      • 所以在我的具体情况下。尝试翻译 php 应用程序时。你会推荐使用 angularjs、聚合物或两者的组合吗?
      • 我会尽量避免组合。使用 Angular 或 Polymer。
      • 在 Angular2 中使用 Polymer 元素可以正常工作,但有一些限制有望最终在 Angular2 中解决,或者当 Web 组件(影子 DOM)更好地被所有浏览器原生支持时。
      【解决方案4】:

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

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

      【讨论】:

      • 所以你是说,如果不是为了路由,你会说,聚合物是一个“好”的前端框架,可以用来构建项目。反正我个人不需要路由,因为我在后端处理它们。
      • 我想说它甚至不属于框架类别。框架尝试做所有事情(视图、控制器、模型、路由等)。 Polymer 只是一个可以很好地完成自定义元素的库。也就是说,您可以构建 JS 框架可以使用自定义元素构建的任何东西。自定义元素是未来,Polymer 是使用 IMO 构建自定义元素的最佳库。
      • Polymer 是关于自定义元素的,但您可以构建自定义元素来完成(几乎?)所有其他框架所做的事情。
      • MVC -> 自定义元素(本机或聚合物);模板/数据绑定 ->
      • 通过所有这些部件,您可以构建框架可以构建的任何东西。 Polymer 与其说是对框架的补充,不如说是对原生 DOM Web Components 规范的补充。也就是说,您可以将它与 Angular 等框架一起使用。真的没有任何规则。您可以随意使用它。
      【解决方案5】:

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

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

      【讨论】:

      • 您是如何在您的聚合物应用程序中处理模板的?您是否为每个新页面创建了一个功能齐全的 html 文件?
      • 您只需为此创建 Polymer 元素。
      【解决方案6】:

      让我再试一次:

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

      因此,Angular 为您提供了如何执行 MVVM 的路径,而使用 Polymer 时如何在您的应用程序中执行“逻辑”则取决于您。恕我直言,Angular 适用于更复杂且相当封闭的应用程序,而 Polymer 适用于任何包含 Web 的应用程序。如果您根本不编写应用程序,您甚至可以使用 Polymer ;)

      【讨论】:

        猜你喜欢
        • 2021-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-23
        • 1970-01-01
        相关资源
        最近更新 更多