【问题标题】:Async JavaScript in production environment only?仅在生产环境中使用异步 JavaScript?
【发布时间】:2014-12-09 02:59:05
【问题描述】:

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

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

= javascript_include_tag "mio", :async => true

在生产中按预期工作:

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

但是,在开发过程中,这些文件都是独立的,并且会乱序执行。例如,我的 Angular 报价表单控制器在 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 标志,但在生产中不行吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我猜还不错吧!
    • Rails.env.production? 更地道
    猜你喜欢
    • 2015-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2013-08-15
    • 2013-08-24
    相关资源
    最近更新 更多