Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 在主干网木偶中加载数据的最佳实践是什么?_Backbone.js_Marionette - Fatal编程技术网

Backbone.js 在主干网木偶中加载数据的最佳实践是什么?

Backbone.js 在主干网木偶中加载数据的最佳实践是什么?,backbone.js,marionette,Backbone.js,Marionette,我看到的大多数示例都是在应用程序加载时加载整个数据集合 我的第一个应用程序非常简单。I菜单区域包含可单击文章的列表,以及包含完整文章的文章详细信息区域。如果我有一系列的文章,我的数据最终可能会相当大 如果在一个巨大的集合中加载所有内容都不是一个好办法,那么有没有更好的例子可以告诉我如何延迟加载数据呢?我想要一个分页的文章集合(意味着最近的10个例子)。例如,当用户向下滚动时,我会加载下一个10或任何有意义的数字。网络上有这种技术的例子 希望这能有所帮助。这与其说是一个木偶问题,不如说是一个关于哪

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

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

如果在一个巨大的集合中加载所有内容都不是一个好办法,那么有没有更好的例子可以告诉我如何延迟加载数据呢?

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


希望这能有所帮助。

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

一般规则是:

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

当然,这里面有一些细微的差别,你可以争论,但通常效果很好

至于带木偶的自举数据,当它有意义时。。。
Application.start
方法为此获取一个参数,并将其传递给所有初始值设定项


个人经验中的几点注意事项:

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

  • 如果你希望你的应用程序最终也成为一个用Cordova或WebWorks包装的HTML5移动应用程序,那么任何引导都不适用,你需要动态加载所有数据

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

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

  • 如果您的模型有很多“相关”的模型或数据,您可以使用
    fetchRelated
    作为一种恶意攻击,但是这种方法对于大多数用例来说效率太低

  • 如果您计划在显示文章详细信息时动态加载/卸载与文章相关的数据,我建议您在应用程序对象或视图中显式地管理这些数据。如果您想缓存数据(您应该这样做),可以使用主干缓存应用程序。在项目模型上使用一个简单的标志来指示是否提取了数据,就足以管理提取/缓存

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


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

我不太担心集合中元素的数量,但担心集合中每个模型中数据的大小。
start
让我忙了一天!那是个舒适的地方。谢谢你,德里克。