如果把 JavaScript 分为两部分,一部分是在渲染初始页面必须的,剩下的作为另外一部分,可以在初始化的时候只加载必要的 JavaScript,其余的 JavaScript 稍后再加载。
这就会遇到一些问题:
JavaScript 以行内脚本或外部脚本的形式包含在网页中,外部脚本通过 script 的 src 属性把独立文件中的 JavaScript 引入,src 定义了需要加载的外部文件的 URL,如果缓存中有脚本文件,浏览器就从缓存中读取,否则就发送 HTTP 请求获取。
当浏览器开始下载外部脚本时,在脚本下载、解析并执行完毕之前,不会开始下载任何内容,任何已经在进程中的下载都不会被阻塞。
浏览器在下载和执行脚本时出现阻塞的原因在于,脚本可能改变页面或 JavaScript 的命名空间,它们会对后续内容造成影响。
很显然,脚本是需要按顺序执行的,但是没必要按顺序下载,在脚本下载和执行完成之前还会阻塞图片和 iframe 的下载。