【问题标题】:What are best practices for loading data in Backbone Marionette?在 Backbone Marionette 中加载数据的最佳实践是什么?
【发布时间】:2012-12-07 17:36:00
【问题描述】:

我看到的大多数示例都会在应用加载时加载整个数据集合。

我的第一个应用程序非常简单。 I 菜单区域包含可点击文章列表,文章详细信息区域包含完整文章。如果我有一系列文章,我的数据最终可能会非常大。

如果在一个巨大的集合中加载所有内容不是要走的路,有没有更好的例子有人可以指出我如何延迟加载我的数据?

【问题讨论】:

    标签: backbone.js marionette


    【解决方案1】:

    这与其说是一个木偶问题,不如说是一个关于应该引导哪些数据与不应该引导哪些数据的问题。

    一般规则是:

    如果您总是需要数据,无论屏幕上显示什么,都可以引导它。如果您并不总是需要它,请不要引导它。

    当然,您可以在其中争论一些细微差别,但通常效果很好。

    至于使用 Marionette 引导数据,当它有意义时...Application.start 方法为此接受一个参数,并将其传递给所有初始化程序。

    https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.application.md#starting-an-application

    【讨论】:

    • start 让我开心了一天!那是去的舒适的地方。谢谢德里克。
    【解决方案2】:

    个人经验的几点说明:

    • 加载所有数据通常是数据库的瓶颈,而不是客户端。如果您可以优化您的数据库,那么客户端可以轻松处理数百篇文章,甚至更多。

    • 如果您希望您的应用最终也成为封装在 Cordova 或 WebWorks 中的 HTML5 移动应用,那么任何引导都将不适用,您需要动态加载所有数据。

      李>
    • 在移动设备上(浏览器或cordova 无关紧要),不渲染屏幕外元素比不加载它们更重要。当然,您仍然可以使用较少的内存,但是如果您渲染整个集合,那么渲染和滚动将是罪魁祸首,而不是内存。

    • 在桌面浏览器上,预加载数据可提供更流畅的体验。即使您最初只加载前 10 篇文章,也要立即预取其余相关数据。

    • 如果您的模型有很多“相关”模型或数据,您可以使用 Backbone-Relation fetchRelated 作为一个肮脏的黑客,但这种方法对于大多数用例来说效率太低了。

    • 如果您计划在显示文章详细信息时动态加载/卸载与文章相关的数据,我建议在您的应用程序对象或视图中明确管理它。如果您想缓存数据(并且应该),可以使用 Backbone 缓存应用程序。文章模型上的一个简单标志,用于指示数据是否已获取,足以管理获取/缓存。

    • 如果您的数据是高度动态的,那么,至少在最初为了简单起见,不要缓存而是每次都获取动态部分。

    希望这会有所帮助。如果您有更具体的问题,请更新您的问题或发表评论。

    【讨论】:

      【解决方案3】:

      我会bootstrap 一个分页的文章集合(例如最近的 10 篇)。例如,当用户向下滚动时,我会加载接下来的 10 个或任何有意义的数字。网络上有这种技术的示例。

      希望这会有所帮助。

      【讨论】:

      • 我不是很担心集合中的元素数量,而是集合中每个模型中数据的大小。
      猜你喜欢
      • 1970-01-01
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      • 2015-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多