仅在生产环境中使用异步JavaScript?

时间:2014-12-08 18:14:32

标签: ruby-on-rails ruby-on-rails-4 sprockets

我正在尝试让我的JavaScript(Angular应用程序)异步加载,以便在浏览器稍后下载JavaScript时页面可以呈现加载图像。在生产中,这很好,但不是在开发中,因为Sprockets还没有将所有文件连接起来。

我在HAML文件中使用以下内容:

= javascript_include_tag "mio", :async => true

在生产中按预期工作:

<script async="async" src="/assets/mio.js"></script>

但是,在开发过程中,文件都是独立的,并且不按顺序执行。例如,我的Angular Quote Form Controller在Angular完成加载之前正在执行:

<script async="async" src="/assets/angular.js?body=1"></script>
<script async="async" src="/assets/mio.js?body=1"></script>
<script async="async" src="/assets/mio-ng/controllers/quote_form.js?body=1"></script>

所以问题是,javascript_include_tag在开发时是否可以忽略async标志,而不是在生产中?

1 个答案:

答案 0 :(得分:6)

我找到了一种方法来解决这个问题,但我认为这不是最好的解决方案:

= javascript_include_tag "application", :async => Rails.env == "production"