是否可以在 Rails 6 中使用 .js.erb 文件?
Is it possible to use .js.erb file in Rails 6?
我在 app/javascripts/custom/test.js.erb
中有以下内容
export function test(){
alert('<%= 5 %>');
}
但是 ERB 没有解释。
是否可以在 Rails 6 中像这样使用 js.erb?
这是可能的,但您需要确保您的文件包含在资产管道中并且已加载到您的视图中。
我在 Rails 6.1 上测试了以下示例:
# in config/initializers/assets.rb
Rails.application.config.assets.precompile += %w[application.js]
# in app/views/layouts/application.html.erb
<%= javascript_include_tag 'application' %>
# in app/assets/javascripts/application.js
//= require_tree .
# in app/assets/javascripts/test.js.erb
alert('<%= 5 %>');
你也可以在 webpacker 中使用 js.erb
,你需要安装一个新的包 rails-erb-loader
并且还需要配置 webpack 加载器。
不过不用担心,webpacker 提供了内置的 rake 命令来安装所需的包和配置 webpack 加载器。
使用:
bundle exec rails webpacker:install:erb
现在只需将 app/javascripts/custom/test.js.erb
导入到 app/javascript/packs/application.js
(打包入口点文件)。一切就绪!
// app/javascript/packs/application.js
import Rails from "@rails/ujs"
import Turbolinks from "turbolinks"
import * as ActiveStorage from "@rails/activestorage"
import "channels"
Rails.start()
Turbolinks.start()
ActiveStorage.start()
import '../custom/test.js.erb';
参考文档:https://github.com/rails/webpacker/blob/v5.4.3/docs/integrations.md#erb
我在 app/javascripts/custom/test.js.erb
中有以下内容export function test(){
alert('<%= 5 %>');
}
但是 ERB 没有解释。
是否可以在 Rails 6 中像这样使用 js.erb?
这是可能的,但您需要确保您的文件包含在资产管道中并且已加载到您的视图中。
我在 Rails 6.1 上测试了以下示例:
# in config/initializers/assets.rb
Rails.application.config.assets.precompile += %w[application.js]
# in app/views/layouts/application.html.erb
<%= javascript_include_tag 'application' %>
# in app/assets/javascripts/application.js
//= require_tree .
# in app/assets/javascripts/test.js.erb
alert('<%= 5 %>');
你也可以在 webpacker 中使用 js.erb
,你需要安装一个新的包 rails-erb-loader
并且还需要配置 webpack 加载器。
不过不用担心,webpacker 提供了内置的 rake 命令来安装所需的包和配置 webpack 加载器。
使用:
bundle exec rails webpacker:install:erb
现在只需将 app/javascripts/custom/test.js.erb
导入到 app/javascript/packs/application.js
(打包入口点文件)。一切就绪!
// app/javascript/packs/application.js
import Rails from "@rails/ujs"
import Turbolinks from "turbolinks"
import * as ActiveStorage from "@rails/activestorage"
import "channels"
Rails.start()
Turbolinks.start()
ActiveStorage.start()
import '../custom/test.js.erb';
参考文档:https://github.com/rails/webpacker/blob/v5.4.3/docs/integrations.md#erb