同构应用程序是否意味着前后站在一起?

Do the isomorphic apps implies back and front stand together?

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

我的理解是,在不同的模块上保留前后两面是一种很好的做法,但在使用 MEAN 应用程序时,这似乎不是一种常见的模式。

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

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

提前致谢。

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

这个预渲染只是优化,你可以把它放在一些单独的代码层,但我相信同构的整个想法 javascript 是在客户端重新使用相同的代码并且服务器。这种尝试复制代码 and/or 模板的方式不是一个好主意(从来都不是)。

如果你真的想把事情分开,考虑将你的应用程序拆分成更多的服务:

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

这样,最初 "frontend server application" 可以作为 "frontend" 和 "backend server application" 之间的简单代理。 稍后您可以使用服务器端渲染对其进行扩展。

重要说明:如果您打算在不在服务器上进行预渲染的情况下开发应用程序并在稍后阶段添加它,您需要考虑并非所有浏览器端 javascript 功能都会在服务器上工作(例如,使用本机 DOM 元素进行操作),请参阅 best practices section in angular universal readme.