Rails 7的importmap-rails是什么?

首先

在Rails 7中执行rails new app_name命令,Gemfile文件中会自动加入importmap-rails。importmap-rails是什么意思?

本文章将解释什么是importmap-rails,并描述其使用所带来的变化。

导入地图-铁轨

importmap-rails是一个用于使Rails中使用import maps机制更加方便的gem。

导入地图

“import maps” 是将 JavaScript 模块的实体和逻辑名称进行映射。例如,可以通过以下方式进行映射。

<script type="importmap">
{
  "imports": {
    "react": "https://ga.jspm.io/npm:react@17.0.2/index.js",
  }
}
</script>

“react”是一个逻辑名称,URL是JavaScript模块的具体实体。

通过这样的映射,您可以使用逻辑名称从其他文件中导入JavaScript模块。

import React from "react" 

只要使用importmap-rails,就会很便利。

如果使用importmap-rails,就不再需要编写那样的script标签。首先,在config/importmap.rb文件中写入以下内容。

pin "react", to: "https://ga.jspm.io/npm:react@17.0.2/index.js"

然后,只需要在application.html.erb中的标签内写入<%= javascript_importmap_tags %>。

<!DOCTYPE html>
<html>
  <head>
    ...
    <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
    <%= javascript_importmap_tags %>
  </head>
  <body>
    <%= yield %>
  </body>
</html>

只需这样,就可以在Rails上的JavaScript文件中导入React。

使用importmap-rails带来的变化(引用)

使用importmap-rails会带来以下变化。

    • 複数のJavaScriptファイルを1つのファイルにまとめる必要がなくなる(bundling不要)

 

    1モジュール変更したら、そのモジュールのキャッシュだけ期限切れにできる

关于第一个,由于浏览器的导入功能会自动获取所依赖的模块,因此不再需要对JavaScript进行捆绑。

第二个原因是由于不再需要捆绑而产生的效果。只需将发生变化的一个模块发送到浏览器即可,因此减少了资源的传输量。

总结

我写了关于Importmap-rails是什么以及使用它会带来的变化的内容。

由于在Rails 7之前并不存在类似于importmap-rails的东西,并且我一直对此很感兴趣,于是我进行了一番调查并撰写了一篇文章。在调查过程中,我发现使用importmap-rails可以避免进行JavaScript的打包工作,这是一个很不错的发现。能够减少不必要的工作总是令人高兴的。

今后,我们将实际尝试使用importmap-rails,并积累经验教训。

bannerAds