将资产管道处理的javascript文件的内容插入HTML

问题描述 投票:0回答:1

使用此代码:

<%= javascript_include_tag 'execute_asap' %>

我可以包含链接到execute_asap.js的脚本。

但是,要尽快真正执行此脚本,脚本的内容应出现在HTML文档本身中,这样客户端就不必发出额外的HTTP请求来获取javascript。

在获得资产管道和清单文件的好处的同时,有什么方法可以做到这一点?

我的用例是,我使用JavaScript延迟加载图像,并且希望尽快开始图像加载。

javascript ruby-on-rails lazy-loading
1个回答
0
投票

我做了类似的事情,但是有一个css文件。我最终在helper/application_helper.rb中为此创建了自己的方法。因此,我寻找编译后的资产并将其缩小并返回html_safe

def inline_css
  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>

这不是最漂亮的解决方案,但是对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.