使用Hotwire建立一个SPA

343 阅读2分钟

在过去的几年里,单页应用(SPA)一直在持续上升。今天的很多网络应用技术栈都依赖于后端的JSON APIs,由前端应用来修改网络浏览器中的DOM,以帮助为用户创造一个快速和无缝的体验。

当Ruby on Rails创建时,它是为在服务器上渲染页面而开发的。因此,要用Ruby on Rails在后端运行来构建SPA,你必须将JSON有效载荷作为响应来渲染,并让前端来处理其余的事情。

但是,如果前端可以更新DOM,从后端发送HTML而不是JSON呢?

这就是Hotwire出现的地方。

Hotwire的自我描述是:

构建现代网络应用的另一种方法,无需使用大量的JavaScript,通过电线发送HTML而不是JSON。这使得页面首次加载速度快,将模板渲染保留在服务器上,并允许使用任何编程语言进行更简单、更有成效的开发体验,而不牺牲任何与传统单页应用相关的速度或响应性。

Hotwire的创建是为了用良好的老式HTML取代重载的JS SPA,鼓励开发者将应用视为一组框架,可以由服务器发送的HTML来替代或增强。

考虑到这一点,使用Hotwire意味着保持Ruby on Rails的编程方式,因为它主要使用你需要编写的Ruby on Rails视图和参数。

Hotwire组件

Hotwire由以下三个组件组成:

  • Turbo:这是Hotwire的核心。它由一套技术组成,用于加快页面变化和表单提交的速度,将复杂的页面划分为组件,并通过WebSocket流式传输部分页面更新,无需编写任何JS代码。
  • Stimulus:一些互动性可能需要一些JS代码才能按要求工作,因此,对于那些需要自定义代码的情况,Stimulus使之发挥作用。
  • Strada:这个组件用于允许移动混合应用程序通过HTML桥接属性相互交谈。在写这篇文章的时候,Strada还没有被发布。

你怎么能开始呢?

首先,问问自己,你认为这适合你的产品吗?如果是的话,你想在MVP上尝试一下,或者你只是想看看它是如何工作的?

Rootstrap,我们把Hotwire与Tailwind、Device、ActiveAdmin和一些更有用的自定义选项放在一起,使你的生活变得更加容易。

因此,请随时克隆我们的Ruby on Rails Hotwire基地,并开始进行黑客攻击!

另外,如果你觉得这篇文章有用,别忘了给我们发一个⭐