【发布时间】:2025-11-30 21:35:01
【问题描述】:
我的网站有一个交互式标题,位于 /views/layouts/_header.html.haml。
我希望将标头的所有 JavaScript 收集到一个文件中。最重要的是,我将 Twitter Typeahead 和 Bloodhound 用于带有自动建议的搜索字段。很多 JavaScript 必须在标头呈现后运行,因此它包含在 application.js 中(包含在我的 application.html.haml 页面中)不起作用,因为它在标头呈现之前运行。
我在 /assets/javascripts/ 下添加了 search-bar.js,其中包含我需要在此页面上运行的所有 JS。
在我的 _header.html.haml 的底部,我只是链接了一个常规脚本标签。
%script{src:"/assets/movie-search-bar.js", type:'text/javascript'}
这在本地运行良好,但在我的开发服务器上,我得到了该资产的 404。是否可能出于性能原因丢弃静态文件?即使它确实有效,通过将其包含在资产管道中,脚本不会被加载两次(一次作为单个脚本,一次在 application.js 中)?
我的印象是,这不是将部分的 javascript 隔离到自己的文件中的最佳方法。确保脚本在 _header 渲染后加载一次并在其自己的 JavaScript 文件中隔离的最佳和最“可靠”的方法是什么?
编辑:这可能就像将以下几行移动到我的页脚部分底部一样简单吗?这在 Rails 中被认为是好的做法吗?
#{ stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true }
#{ javascript_include_tag 'application', 'data-turbolinks-track' => true }
【问题讨论】:
-
我的回答对您有帮助吗?
标签: javascript html ruby-on-rails asset-pipeline haml