【问题标题】:Is it really worth mixing AngularJS and or KendoUI?混合 AngularJS 和/或 KendoUI 真的值得吗?
【发布时间】:2014-02-21 07:32:55
【问题描述】:

最近,在使用 AngularJS 时,我真的很喜欢其中的许多功能,比如创建自定义抽象数据工厂等。

KendoUI 也有 AngularJS 提供的类似 MVVM、SPA 路由等功能,所以我很好奇将两者混合有什么好处(除了 KendoUI 丰富的 UI 功能)?

-- 更新--

我问这个问题是为了澄清,并且对于那些可能对每种方法的好处以及为什么在一个项目中同时使用这两种方法而不是另一种方法感到困惑的人。

例如 - Javascript 单元测试功能(只需使用 Angular 控制器完成,但还没有看到有人使用 KendoUI 这样做)。

看起来 Kendo 正在努力做到这一切,但 UI 做得最好。

谢谢。

-- 更新--

自从写这个问题以来,我已经完成了 KendoUI 网格并使用 OData 将 KendoUI 网格与 Angular 集成,并在www.whatsinyourlunch.com 写了一个关于如何完成此操作的教程here,希望这对其他人有用。

堆栈是通过通用存储库访问的 AngularJS、KendoUI、OData、WebAPI2、.Net MVC5、C#、Entity Framework。

