Javascript 在Backbone.js中加载初始数据的最佳方法是什么?

Javascript 在Backbone.js中加载初始数据的最佳方法是什么?,javascript,backbone.js,Javascript,Backbone.js,在Backbone.js中,模型加载和保存是通过ajax调用完成的。但是,在页面加载时加载初始集合,而不必通过ajax将其拉下来,有什么最佳实践吗?我正在尝试在前端尽可能多地进行服务器端渲染 过去,我在html中植入了一个javascript变量,该变量包含初始数据状态的json字符串,因此可以在服务器端呈现,但我不确定这是否是一个好的做法。您选择的方法可能取决于您计划加载的数据量以及该数据在页面中的使用方式 如果所需的大部分数据最终不会呈现在页面上,那么将初始状态引导到javascript变量

在Backbone.js中,模型加载和保存是通过ajax调用完成的。但是,在页面加载时加载初始集合,而不必通过ajax将其拉下来,有什么最佳实践吗?我正在尝试在前端尽可能多地进行服务器端渲染


过去,我在html中植入了一个javascript变量,该变量包含初始数据状态的json字符串,因此可以在服务器端呈现,但我不确定这是否是一个好的做法。

您选择的方法可能取决于您计划加载的数据量以及该数据在页面中的使用方式

如果所需的大部分数据最终不会呈现在页面上,那么将初始状态引导到javascript变量中可能不是一个好方法

但是,如果数据与页面的表示直接相关,那么您可能更愿意为主干应用程序的初始状态解析预呈现的DOM。必须注意的是,这种解析会稍微慢一些,特别是对于大型数据集


如果您最终选择解析预呈现的内容,我在前一段时间收集了一些有用的信息,用于将呈现的内容映射到主干就绪的表单。

不知道这是否一定是最佳实践,但这种使用json对象而不是您描述的json字符串来植入html的方法,对吗?这当然是我做初始加载的首选方式。这不仅是因为它消除了等待初始AJAX调用返回的延迟,而且因为少一个打开的连接释放了浏览器来加载其他东西,比如img src或其他什么,让您更快地加载document.onLoad

建议在使用此方法时,将所述变量放在正文底部的脚本标记中,即不放在标题部分,以便使页面上的静态html元素有机会首先加载和呈现。当document.onLoad启动时,json数据就准备好了。

从中,在脚本标记中初始化模型不是一个坏做法。在我当前的项目中,我决定只在window.projectData中设置普通对象,以便能够在外部Java脚本中初始化主干模型

<script>
  ;(window.projectData || (window.projectData = {})).modelName = {/* value */};
</script>

这种方法唯一的缺点是,我们混合了一种生成javascript的后端语言,应用程序的整个初始化阶段都在一些.erb模板或jsp/php/etc中,而不是在javascript中。有时闻起来像意大利面条。