揭秘 NextJS Script 组件

news2025/7/27 5:30:23

在这里插入图片描述

揭秘 NextJS Script 组件

Next.jsScript 组件是对原生 <script> 标签的增强封装,主要区别和优势如下:

  1. 自动优化加载策略(支持按需/延迟加载)
  2. 避免重复加载
  3. 内置性能优化(如预加载、回调钩子)
  4. 简化第三方脚本集成

src

指定外部脚本的 URL 的路径字符串

<Script src="https://www.google-analytics.com/analytics.js"/>

strategy

该属性用于控制脚本的加载策略,他有以下几种属性

afterInteractive

strategy 属性的默认值为:afterInteractive,表示在页面渲染成功后加载的脚本

<Script 
  src="https://www.google-analytics.com/analytics.js" 
  strategy="afterInteractive"
/>

beforeInteractive

在页面渲染成功前加载的脚本

lazyOnload

在页面渲染成功且所有脚本加载完成后触发

onLoad

当引入了第三方资源时,我们想在资源加载完毕后执行某些操作时,可以使用 onLoad 回调。它只会触发一次

<Script
    src="https://maps.googleapis.com/maps/api/js"
    onLoad={() => console.log("onLoad")}
/>

onReady

onReadyonLoad 类似,不同的是它会在每次路由切换时触发,而 onLoad 只会触发一次

<Script
    src="https://maps.googleapis.com/maps/api/js"
    onReady={() => console.log("onReady")}
/>

代码示例:

下面是一段示例演示两者的区别,首先会进入到 /aaa 页面,随后跳转到 /bbb 页面,此时两个页面的 onLoadonReady 都会被触发。在后续两个页面再进行跳转时,就只会触发 onReady

app/aaa/page.tsx

"use client"

import Link from "next/link"
import Script from "next/script"

export default () => {
  return (
    <>
      <h1>AAA</h1>

      <Script
        src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"
        onLoad={() => console.log("onLoad AAA")}
        onReady={() => console.log("onReady AAA")}
      />

      <Link href="/bbb">Go to BBB</Link>
    </>
  )
}

app/bbb/page.tsx

"use client"

import Link from "next/link"
import Script from "next/script"

export default () => {
  return (
    <>
      <h1>BBB</h1>

      <Script
        src="https://maps.googleapis.com/maps/api/js"
        onLoad={() => console.log("onLoad BBB")}
        onReady={() => console.log("onReady BBB")}
      />

      <Link href="/aaa">Go to AAA</Link>
    </>
  )
}

控制台输出结果:

访问 /aaa
onLoad AAA
onReady AAA

访问 /bbb
onLoad BBB
onReady BBB

跳转到 /aaa
onReady AAA
跳转到 /bbb
onReady BBB

onError

在引入第三方资源加载失败时候触发 onError 回调

<Script
    src="https://example.com/script.js"
    onError={(e: Error) => {
      console.error('Script failed to load', e)
    }}
/>

,比例 「4:3」帮我生成一个文章封面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2397289.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++/Linux】TinyWebServer前置知识之IP协议详解

目录 IPv4地址 分类 IP数据报分片 IP 协议在传输数据报时&#xff0c;将数据报分为若干分片&#xff08;小数据报&#xff09;后进行传输&#xff0c;并在目的系统中进行重组&#xff0c;这一过程称为分片&#xff08;Fragmentation&#xff09;。 IP模块工作流程​编辑 I…

Codeforces Round 1028 (Div. 2)(A-D)

题面链接&#xff1a;Dashboard - Codeforces Round 1028 (Div. 2) - Codeforces A. Gellyfish and Tricolor Pansy 思路 要知道骑士如果没了那么这个人就失去了攻击手段&#xff0c;贪心的来说我们只需要攻击血量少的即可&#xff0c;那么取min比较一下即可 代码 void so…

记录一个梦,借助大语言模型图片生成

梦见家门口有一条大河&#xff0c;但大河和其它景物都是灰暗没有鲜艳色彩很普通的梦中场景。大河似乎是长江的支流&#xff0c;但也可能有一个响亮的名字似乎是金沙江。 突然看到一条金红色的龙在快速游动&#xff0c;不敢相信自己的眼睛&#xff0c;因为一直不相信有这种生物…

android binder(二)应用层编程实例

一、binder驱动浅析 从上图看出&#xff0c;binder的通讯主要涉及三个步骤。 在 Binder Server 端定义好服务&#xff0c;然后向 ServiceManager 注册服务在 Binder Client 中向 ServiceManager 获取到服务发起远程调用&#xff0c;调用 Binder Server 中定义好的服务 整个流…

【深度学习】17. 深度生成模型:DCGAN与Wasserstein GAN公式深度推导

深度生成模型:DCGAN与Wasserstein GAN公式深度推导 深度卷积生成对抗网络 DCGAN 在原始 GAN 框架中&#xff0c;生成器和判别器通常使用全连接层构建&#xff0c;这限制了模型处理图像的能力。为此&#xff0c;Radford 等人在 2016 年提出了 DCGAN&#xff08;Deep Convoluti…

设计模式——命令设计模式(行为型)

摘要 本文介绍了命令设计模式&#xff0c;这是一种行为型设计模式&#xff0c;用于将请求封装为对象&#xff0c;实现请求的解耦和灵活控制。它包含命令接口、具体命令、接收者、调用者和客户端等角色&#xff0c;优点是解耦请求发送者与接收者&#xff0c;支持命令的排队、记…

