3

我一直在使用Angular 2 Universal进行同构应用程序开发,但有一点我无法弄清楚。

我的理解是,将背面和正面保持在不同的模块上是一种很好的做法,但在使用应用程序时,这似乎不是一种常见的模式MEAN

所以,我即将开始一个可以扩展的项目,我想在未来实现服务器端渲染,但我不知道我应该采用哪种方法。老实说,我觉得将后端和前端分开更舒服,但如果是这样,以后有可能实现服务器端渲染吗?

此外,假设我index.html在两边都复制了,当第一个服务器渲染完成时,服务器是否能够将控制权委托给客户端?我的意思是,鉴于他们不在同一个项目中,我无法想象该代表团将如何工作。

提前致谢。

4

1 回答 1

3

据我了解,您正在谈论渲染 UI,这是您的应用程序的前端部分,即使您在服务器上进行预渲染工作也是如此。

这种预渲染只是优化,您可以将其保留在某个单独的代码层中,但我相信同构 javascript 的整个想法是在客户端和服务器上重用相同的代码。尝试复制代码和/或模板的这种方式不是一个好主意(从来都不是)。

如果您真的想将事物分开,请考虑将您的应用程序拆分为更多服务:

  • 后端服务器应用程序 - 数据库顶部的某种休息 API,它包含所有业务逻辑(第一个 node.js 应用程序)
  • 前端服务器应用程序 - 另一个 node.js 应用程序,它通过 HTTP 请求从 API 获取数据并进行服务器端预渲染(第二个 node.js 应用程序)
  • 前端 - 在浏览器中运行的所有代码

这样,最初“前端服务器应用程序”可以是“前端”和“后端服务器应用程序”之间的简单代理。稍后您可以使用服务器端渲染对其进行扩展。

重要提示:如果您要开发应用程序而不在服务器上预渲染并在稍后阶段添加它,您需要考虑并非所有浏览器端 javascript 功能都可以在服务器上运行(例如,操作使用原生 DOM 元素),请参阅Angular Universal 自述文件中的最佳实践部分

于 2016-06-11T22:23:33.740 回答