【问题讨论】:

    标签: angularjs asp.net-web-api kendo-ui odata


    【解决方案1】:

    我知道这是旧的,但这是我的两分钱。你使用 Angular 的次数越多,你就越会意识到你不需要 Kendo。 Kendo/Angular 集成有点小技巧,但似乎可以完成工作。我发现使用剑道的唯一原因是网格。我已经尝试过那里的 Angular 网格,它们充满了错误和格式问题。

    我认为重要的是不要成为纯粹主义者,而只是使用任何工具组合来完成你需要的事情。我倾向于尝试摆脱对付费商业图书馆的依赖,但网格很稳固。任何付费产品都可能有更多的支持和维护,以及对开发团队的个人访问权(相对于大公司维护良好的免费产品或浪费掉的单个开发人员项目)。我已经看到很多很棒的免费产品被放弃了。但是,如果您想要一个很棒的免费网格并且不能忍受仅仅为一个网格支付 Telerik 1000.00 美元,DataTables.net 是一个很好的选择,也是我目前使用的。

    您必须喜欢 Telerik 的支持,在我看来,这是使用他们产品的最佳理由。他们在 Kendo 中缺少一些东西,例如好的日期范围日历、标签云等。与说 Highcharts 相比,这些图表也缺少。我使用 Keith Wood 的日期范围日历,尽管他似乎没有回复电子邮件。我还发现了一些很棒的角度控件,可以用于其他东西,比如下拉菜单等。我以前不明白为什么人们会使用大杂烩,但它是完成重要工作的最佳工具。

    【讨论】:

    • +1 表示“Kendo/Angular 集成有点小技巧,但似乎可以完成工作。”。现在在工作中使用剑道/角度组合,这让我为它的糟糕程度而哭泣/它已经由第 3 方开发人员在这个项目中完成。唯一的痛点是它有效。维护方面,这是一场噩梦,但它确实有效。 :(
    • 我使用 Kendo Grid 已经两年了,在我看来,如果你想使用很多功能和自定义,它充满了错误。与一些好的免费/更便宜的解决方案相比,它并不是万无一失的。
    【解决方案2】:

    我个人不会在 Angular 指令中使用 KendoUI 丰富的 UI 功能。其余的应该是 Angular。或者专门使用 KendoUI。

    【讨论】:

    • 同意。我尝试将两者混合,但最终只使用剑道。 Kendo 在需要时提供出色的数据源 API 和 MVVM
    【解决方案3】:

    混合它们效果很好。您不必使用 Kendo 附带的所有框架代码(MVVM 等),只需专注于丰富的 UI 功能即可。我们使用了他们的几个控件,包括高度定制的网格版本。 Angular 非常适合这一点,因为我们构建了指令来包装 Kendo 控件并封装每次发生的 80% 配置,因此开发人员可以专注于页面/模块/其他内容中不同的 20%。我们的项目成功地让 20 多名开发人员组成了一个分布式团队,参与了一个拥有数万行代码的项目,并且我们在使用 Kendo 和 Angular 的 UI 功能方面取得了巨大成功。

    【讨论】:

    • 我想知道将 Kendo-Angular 引入组合是否真的值得。我可以定义一个 Kendo 控件,然后在角度控制器(例如网格)中设置其所有属性(数据源等)。 CRUD 事件可以绑定到 OData 端点(但仍然没有真正的“Angular”集成)。我想抽象出一个 Angular CRUD 工厂,从而提供 JS 可测试性(CI/等)。推荐这种架构还是有更好的方法 - 请参阅stackoverflow.com/questions/21467130/…
    • 如果 OData 工作,那可能没问题。我们有更细粒度的需要来控制我们的域模型的操作方式,因此 OData 并没有真正削减它,并且通过客户端上的自定义,Angular 路由绝对是必须的,但每个项目都不同。
    【解决方案4】:

    在我们当前的项目中,我们同时使用 Angular 和 Kendo(主要用于网格)。我们没有将两者混为一谈,这也是我的建议。 Angular 应该负责您的应用程序逻辑,而 Kendo 应该只关心管理小部件。

    Kendo 提供了自己的kendo-angular library,其中包含大多数小部件的指令。

    【讨论】:

    • 好的,这是我一直在考虑的方法。只需将 Angular 控制器中的所有 Kendo 控件连接起来,我相信这就是您所说的。有了这个,您可以评论以下内容:stackoverflow.com/questions/21418110/…
    • @ElHaix 今晚晚些时候我会看看它。
    • @Anzeo 通过“不混合”,您的意思是不要让 kendo 数据源绑定直接调用后端,而是通过 Angular 服务(就像您通常会做的那样)?我目前正在评估 Kendo 是否值得使用 Angular,但我有点担心这些组件的可测试性。看到控制器中的所有数据源代码看起来有点令人震惊..
    • 正确,我们使用 Kendo 纯粹是为了渲染小部件和 RUI 功能。与后端的通信由一个 Angular 服务处理。
    【解决方案5】:

    以下是我不赞成将 KendoUI 与 AngularJs 混合使用的几点经验:

    • 虽然 AngularJs 有 kendo 指令,但很多 UI 相关的东西最终会出现在控制器中(配置、事件、复杂模板),并且很难将 jQuery 排除在外。李>
    • kendo 组件的初始化和显示确实给每个页面(网格、标签条、...)增加了严重的时间损失
    • 事件和方法参数在整个 kendo 框架中不一致(即选择网格、列表视图和组合框的方法)
    • 在网格(或列表视图)中使用模板或响应网格事件感觉不像 AngularJs
    • 组件的行为与其尝试替换的原生控件不同(即组合框与原生选择的事件顺序和数据绑定)
    • 一旦需要自定义 kendo 组件的外观和感觉,就必须熟悉 kendo 使用的 CSS 类。

    KendoUI 网格很棒,但如果项目不需要它,将两者混合使用将无济于事。

    【讨论】:

      【解决方案6】:

      我认为混合它们不是一个好方法。你应该问自己一个问题“女巫在我的项目中更需要和有用”

      我决定在 angular 旁边使用kendo,因为它有丰富的网格组件。但是我取消了。

      kendoUI 的主要控件是网格。但是你需要观察它的每一个元素才能有一个完整的绑定,它会让它变慢。网格中一行的dataItem 也不会返回原始数据。 你需要看分页、过滤、排序......

      但对于kendo 的其他控件,我们遇到的问题更少。

      【讨论】:

      • 完全不同意。我们以自定义方式使用 Kendo 网格来显示可包含多达 25 万行的分层网格。它实现了完整的分页和节点的展开/折叠,使用 Angular 的数据绑定并且性能非常好。我们还有分页、过滤、排序,甚至自定义列。我不确定您为什么会遇到问题,但它对我们很有用。
      • @Jeremy:我很高兴听到它对你有用。同样根据我们的经验,将两者混合似乎不是一个好主意。我的经验是 1) 更多的代码膨胀只是为了让剑道工作 2) UI 似乎更慢 3) 剑道在使用 angular 时似乎有一些奇怪的怪癖
      猜你喜欢
      • 1970-01-01
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      • 2012-07-28
      • 2012-11-17
      • 1970-01-01
      • 2012-10-26
      相关资源
      最近更新 更多