javascript - 在 Angular.js 中使用 <script async> 标签

标签 javascript performance angularjs asynchronous

Ilya Grigorik 建议使用 <script async>尽可能标记。

是否有一种干净、首选的方式来使用标签加载 Angular.js 应用程序,而不使用像 require.js 或 angular-seed 推荐的 $script.js 工具这样的工具?

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

Uncaught ReferenceError: angular is not defined

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

最佳答案

如果有一些有用的东西可以在没 Angular 情况下显示(例如,使用 headless 浏览器预生成的内容)并且您的脚本只依赖于它1,那么可以有一个解决方案:

  • 使用async加载angular.js
  • 将您的代码封装在函数体中
  • 添加一个循环检查是否定义了 angular
    • 如果没有就睡几毫秒
    • 否则,执行你的代码并跳出循环

这种忙碌的等待很丑陋,但我看不到加载完成后如何回调。它可能有效或无效,我还没有尝试过。

很可能我只是在做框架所做的原始版本。

如果您不需要它在 all browsers 中工作,然后是 defer 标签。对我来说,defer 看起来像 async 做对了。


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

关于javascript - 在 Angular.js 中使用 &lt;script async> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813931/

相关文章:

javascript - 如何从 PHP 服务器动态加载 PDF?

Java GC 开销 : Does it matter if you have 10mb or 10gb of *referenced* objects?

sql-server - 首次应用程序启动时打开与 SQL Server 的连接速度太慢

javascript - UI-Router AngularJS Controller 无法处理状态

javascript - 在 ng-repeat 中显示带空格的键名

javascript - 如何在 JQuery Datepicker 中用多种颜色突出显示某些特定日期

javascript - 如何使用 JSON 数据实现 Google Charts 的样式或属性?

python - Pandas idxmax : return all rows in case of ties

angularjs - Grunt 错误找不到模块 'win-spawn'

javascript - Google Apps 脚本库和脚本分发