性能文章>Rails 7.0 发布:实现了真正的全栈 Web 开发>

Rails 7.0 发布:实现了真正的全栈 Web 开发原创

https://a.perfma.net/img/3110416
2年前
330100

12月15日,Rails官方发布了博文《Rails 7 fulfilling a vision》,不仅介绍了Rails 7的最新功能特性,同时也表明Rails 7 实现了一个愿景,即一种真正的全栈 Web 开发方法,以同样的力度应对前端和后端的挑战。

事实上,这个愿景已经提出很多年了,但前几年几乎不可能实现。因为之前没有能够掌握核心技术,但随着浏览器对ES6/ESM支持的进步,HTTP/2的广泛采用,以及令人振奋的import maps新标准,这一愿景才能得以实现。Rails 站在这些技术进步的肩膀上,为前端提供了一种无节点的默认方法--在此过程中既不牺牲对npm包的访问,也不牺牲现代JavaScript。

Hotwire将Turbo和Stimulus结合在一起,提供了制作出色的用户体验所需的所有工具,与单页应用程序相比,几乎没有任何遗漏,而且复杂程度很低。它是新的Rails应用程序的默认选择,取代了Turbolinks和Rails UJS的有限选择。

虽然考虑到这些默认选项,大多数Rails应用都不需要依赖Node,但我们仍然设法为那些需要依赖Node的Rails 7 用户大幅改善了集成。

与Webpacker紧密耦合的Webpack已不复存在,取而代之的是与任何JavaScript捆绑器松散耦合的拥抱。无论你喜欢esbuild还是rollup.js,甚至Webpack,都可以通过新的jsbundling-rails集成来使用,可以用--javascript esbuild为新的应用程序预先配置。

对依赖Node的CSS捆绑器也采取了同样的方法。在Rails 7中,只需要能够产生一个编译好的application.css文件,就可以完美地整合。从Tailwind CSS到Bootstrap,从Dart驱动的Sass到PostCSS。如果你愿意接受Node依赖的复杂性,就可以预先配置新Rails应用程序,使用任何一个-css bootstrap,它就会使用cssbundling-rails。(针对于Tailwind,甚至有一个不依赖Node的版本!)

Rails的其它功能和更新包括:

  • Active Record支持工作加密

Active Record添加了加密属性,所以应用程序除了传统的静态和传输中的覆盖之外,还可以提供工作中的加密。

这个更新的直接好处是为加密敏感属性增加了一个额外的安全层。例如,如果一个攻击者获得了对你的数据库、数据库的快照或你的应用程序日志的访问权,他们将无法理解加密的信息。即使不考虑恶意行为者,出于合法原因检查应用日志也不应该暴露客户的个人信息。

但更重要的是,通过使用该加密,你可以在代码层面上定义什么是应用程序中的敏感信息。这样就可以控制这些信息的访问方式,并围绕它建立服务。

  • 使用 Marginalia 样式标记跟踪查询来源

十年前,Marginalia从Basecamp中提取出来,用SQL注释标签追踪查询源头。现在,这个外部工具已经作为QueryLogs上传到了Active Record。

  • 异步查询加载

当一个控制器动作需要加载两个不相关的查询时,现在可以通过Relation#load_async并发进行。如果有三个复杂的查询,每个需要100毫秒,之前必须花300毫秒逐一执行,但现在可以并行运行,总共只花费100ms。

  • Zeitwerk

Rails中自动加载是一种很神奇的存在,它常被认为是理所当然的,但是之前 const_missing 方法其实有很多缺失的功能,现在,它终于被 Zeitwerk 代码加载器完全取代。

  • 其他亮点

Spring不再是默认开启的;

ActionController::Live#send_stream可以轻松传输在控制器 action中即时生成的文件;

并行测试可以比较CPU核心数和测试数,并相应地扩展并行化;

Active Storage使用更快和更安全的libvips作为其默认变体处理器。


来源:稀土掘金
原文链接:https://juejin.cn/news/7042628854707388452

点赞收藏
堆堆

【HeapDump性能社区官方小编】各位堆友们,+微信号perfMa,可以联系上堆堆哦~

请先登录,感受更多精彩内容
快去登录吧,你将获得
  • 浏览更多精彩评论
  • 和开发者讨论交流,共同进步
0
0
https://a.perfma.net/img/3110416
堆堆

徽章

【HeapDump性能社区官方小编】各位堆友们,+微信号perfMa,可以联系上堆堆哦~