【问题标题】:What Javascript framework is best for this situation?哪种 Javascript 框架最适合这种情况?
【发布时间】:2011-11-21 23:24:52
【问题描述】:

我想在js中建立一个联系人列表,但是有这么多的js技术,比如backbone.js、spine.js、knockout.js等,我真的不知道哪一个最适合我。

我的联系人有几个主要类型:FacebookUser、User 和 UserList。用户列表的问题在于它是用户或用户列表的集合。此外,它本身可能有也可能没有自己的联系信息(如公司或团队)。

我想在树形视图中显示此列表,您可以在其中深入了解 UserList(并延迟加载组成员)。

最后,整个联系人列表是一个实例。我的意思是你在同一个窗口中一次打开了 0-n 个联系人列表。

在这种情况下我应该使用什么框架?

【问题讨论】:

    标签: javascript backbone.js knockout.js spine.js


    【解决方案1】:

    您提到的所有三个库(backbone.js、spine.js、knockout.js)都是针对单页浏览器应用程序的。

    但您对问题的描述听起来更像是格式问题,而不是数据管理问题。即,您希望您的页面显示数据。您无需将页面中的更改保存回服务器;您的用户将刷新页面以显示新的或不同的信息。

    如果我对您的目标的理解是正确的,我会选择 jQuery 或 YUI。您提到的库将是矫枉过正。

    添加 YUI 有一个不错的treeview widget,它支持延迟加载分支。我用它。

    如果你决定使用模型层,YUI 3 包括Model 和ModelList。它们基于 Backbone api。

    回复:MVC 评论在评论中,OP 提到“对同一数据的多个视图、更改传播和编辑检测(如果用户更改数字)以及来自服务器的更新”

    对于这些情况,是的,现在很多酷孩子都在浏览器本身上使用完整的 MVC 框架。如果您想朝那个方向发展,那么您可以使用您提到的三个中的任何一个。备注:

    • Backbone,可能还有另外两个,不提供完整的 MVC。相反,Backbone 提供模型和控制器部分,尤其是模型。视图通常使用Mustache。此外,通常使用下划线或 jQuery 来提供基本功能。如果您在 Google 上搜索主干示例,其中许多都包含 jQuery。

    • 结帐 YUI 新 y.App。它在一个有据可查的库中包含所有 MVC 部分。 y.App 正在火热开发中,基于 Backbone api。一个video-cast

    • 浏览器上的 MVC 框架是全新的。不要对快速更改库代码、不一致的文档、少量示例等感到惊讶。您还应该考虑记录和发布您的调查。为了额外的功劳,让它在移动浏览器上运行良好。

    • 传闻 49 Signals 正在开发浏览器端 MVC 框架,但我们还没有看到任何东西。

    • 我相信主干是模型库中最高级的。但事实证明,它让许多新用户感到困惑,因此还有一些基于其概念的其他库。

    • 根据我使用 YUI 的经验,他们的 Y.app 将拥有最一致、最完整的 api 集和最好的文档。

    【讨论】:

    • 只是我的一般编程意识告诉我,一个好的 gui 具有模型、视图、控制器。这使我可以将数据与视图分开。它允许对同一数据进行多个视图、更改传播和编辑检测(如果用户更改了数字)以及来自服务器的更新
    • @chacham15 MVC 只是一种方法,虽然我也倾向于使用 MVC 方法,但它不是唯一的。尽管如此,带有或不带有 jQ​​uery 的 JavaScript 或您提到的其他库仍然可以成为 MVC 应用程序的一部分。
    • 如果我走 jquery 的道路,如果必要的话,是否很难适应骨干?
    • 啊哈! y.App 对我来说是新的。我还检查了 Sproutcore 和 spine.js 作为骨干的可能替代品。
    【解决方案2】:

    如果我们接受您的具体案例,我会强烈推荐 Knockout.js

    Knockout 是为 UI 构建的,即您的数据模型可以绑定到 HTML 元素,然后模型中的任何更改都会相应地操纵 UI。

    在您的情况下,对联系人列表的添加/删除将由 Knockout 自动处理。您只需定义如何处理树视图中的更改(通过代码或 HTML 模板),Knockout 会处理这些。

    也就是说,定义联系人列表的树形视图仍然是完全不同的任务,您可能需要为此使用一些 CSS/JS 库。

    【讨论】:

      猜你喜欢
      • 2016-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-30
      • 2010-11-21
      • 2023-03-10
      • 2019-08-01
      相关资源
      最近更新 更多