javascript - 什么是同构应用程序?

标签 javascript node.js reactjs isomorphic-javascript

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

您如何定义“同构应用程序”是什么,而又不涉及太多细节?

最佳答案

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

同构/通用代码是在客户端(浏览器)和服务器(NodeJS)上运行的代码。由于它们都是 JavaScript,因此在以下情况下这是可能的:

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

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

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

关于javascript - 什么是同构应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48008502/

相关文章:

javascript - 如何使用 Vue.js 将图像 url 绑定(bind)到 Framework7 list-item "media"属性?

javascript - 为什么在 angularjs 中与 ng-model 一起使用时,html 中的值属性不起作用?

node.js - 如何使用 d3.js 从 Mapbox 检索矢量切片并转换为 geojson?

javascript - 尝试使用 React hooks 从 Giphy API 显示 GIF

arrays - Array.prototype.filter() 期望在箭头函数末尾返回一个值,React

javascript - HTML5 等效于 jQuery 翻转插件?

javascript - 模拟 - 在调用构造函数之前设置属性

facebook 和 socket.io node.js

node.js - Mongoose 在预保存 Hook 中获取数据库值

javascript - React useContext 不会将值传递给深度嵌套的子级