我一直在阅读React和Redux,他们提到了“通用应用”。例如:
“你可能想要一个(de)序列化机制来编写通用应用程序并从服务器中保湿它们的状态......” (来自http://rackt.org/redux/docs/introduction/PriorArt.html)
什么是通用应用?
答案 0 :(得分:4)
在此上下文中,通用应用程序是指那些能够在服务器或客户端中呈现的Web应用程序,具体取决于具体情况。
有时候也可以称为“同构应用”。
来自https://www.npmjs.com/package/webpack-isomorphic-tools的更完整的解释:
什么是网络应用程序?我会把它定义为一个带有一堆的盒子 输入(键盘事件,鼠标事件)和显示作为输出。一个 用户进入您的网站,您的Web应用程序呈现“页面” 在他的展示上。
首先,所有渲染都发生在服务器上。但是之后 “AJAX”来了(2005年),它开启了全部移动的可能性 将逻辑呈现给客户端(用户的Web浏览器)离开服务器 只提供API调用(数据提取,数据修改等)。
出现了许多javascript框架以达到目的 客户端渲染和路由。但后来大家意识到了这一点 这种构建Web应用程序的新方法打破了搜索引擎索引 因为搜索引擎没有说任何javascript。
然后超级响应网站的时代来了,还有iPhone 出现了,毫秒开始的战斗。每个人都注意到了 客户端渲染引入了不必要的数据提取 第一页上的往返加载:Web浏览器加载的标记 首先是模板和脚本,然后向服务器询问实际情况 要显示的数据。
因此很明显Web应用程序需要“同构” (“通用”),即能够在客户端和 服务器,视情况而定。这是非常易于管理的:一个是公正的 必须用这种编程语言编写渲染逻辑 能够在客户端和服务器上运行。一种这样的语言是 的JavaScript。
答案 1 :(得分:0)
如果您想了解这个概念(我是指通用应用程序),那么您应该首先知道spa应用程序是如何工作的!
spa应用程序如何工作?
想象一个场景,我们有一个以spa方式构建的Web应用程序! 在这样的应用程序中,当用户向服务器发送请求时(例如,当他/她想查看索引页面时),服务器将html页面返回给客户端,该页面不包含任何内容!!! (我的意思是它没有数据,您知道每个页面都是html标签+数据的组合,并且数据是我们的,例如电子商务网站中的最后博客文章或产品) 在spa中,当用户向服务器发送请求时,服务器将返回无数据的html页面,在页面呈现后,您的应用程序会将ajax请求发送到服务器并获取这些数据(在我们最后的博客文章中,可以吗?) spa应用程序以这种方式工作!知道了这一点之后,我们就可以了解通用应用程序的工作原理了。
通用应用程序如何工作?
通用应用程序与spa应用程序一样工作,但是这些应用程序会检查请求,但是出于什么目的?实际上,他们想知道用户发送的请求是否是他/她对此URL的第一个请求?(我知道描述很困难,所以让我用一个例子来描述它)
再次设想一种情况,用户想查看 mysite.com/about 页面,好吗?通用应用程序会检查url,如果发送的url是用户首次发送的,则通用应用程序将在服务器端渲染该页面(渲染带有标签和数据的页面,然后将其发送到客户端。好吗?),在下一个请求中,如果用户希望再次在通用应用程序中查看该页面,则该页面实际上不会在服务器端呈现,而在下一个请求中,该页面将在客户端呈现。
结论: 在通用应用程序中,第一个视图在服务器上动态呈现,并在第一个加载应用程序后转到spa!