我看到的大多数示例在应用程序加载时都会加载整个数据集合。
我的第一个应用程序非常简单。I 菜单区域包含可点击文章列表,文章详细信息区域包含完整文章。如果我有一系列文章,我的数据最终可能会非常大。
如果在一个巨大的集合中加载所有东西不是要走的路,有没有更好的例子有人可以指出我如何延迟加载我的数据?
我看到的大多数示例在应用程序加载时都会加载整个数据集合。
我的第一个应用程序非常简单。I 菜单区域包含可点击文章列表,文章详细信息区域包含完整文章。如果我有一系列文章,我的数据最终可能会非常大。
如果在一个巨大的集合中加载所有东西不是要走的路,有没有更好的例子有人可以指出我如何延迟加载我的数据?
这与其说是一个木偶问题,不如说是一个关于应该引导哪些数据与不应该引导哪些数据的问题。
一般规则是:
如果您总是需要数据,无论屏幕上显示什么,引导它。如果您并不总是需要它,请不要引导它。
当然,您可以在其中争论一些细微差别,但通常效果很好。
至于使用 Marionette 引导数据,当它有意义时......该Application.start
方法为此接受一个参数,并将其传递给所有初始化程序。
个人经验中的一些注意事项:
加载所有数据通常是数据库的瓶颈,而不是客户端。如果您可以优化您的数据库,那么客户端可以轻松处理数百篇文章,甚至可能更多。
如果您希望您的应用程序最终也成为封装在 Cordova 或 WebWorks 中的 HTML5 移动应用程序,那么引导程序将不适用,您需要动态加载所有数据。
在移动设备上(浏览器或cordova 无关紧要),不渲染屏幕外元素比不加载它们更重要。当然,您仍然可以使用较少的内存,但是如果您渲染整个集合,那么渲染和滚动将是罪魁祸首,而不是内存。
在桌面浏览器上,预加载数据可提供更流畅的体验。即使您最初只加载前 10 篇文章,也要立即预取其余相关数据。
如果你的模型有很多“相关”的模型或数据,你可以使用Backbone-Relation fetchRelated
作为一个肮脏的黑客,但这种方法对于大多数用例来说效率太低了。
如果您计划在显示文章详细信息时动态加载/卸载与文章相关的数据,我建议您在应用程序对象或视图中明确管理它。如果您想缓存数据(并且应该),可以使用 Backbone 缓存应用程序。文章模型上的一个简单标志来指示数据是否已被获取,这足以管理获取/缓存。
如果您的数据是高度动态的,那么至少在最初为了保持简单,不要缓存而是每次都获取动态部分。
希望这可以帮助。如果您有更具体的问题,请更新您的问题或发表评论。
我会引导一个分页的文章集合(例如最近的 10 篇)。例如,当用户向下滚动时,我会加载接下来的 10 个或任何有意义的数字。网络上有这种技术的例子。
希望这可以帮助。