在Backbone.js中,模型加载和保存是通过ajax调用完成的。但是,是否有任何最佳实践在页面加载时加载初始集合而不必通过ajax将其拉下来?我正在尝试尽可能多地进行服务器端渲染。
过去,我在html中添加了一个包含初始数据状态的json字符串的javascript变量,因此它可以呈现给服务器端,但我不确定这是不是很好。
答案 0 :(得分:5)
不知道这是否是最好的做法,但这种方法是用json 对象(而不是json string 播种html,正如你所描述的那样,对?)肯定是我做首次加载的首选方式。不仅因为(显而易见的)原因,它消除了等待初始AJAX调用返回的延迟,而且因为一个较少开放的连接释放了浏览器以加载其他东西(如img src或诸如此类),让你to document.onLoad稍早。
建议在使用此方法时,将所述变量放在正文底部的脚本标记中(即不在头部),以便为页面上的静态html元素提供机会首先加载并渲染。当document.onLoad触发时,json数据就绪。
答案 1 :(得分:1)
从Backbone docs开始,在脚本标记中初始化模型并不是一个坏习惯。在我当前的项目中,我决定只在window.projectData
内设置普通对象,以便能够在外部javascripts中初始化Backbone模型。
<script>
;(window.projectData || (window.projectData = {})).modelName = {/* value */};
</script>
答案 2 :(得分:0)
您选择的方法可能取决于您计划加载的数据量以及该数据在页面中的使用方式。
如果大多数所需数据最终都不会在页面上呈现,那么将初始状态引导到javascript变量可能不是一个糟糕的路径。
但是,如果数据与页面的显示直接相关,您可能更愿意为骨干应用程序的初始状态解析预先呈现的DOM。必须提醒的是,这种解析会稍微慢一些,特别是对于大型数据集。
如果你最终选择解析预渲染的内容,我会在一段时间内整理small jQuery DOM parser,这可能对将所呈现的内容映射到Backbone就绪形式非常有用。