使用此代码:
<%= javascript_include_tag 'execute_asap' %>
我可以包含一个链接到 execute_asap.js
的脚本.
但是,为了尽快真正执行该脚本,脚本的内容应该出现在 HTML 文档本身中,这样客户端就不必发出额外的 HTTP 请求来获取 javascript。
有什么方法可以实现这一点,同时仍然获得 Assets 管道和 list 文件的好处?
我的用例是我使用 javascript 延迟加载图像,并且我想尽快开始图像加载。
最佳答案
我做了类似的事情,但是使用了 css 文件。我最终在 helper/application_helper.rb
中为其创建了一个自己的方法。因此,我寻找已编译的资源并将其缩小并返回 html_safe
。
def inline_css
return Rails.application.assets.find_asset('application').to_s unless Rails.env.production?
File.read([Rails.root,
'public',
'assets',
Rails.application.assets_manifest.files.select { |k, v| k if v['logical_path'] == 'application.css' }
.sort_by{|k,v| v['mtime']}.last.first].join('/').to_s)
.gsub(/\r\n|\r|\n|/, '')
end
<style><%= inline_css.html_safe %></style>
这不是最漂亮的解决方案,但对我有用。
关于javascript - 将 Assets 管道处理的 javascript 文件的内容插入 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60467320/