什么是同构应用程序?
What is an isomorphic application?
我一直在阅读多篇不同的文章,了解什么是同构应用程序,为什么这种架构更好等等。但是我对这个词的含义仍然有些不确定。
您如何定义 "Isomorphic Application" 是什么,而不是过多讨论细节?
它们最近也被称为 universal
。我不确定整个应用程序是否被调用 isomorphic/universal,但您肯定可以拥有通用的部分代码库。
Isomorphic/universal 代码是在客户端(浏览器)和服务器(NodeJS)上运行的代码。因为它们都是 JavaScript 这在以下情况下是可能的:
- 您没有提及
window
、document
或任何其他仅限浏览器的方法
- 您没有提及
server
、fs
或任何或任何其他仅限节点的方法。
- 如果您确实需要在一些通用代码中执行上述操作,您应该将其包装在一个函数中,该函数要么在备用环境中模拟所需的方法,要么将其包装在条件中,这样应用程序就不会崩溃了。
一个例子是 console.log
,它可以在 NodeJS 和任何浏览器中工作,以及现代浏览器中的大多数其他 es6 方法。
我使用构建工具(如 webpack)来帮助在单个文件中创建/导出函数,这样我们就有了一个像 client-app.js
这样的 bundle
,它包含在 HTML文件并且是浏览器唯一的js。然后服务器可能会开始使用 server-app.js
,这是仅限服务器的捆绑包。可以使用大量相同的 universal
源代码创建这两个包。
我一直在阅读多篇不同的文章,了解什么是同构应用程序,为什么这种架构更好等等。但是我对这个词的含义仍然有些不确定。
您如何定义 "Isomorphic Application" 是什么,而不是过多讨论细节?
它们最近也被称为 universal
。我不确定整个应用程序是否被调用 isomorphic/universal,但您肯定可以拥有通用的部分代码库。
Isomorphic/universal 代码是在客户端(浏览器)和服务器(NodeJS)上运行的代码。因为它们都是 JavaScript 这在以下情况下是可能的:
- 您没有提及
window
、document
或任何其他仅限浏览器的方法 - 您没有提及
server
、fs
或任何或任何其他仅限节点的方法。 - 如果您确实需要在一些通用代码中执行上述操作,您应该将其包装在一个函数中,该函数要么在备用环境中模拟所需的方法,要么将其包装在条件中,这样应用程序就不会崩溃了。
一个例子是 console.log
,它可以在 NodeJS 和任何浏览器中工作,以及现代浏览器中的大多数其他 es6 方法。
我使用构建工具(如 webpack)来帮助在单个文件中创建/导出函数,这样我们就有了一个像 client-app.js
这样的 bundle
,它包含在 HTML文件并且是浏览器唯一的js。然后服务器可能会开始使用 server-app.js
,这是仅限服务器的捆绑包。可以使用大量相同的 universal
源代码创建这两个包。