什么是同构应用程序?

What is an isomorphic application?

我一直在阅读多篇不同的文章,了解什么是同构应用程序,为什么这种架构更好等等。但是我对这个词的含义仍然有些不确定。

您如何定义 "Isomorphic Application" 是什么,而不是过多讨论细节?

它们最近也被称为 universal。我不确定整个应用程序是否被调用 isomorphic/universal,但您肯定可以拥有通用的部分代码库。

Isomorphic/universal 代码是在客户端(浏览器)和服务器(NodeJS)上运行的代码。因为它们都是 JavaScript 这在以下情况下是可能的:

  1. 您没有提及 windowdocument 或任何其他仅限浏览器的方法
  2. 您没有提及 serverfs 或任何或任何其他仅限节点的方法。
  3. 如果您确实需要在一些通用代码中执行上述操作,您应该将其包装在一个函数中,该函数要么在备用环境中模拟所需的方法,要么将其包装在条件中,这样应用程序就不会崩溃了。

一个例子是 console.log,它可以在 NodeJS 和任何浏览器中工作,以及现代浏览器中的大多数其他 es6 方法。

我使用构建工具(如 webpack)来帮助在单个文件中创建/导出函数,这样我们就有了一个像 client-app.js 这样的 bundle,它包含在 HTML文件并且是浏览器唯一的js。然后服务器可能会开始使用 server-app.js ,这是仅限服务器的捆绑包。可以使用大量相同的 universal 源代码创建这两个包。