Importmap还是jsbundling?我两者都用

💡 原文英文,约700词,阅读约需3分钟。
📝

内容提要

从Rails 7开始,Importmap成为默认的JavaScript加载方式,利用HTTP/2的并行下载和缓存。对于复杂的JS库,可以结合jsbundling和Importmap:先用jsbundling打包依赖,再用Importmap导入。这种方法解决了Importmap处理复杂依赖的问题,并保持了缓存优势。

🎯

关键要点

  • 从Rails 7开始,Importmap成为默认的JavaScript加载机制。
  • Importmap利用HTTP/2的并行下载和缓存机制,避免每次更改时都下载所有代码。
  • Importmap提供了pin功能,可以将JS文件从CDN下载并配置到项目中。
  • 某些JS库假设开发者会使用打包工具,导致源代码分散在多个文件中。
  • 使用Importmap pin时,可能会遇到依赖不完整的问题,尤其是对于Lit库。
  • 可以通过先使用jsbundling打包依赖,再用Importmap导入的方式解决复杂依赖问题。
  • 需要修改Rails项目的配置以解决jsbundling和Importmap的冲突。
  • 创建app/javascript/src/文件夹并添加lit.js文件以导出Lit库。
  • 通过yarn安装lit包,并在config/importmap.rb中添加相应配置。
  • 整个工作流程是esbuild编译源代码,处理后通过Importmap进行模块导入。
  • 这种方法虽然打破了无构建的期望,但仍然利用了细粒度缓存,适用于复杂依赖的处理。
➡️

继续阅读