假设我有一个使用Backbone.js和Handlebars构建的Web应用程序.作为服务器我使用Node.js.现在我想在两端进行渲染,即在服务器和客户端上进行渲染.
当第一次请求路由时,服务器应该进行渲染(主要是由于性能原因).之后,所有后续操作都将导致客户端呈现.
这意味着我必须能够以完全相同的方式在客户端和服务器上呈现任何页面.两端都必须支持相同类型的路线.
我怎么能完成这个任务?
目前,我已经看过AirBnb的rendr项目,但这肯定与Backbone.js联系在一起(我不确定我是否一直想坚持使用Backbone.js),而且似乎并没有完美地完成然而.至少,AirBnb不建议将其用于生产用途.
关于如何做到这一点的任何其他想法?
作为一个子问题,我可能还会问:在服务器和客户端之间共享JavaScript代码的首选方法是什么?为此,我也知道piler,但我可以想象可能有更好的解决方案.
任何提示?
解决方法
好吧,我正在构建一个执行此操作的应用程序.如果您不想使用
rendr,则必须编写自己版本的一些他们需要处理的内容. AFAIK目前您的选择是rendr或本土种植.这是一些misc提示.
>我们使用cheerio进行服务器端DOM操作,因此当在服务器上呈现视图时,这个.$el是一个cheerio元素实例.在浏览器中,它是jQuery.
>您不需要在服务器端进行事件委派和绑定.我们的代码目前在技术上做到了这一点,但它毫无意义,更清晰的解决方案可以避免它在服务器上
>在浏览器中使用服务器呈现的HTML后,您需要一种方法将大型嵌套的视图实例树连接到大型嵌套DOM树中的相应元素.我们有一个自行开发的解决方案,但Backbone.View.setElement是核心,你需要编写一些代码来实现这一点
>我们现在正在浏览器上重新渲染,虽然可能有一种更流畅的方式来获取视图实例,在构造函数中为它提供一些选项,包括预渲染的DOM节点,并在没有重新渲染的情况下正确连接.不过,这对读者来说是一种练习.