引入外部js脚本加载慢与页面白屏问题的解决

在网页中引入外部的 JS 脚本可以加快页面开发、优化内容并实现各种功能。但是,如果代码存在错误或者脚本过大,会导致用户访问页面速度变慢,甚至出现页面白屏的情况。以下是解决外部 JS 加载慢与页面白屏问题的方法:

1. 在页面底部引入 JS 文件

将 JavaScript 代码放在 HTML 页面底部,这种方法可以减少阻止渲染的代码数量,从而改善页面加载速度。当我们在页面头部引入 JS 文件时,浏览器会在执行 JavaScript 之前,先将所有文件下载完毕,在解析文档之后再执行 JavaScript,因此会增加用户等待页面加载完成的时间。而当我们在页面底部引入 JS 文件时,页面先加载 HTML 和 CSS,所以用户会首先看到页面的结构和样式。当 DOM 结构加载完成后,JavaScript 文件将被加载和执行,这样就可以最大化地减少页面加载时间。

以下是代码示例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Example</title>
    <!-- 引入 CSS -->
    <link href="./style.css" rel="stylesheet" />
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是段落文本。</p>

    <!-- 引入 JS -->
    <script src="./main.js"></script>
</body>
</html>

2. 设置 defer 和 async 属性

在引入外部 JS 文件时,可以使用 defer 和 async 属性。这两个属性指定脚本在何时加载和执行。

  • defer 属性:脚本文件下载过程中不会阻塞页面渲染和DOM树构建,只有在 HTML 解析完成后才会执行这个脚本文件。如果有多个设置了defer属性的脚本文件,则它们的执行顺序是按照它们被加载的顺序执行的。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example</title>
    <script defer src="./main.js"></script>
</head>
<body>
    <h1>这是一个标题</h1>
    <!-- 这里省略部分内容 -->
</body>
</html>
  • async 属性:下载过程中和页面的其他操作进行并行处理,不会阻塞页面渲染,但是不能保证多个 async 脚本之间的执行顺序。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Example</title>
    <script async src="./main.js"></script>
</head>
<body>
    <h1>这是一个标题</h1>
    <!-- 这里省略部分内容 -->
</body>
</html>

这两个属性都可以帮助我们优化页面性能,但是它们所适用的场景是不同的。如果我们需要保证脚本的执行顺序,我们应该使用 defer 属性;如果我们不需要保证执行顺序,我们应该使用 async 属性。

以上是“引入外部js脚本加载慢与页面白屏问题的解决”的攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:引入外部js脚本加载慢与页面白屏问题的解决 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装)

    Win11 Build 22454.1000 开发者预览版发布(附更新修改已知问题+安装) 微软公司近日发布了 Win11 Build 22454.1000 开发者预览版,主要针对开发者和技术爱好者提供了一些更新和优化,下面是该版本的安装和使用攻略。 更新和修改已知问题 Win11 Build 22454.1000 改进如下: 桌面右键菜单重新设计,支持自定…

    other 2023年6月26日
    00
  • less的基本用法

    以下是关于“less的基本用法”的完整攻略,过程中包含两个示例。 背景 less是一种Linux/Unix系统下的分页查看器,它可以用于查看文本文件的内容。与cat命令不同,less可以将文本分页显示,方便用户查看大型文本文件。在Linux/Unix系统中,less是一种常常用的工具。 基本用法 在Linux/Unix系统中,使用less非常简单。具体步骤如…

    other 2023年5月9日
    00
  • dev控件之chartcontrol用法

    以下是详细讲解“Dev控件之ChartControl用法的完整攻略”的标准Markdown格式文本: Dev控件之ChartControl用法的完整攻略 ChartControl是DevExpress公司开发的一种图表控件,可以于在Windows应用程序中创建各种类型的图表。本文将介绍ChartControl的基本概念、使用方法和两个示例说明。 1. Cha…

    other 2023年5月10日
    00
  • 基于Spring Boot的线程池监控问题及解决方案

    基于Spring Boot的线程池监控问题及解决方案 问题描述 在使用Spring Boot开发项目时,使用线程池是很常见的一种方式,但是如何对线程池的运行状况进行有效的监控,是一个比较重要的问题。本文将介绍如何利用Spring Boot自带的监控工具,进行线程池的监控和问题排查。 解决方案 Spring Boot提供了一个叫做Spring Boot Act…

    other 2023年6月26日
    00
  • C++中#pragma once与#ifndef对比分析

    关于C++中 #pragma once 与 #ifndef 的对比分析可以从以下几个方面入手: 一、两者相同点 在讨论两者的区别之前,需要先谈一下两者的相同点: 1)都是编译预处理指令,用于解决头文件被重复包含的问题。 2)都是编译器依据预处理指令定义的条件,来判断是否需要编译当前文件。 二、 #ifndef 的使用及特点 头文件常常用 #ifndef/de…

    other 2023年6月26日
    00
  • html+css实现赛博朋克风格按钮

    HTML+CSS实现赛博朋克风格按钮攻略 1. 创建HTML结构 首先,我们需要在HTML中创建所需的按钮结构。可以使用 <button> 或 <a> 标签作为按钮,这取决于你的需求。下面是一个示例: <button class="cyberpunk-button">按钮文本</button&gt…

    other 2023年6月28日
    00
  • Vue封装svg-icon组件使用教程

    下面是Vue封装svg-icon组件使用教程,包括: 前置知识点 svg文件的处理 封装svg-icon组件 使用封装的svg-icon组件 示例说明 总结 1. 前置知识点 在使用本文中的技术栈之前,需要掌握以下知识: Vue.js基础知识 webpack基础知识 ES6基础语法 2. svg文件的处理 在使用svg文件之前,需要进行一些处理: 将svg文…

    other 2023年6月25日
    00
  • C语言菜鸟基础教程之for循环

    “C语言菜鸟基础教程之for循环”是一个针对C语言初学者的入门教程,通过介绍for循环的基础知识和常见应用,帮助读者理解for循环的使用方法。下面我们逐一讲解: 1. for循环的基本语法 for循环是C语言中最常用的循环结构之一,其语法格式如下: for (循环变量初始化; 循环条件判断; 循环变量更新) { // 要执行的语句块 } 其中: 循环变量初始…

    other 2023年6月27日
    00
合作推广
合作推广
分享本页
返回顶部