03 APP 自动化-定位元素工具元素定位

文章目录 一、Appium常用元素定位工具1、U IAutomator View Android SDK 自带的定位工具2、Appium Desktop Inspector3、Weditor安装&#xff1a;Weditor工具的使用 4、uiautodev通过定位工具获取app页面元素有哪些属性 二、app 元素定位方法 一、Appium常用元素定位工具 1、U…

PABD 2025:大数据与智慧城市管理的融合之道

会议简介 2025年公共管理与大数据国际会议&#xff08;ICPMBD 2025&#xff09;确实在海口举办。本次会议将围绕公共管理与大数据的深度融合、数据分析在公共管理中的应用、大数据驱动的政策制定与优化等议题展开深入研讨。参会者将有机会聆听前沿学术报告&#xff0c;分享研究…

Golang持续集成与自动化测试和部署

概述 Golang是一门性能优异的静态类型语言&#xff0c;但因其奇快的编译速度&#xff0c;结合DevOps, 使得它也非常适合快速开发和迭代。 本文讲述如何使用Golang, 进行持续集成与自动化测试和部署。主要使用了以下相关技术&#xff1a; dep&#xff1a; 进行包的依赖管理gin…

mysql离线安装教程

1.下载地址: https://downloads.mysql.com/archives/community/ 2.上传安装包到系统目录,并解压 tar -xvf mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar3.检查系统中是否存在mariadb的rpm包 rpm -qa|grep mariadb存在则删除 rpm -e xxx4.解压完后执行如下命令安装 sudo rpm -iv…

基于FPGA的VGA显示文字和动态数字基础例程,进而动态显示数据,类似温湿度等

基于FPGA的VGA显示文字和数字 前言一、VGA显示参数二、字模生成三、代码分析1.vga_char顶层2.vga_ctrl驱动文件3.vga_pic数据准备文件 总结 前言 结合正点原子以及野火的基础例程&#xff0c;理解了VGA本身基本协议&#xff0c;VGA本身显示像素为640*480&#xff0c;因此注意生…

力扣刷题Day 68:搜索插入位置(35)

1.题目描述 2.思路 方法1&#xff1a;回溯的二分查找。 方法2&#xff1a;看到了一个佬很简洁的写法&#xff0c;代码贴在下面了。 3.代码&#xff08;Python3&#xff09; 方法1&#xff1a; class Solution:def searchInsert(self, nums: List[int], target: int) ->…

使用Python绘制节日祝福——以端午节和儿童节为例

端午节 端午节总算是回家了&#xff0c;感觉时间过得真快&#xff0c;马上就毕业了&#xff0c;用Python弄了一个端午节元素的界面&#xff0c;虽然有点不像&#xff0c;祝大家端午安康。端午节粽子&#xff08;python&#xff09;_python画粽子-CSDN博客https://blog.csdn.net…

C#项目07-二维数组的随机创建

实现需求 创建二维数组&#xff0c;数组的列和宽为随机&#xff0c;数组内的数也是随机 知识点 1、Random类 Public Random rd new Random(); int Num_Int rd.Next(1, 100);2、数组上下限。 //定义数组 int[] G_Array new int[1,2,3,4];//一维数组 int[,] G_Array_T …

光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)

光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测 目录 光伏功率预测 | MATLAB实现基于LSTM长短期记忆神经网络的光伏功率预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 光伏功率预测 | LSTM多变量单步光伏功率预测&#xff08;Matlab完整源码和…

一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——3. 服务器软件更新,以及常用软件安装

前言 前面&#xff0c;我们已经 安装好了 Ubuntu 服务器系统&#xff0c;并且 配置好了 ssh 免密登录服务器 &#xff0c;现在&#xff0c;我们要来进一步的设置服务器。 那么&#xff0c;本文&#xff0c;就是进行服务器的系统更新&#xff0c;以及常用软件的安装 调整 Ubu…

PyTorch 入门学习笔记

一、简介 PyTorch 是由 Meta&#xff08;原 Facebook&#xff09; 开源的深度学习框架。其前身 Torch 是一个基于 LuaJIT 的科学计算框架&#xff0c;核心功能是提供高效的张量&#xff08;Tensor&#xff09;操作和神经网络支持。由于 Lua 语言的生态限制&#xff0c;Torch 逐…

pycharm生成图片

文章目录 图片例子生成图片并储存&#xff0c;设置中文字体支持两条线绘制散点图和直方图绘制条形图&#xff08;bar&#xff09;绘制条形图&#xff08;横着的&#xff09;&#xff08;plt.barh&#xff09;分组的条形图 颜色和线条风格1. **颜色字符 (color)**其他颜色指定方…

Android 云手机横屏模式下真机键盘遮挡输入框问题处理

一、背景 打开横屏应用,点击云机EditText输入框,输入框被键盘遮挡,如下图&#xff1a; 未打开键盘状态: 点击第二个输入框,键盘遮挡了输入框&#xff1a; 二、解决方案&#xff08;推荐第三中方案,博主采用的也是第三种方案&#xff09; 博主这里整理了三种方案&#xff1a;…

Axure设计案例——科技感对比柱状图

想让数据对比展示摆脱平淡无奇&#xff0c;瞬间抓住观众的眼球吗&#xff1f;那就来看看这个Axure设计的科技感对比柱状图案例&#xff01;科技感设计风格运用独特元素打破传统对比柱状图的常规&#xff0c;营造出一种极具冲击力的视觉氛围。每一组柱状体都仿佛是科技战场上的士…