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 中使用 <script async> 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23813931/