(注意:下面的大部分内容是在您费心告诉我们您在移动浏览器中本地运行 HTML 文件而不使用 Web 服务器之前编写的。其中大部分仍然适用,有些则不适用,但我我把它留给其他真正做网页的人。)
1)有没有一种方法可以在页面第一次加载后将 .js 文件注入 HTML 中?
是的,这实际上非常简单(现场示例:运行/编辑):
var script = document.createElement('script');
script.src = "path/to/the/file.js";
document.body.appendChild(script);
请注意,脚本将异步加载(您不能只假设它是在appendChild
调用之后加载的)。
但是,如果您的目标只是在 27MB 文件下载时显示页面,您可以将script
标签放在页面末尾,就在结束</body>
标签之前。更新:如果您运行的是本地 HTML 文件,而不是网页,我想这就是您所需要的:页面末尾的单个脚本标记加载您的 27MB .js 文件。
2) 在网页中包含如此大的 JavaScript 内容的最佳解决方案是什么?
理想情况下,尽可能减小尺寸。如果您可以按需加载资产(使用上述技术或ajax),请改为这样做。更新:如果您运行的是本地文件,而不是网页,则基本上无法可靠地执行 ajax。但是您可以在需要时通过script
按上述添加元素来按需加载所需的内容。
关于您的 27 个 1MB .js 文件:如果您script
对它们的标签进行硬编码,则制作一个 27MB 文件比制作 27 个 1MB 文件要好得多。最小化对服务器的 HTTP 请求(理想情况下最多一个 .js 文件和一个 .css 文件)是提高页面加载时间的关键方法之一。但是,在您的情况下,您已经说过在单击各种内容之前不需要各个部分,因此您最终可能会得到一个主文件(希望它比 27MB 小很多),然后是一堆您需要根据需要加载的其他内容(根据上述内容)。
您可以做的其他事情:
- 缩小、压缩或“编译”您的 .js 文件(这意味着您将拥有单独的“源”和“生产”文件,因为通常这是一个删除注释等的单向过程)
- 确保您的服务器使用 gzip 压缩提供 .js 文件(例如,对于 Apache,您将使用mod_deflate);您可以测试它是否可以使用各种 工具
也非常值得一读:加快网站速度的最佳实践,这使得上面的观点和一大堆更多。