Rails 7 前端资源打包与管理详解
1. 前端资源管理的演变
早期,JavaScript 较为简单,可在 HTML 元素的 onclick
等属性中编写少量代码实现简单动态效果,但功能极为有限。后来,开发者将 JavaScript 代码置于外部文件,通过 <script>
标签引入,虽有所改进但仍有局限。随着 JavaScript 程序复杂度增加,对多文件引入、第三方库依赖、CSS 处理等需求不断增长,还需进行代码编译、性能优化等任务,因此需要更高效的工具来协调这些构建任务。
Rails 7 在前端资源管理方面与以往版本不同,它更清晰地划分了 Rails 与前端工具的职责,使 Rails 部分的配置更简单。早期 Rails 可能使用 Sprockets 或 Webpacker 配置和管理前端工具,这些工具配置复杂,且与外部 JavaScript 和 CSS 工具存在配置重复,处理 JavaScript 和 CSS 时易产生混淆,还难以跟上整个 JavaScript 生态系统的发展。
Rails 7 提供了更灵活的解决方案,允许选择外部 JavaScript 和 CSS 构建工具,如使用 jsbundling-rails
协调 JavaScript 工具(可选择 esbuild、Rollup 或 webpack),使用 cssbundling-rails
处理 CSS(可选择 Tailwind、PostCSS 或 Sass)。文件构建完成后,使用 Propshaft 提供给浏览器,也可使用 importmap-rails