我已经成功使用资产管道几个月了。现在我想异步加载我的一些 JS 文件(使用 yepnope 库)。当config.assets.debug
is时效果很好false
。
但是在开发模式下(config.assets.debug
通常是true
),对我来说最好的选择是动态获取清单中包含的所有 js 文件的列表(我有 2 个清单:application.js 和 externals.js),以将它们提供给 yepnope异步加载。
有什么想法吗?
我已经成功使用资产管道几个月了。现在我想异步加载我的一些 JS 文件(使用 yepnope 库)。当config.assets.debug
is时效果很好false
。
但是在开发模式下(config.assets.debug
通常是true
),对我来说最好的选择是动态获取清单中包含的所有 js 文件的列表(我有 2 个清单:application.js 和 externals.js),以将它们提供给 yepnope异步加载。
有什么想法吗?
终于找到了答案,我创建了这个助手(阅读这篇文章了解如何在资产编译期间声明助手方法可见)
# given a list of Sprockets manifests, returns a flattened array of dependency paths
def paths_for_manifests(manifests = [])
manifests.map do |manifest|
Rails.application.assets[manifest].dependencies.map{|d| "/assets/#{d.logical_path}"}
end.flatten
end
我像这样使用它(来自 JS / CoffeeScript 文件):
paths = <%= paths_for_manifests(%w(externals.js application.js)) %>