4

使用的 Javascripts 但谷歌页面速度洞察显示它没有被使用。无论如何我可以删除它。在这里,我分享 PageSpeedInsight 报告的屏幕截图。

全球定位系统

在上面的屏幕截图中,您可以看到 8 个 js 文件未被使用。但它正在我的应用程序上使用。

4

2 回答 2

4

您可以在滚动时加载脚本文件。当用户开始向下滚动时,您将脚本标记附加到您的头部并再次删除事件侦听器。

仅在开头添加不在视口中的脚本,例如 recaptchas。通常在底部。

function dynamicLoad(url) {
  var script = document.createElement("script");
  script.type = "text/javascript";
  script.src = url;
  document.getElementsByTagName("head")[0].appendChild(script);
}
window.addEventListener("scroll", loadScripts);

function loadScripts() {
  //load here as many dynamic scripts as you want
  dynamicLoad("recaptcha url");
  dynamicLoad("facebook.net url");
  //end ------
  window.removeEventListener("scroll", loadScripts);
}
于 2020-08-18T06:20:54.640 回答
4

注意:这个答案是由于混淆。OP 没有使用 React,但报告中包含了 React 示例。无论如何,这可能对其他人有帮助。

如果您的组件是动态加载的(仅在用户请求之后)。

您可以React.lazy()按照报告中的建议使用代码拆分,以便在不需要时不加载大包。

此解决方案适用于非 SSR。

前:

import ComponentB from './ComponentB';

function ComponentA() {
  return (
    <>
        {/* After certain action probably like routes switch or any? */}
        <ComponentB />
    </>
  );
}

后:

import React, { lazy } from 'react';
const ComponentB = lazy(() => import("./ComponentB.js"));

function ComponentA() {
  return (
    <>
        {/* After certain action probably like routes switch or any? */}
        <ComponentB />
    </>
  );
}

参考:https ://reactjs.org/docs/code-splitting.html

于 2020-08-18T06:05:30.983 回答