在Backbone Marionette中加载数据的最佳做法是什么?

时间:2012-12-07 17:36:01

标签: backbone.js marionette

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

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

如果在一个巨大的集合中加载所有东西都不是可行的方法,那么有没有更好的例子有人可以指示我向我展示如何延迟加载我的数据?

3 个答案:

答案 0 :(得分:5)

这不是一个木偶问题,因为这是一个关于应该引导哪些数据与哪些数据不应该是什么的问题。

一般规则是:

如果您总是需要数据,无论屏幕上显示什么,都要自行引导。如果你不总是需要它,请不要自助它。

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

对于使用Marionette的自举数据,当它有意义时...... Application.start方法为此获取一个参数,并将其传递给所有初始化器。

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

答案 1 :(得分:1)

从个人经验中得到的一些注释:

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

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

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

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

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

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

  • 如果您的数据非常动态,那么,至少最初要保持简单,不要缓存,但每次都要获取动态部分。

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

答案 2 :(得分:0)

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

希望这有帮助。