3

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

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

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

4

3 回答 3

5

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

一般规则是:

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

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

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

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

于 2012-12-07T22:24:02.520 回答
1

个人经验中的一些注意事项:

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

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

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

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

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

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

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

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

于 2012-12-08T07:38:31.713 回答
0

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

希望这可以帮助。

于 2012-12-07T18:51:43.913 回答