Ilya Grigorik建议在可能的情况下使用<script async>标记。

是否有一种干净,首选的方式使用标签加载Angular.js应用程序,而不使用诸如angular.seed推荐的require.js或$ script.js工具之类的方法?

明显的问题是执行顺序。例如预防:

Uncaught ReferenceError: angular is not defined

https://www.igvita.com/2014/05/20/script-injected-async-scripts-considered-harmful/

最佳答案

如果有一些有用的内容可以显示而无需显示 Angular (例如,使用无头浏览器生成的预先生成的内容),并且脚本依赖于此,则仅此一种,那么可以找到一个解决方案:

  • 使用angular.js加载async
  • 将代码封装在函数体内
  • 添加一个循环,检查是否定义了angular
  • ,如果不是
  • ,则睡眠几毫秒
  • 否则,执行代码并脱离循环

  • 这种繁忙的等待很丑陋,但是我看不到如何在加载完成时回叫。它可能行不通,我还没有尝试过。

    我很可能除了框架所做的原始版本外什么也不做。

    如果不需要它在all browsers中工作,则有defer标记。对我而言,defer看起来像正确完成的async

    1因此,我猜想angular-route.js或类似的用户很不走运。这只是一个猜测,因为我从未尝试过按顺序加载两者。

    09-20 18:43