共计 815 个字符,预计需要花费 3 分钟才能阅读完成。
看上面这段代码:
在原始的 platformBrowserDynamic().bootstrapModule(AppModule)
调用之前,削减了一个 if 判断条件。
if (document.readyState === 'complete') {bootstrap();
}
这行代码的含意是在 Angular 利用中查看以后文档是否曾经齐全加载,并在文档加载实现后执行 bootstrap 函数来启动 Angular 利用。
document.readyState 属性返回以后文档的加载状态,它有以下三个值:
- loading:文档正在加载中;
- interactive:文档曾经实现了解析,但仍在加载子资源,例如图片和样式表等;
- complete:文档和所有子资源曾经实现加载。
因而,当 document.readyState 的值为 complete 时,示意文档和所有子资源曾经加载实现,此时能够平安地启动 Angular 利用。
在 Angular 利用中,通常应用该代码片段来确保 Angular 利用在文档加载实现后启动。这样能够防止在文档未加载齐全时就启动 Angular 利用,从而防止因为文档未加载实现而导致的各种问题。
在 Angular 利用的 main.ts 文件中,某些函数调用只有在 document.readyState 的值变成 complete 之后才执行,是为了确保在文档加载齐全后才启动 Angular 利用。
当浏览器加载一个 HTML 页面时,它会依照文档的程序逐渐解析和渲染 HTML 标签和 CSS 款式等资源,如果在文档还未齐全加载实现时就启动 Angular 利用,可能会导致利用呈现意料之外的行为,例如页面款式错乱、资源加载失败、路由未正确初始化等问题。
为了防止这些问题,Angular 利用在启动之前通常会查看 document.readyState 的值是否为 complete,只有在文档加载实现后才会启动 Angular 利用,从而确保利用启动时文档曾经齐全加载结束,保障利用失常运行。