当第一次请求路由时,服务器应该进行渲染(主要是由于性能原因).之后,所有后续操作都将导致客户端呈现.
这意味着我必须能够以完全相同的方式在客户端和服务器上呈现任何页面.两端都必须支持相同类型的路线.
我怎么能完成这个任务?
目前,我已经看过AirBnb的rendr项目,但这肯定与Backbone.js联系在一起(我不确定我是否一直想坚持使用Backbone.js),而且似乎并没有完美地完成然而.至少,AirBnb不建议将其用于生产用途.
关于如何做到这一点的任何其他想法?
作为一个子问题,我可能还会问:在服务器和客户端之间共享JavaScript代码的首选方法是什么?为此,我也知道piler,但我可以想象可能有更好的解决方案.
任何提示?
解决方法
>我们使用cheerio进行服务器端DOM操作,因此当在服务器上呈现视图时,这个.$el是一个cheerio元素实例.在浏览器中,它是jQuery.
>您不需要在服务器端进行事件委派和绑定.我们的代码目前在技术上做到了这一点,但它毫无意义,更清晰的解决方案可以避免它在服务器上
>在浏览器中使用服务器呈现的HTML后,您需要一种方法将大型嵌套的视图实例树连接到大型嵌套DOM树中的相应元素.我们有一个自行开发的解决方案,但Backbone.View.setElement是核心,你需要编写一些代码来实现这一点
>我们现在正在浏览器上重新渲染,虽然可能有一种更流畅的方式来获取视图实例,在构造函数中为它提供一些选项,包括预渲染的DOM节点,并在没有重新渲染的情况下正确连接.不过,这对读者来说是一种练习.
原文地址:https://www.jb51.cc/nodejs/241121.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。