首页 > 其他分享 >Next.js 深度教程:服务端渲染、静态生成到增量静态再生 | 2024最新版

Next.js 深度教程:服务端渲染、静态生成到增量静态再生 | 2024最新版

时间:2024-10-17 16:23:15浏览次数:1  
标签:静态 js Next 字体 图像 import 最新版 页面

优化字体和图像

书接上回,我们学习了如何设计Next.js应用程序,让我们继续优化主页和添加自定义字体、图像。

在网站设计中,字体扮演着关键角色,然而,若需获取并加载字体文件,项目中引入自定义字体可能对性能产生影响。

Google 采用累计布局偏移(CLS)作为评估网站性能和用户体验的指标。对于字体而言,布局偏移发生在浏览器先以备用字体或系统字体渲染文本,随后在自定义字体加载完成后进行替换时。这种替换可能导致文本大小、间距或布局的变动,进而影响周围元素的位置。

在使用 Next.js 的next/font模块时,该框架会自动优化应用程序中的字体。具体来说,它会在构建阶段下载字体文件,并将其与您的其他静态资源一同托管。这一过程确保了当用户访问您的应用程序时,不会因额外的字体网络请求而影响性能。

上回的目录结果是这样的,现在我们要在ui目录下面创建一个fonts.ts文件,用于控制字体信息

在fonts.ts上面导入字体模块

返回layout.tsx文件,为了更好的学习,我们把所有默认的内容全部删除掉,留下最简单的内容,将我们的字体模块应用在项目当中

import '@/app/ui/globals.css';
import { inter } from '@/app/ui/fonts';
 
export default function RootLayout({
  children,
}: {
  children: React.ReactNode;
}) {
  return (
    <html lang="en">
      <body className={`${inter.className} antialiased`}>{children}</body>
    </html>
  );
}


访问我们测试环境,使用浏览器的F12功能,点击查看器(Chrome浏览器),其他浏览器可能叫其他名字,查看body,发现我们的字体已经应用到了项目当中。

再回到字体页面page.tsx,我们要创建一个专门用于logo模块的字体,解析这个代码的意思 import { Lusitana } from 'next/font/google';从 Next.js 的 Google Fonts 集成中导入 Lusitana 字体。
weight: ['400', '700']指定了要使用的字体粗细。这里选择了两种粗细:'400' 是常规字重,'700' 是粗体字重。
subsets: ['latin'] 指定了字体的子集。这里选择了 Latin 子集,包含了基本的拉丁字符。

配置好字体之后,我们需要应用在不同的页面模块当中,现在我们需要修改页面的蓝色部分,在这个部分添加一个logo。
创建一个 app/ui/acme-logo.tsx 页面

首先我们要引入一个图标组件,在终端命令行中输入 pnpm install @heroicons/react
写入代码

import { GlobeAltIcon } from '@heroicons/react/24/outline';
import { lusitana } from '@/app/ui/fonts';

export default function AcmeLogo() {
    return (
      <div
        className={`${lusitana.className} flex flex-row items-center leading-none text-white`}
      >
        <GlobeAltIcon className="h-12 w-12 rotate-[15deg]" />
        <p className="text-[44px]">Warp Driver Logo</p>
      </div>
    );
}

pnpm 安装完成之后如果出现这样的错误Cannot find module '@heroicons/react/24/outline' or its corresponding type declarations.ts(2307),可以通过重启ts服务器进行修复。

重启ts服务器的方法,在vscode上方输入 > TypeScript: Restart TS server,点击之后即可重启

接下来我们来到page.tsx页面,将我们的logo模块应用到主页当中

访问我们的测试环境,这里就能看到我们的logo应用到了网页当中

优化图像

Next.js 允许在顶级文件夹 /public 下提供静态资产(如图像)。这些文件可以在您的应用程序中直接引用。例如,在常规 HTML 中,您可以通过以下方式添加图像:

<img
  src="/hero.png"
  alt="Screenshots of the dashboard project showing desktop version"
/>

然而,这要求您手动执行以下操作:
1、确保图像能够适应不同的屏幕尺寸。
2、为不同的设备指定图像大小。
3、防止图像加载时布局发生偏移。
4、延迟加载用户视口之外的图像。
图像优化是 Web 开发中的一个重要主题,本身可以视为一门专业。您可以使用 Next.js的next/image组件自动优化图像,而无需手动实施这些优化。

现在我们需要往页面的右边添加一张图片,首先我们要将图片放在public文件夹当中,默认创建的脚手架是没有这个目录的,因此我们要在跟目录下创建这个文件夹,并且往文件夹里面添加图片

返回我们的page.tsx页面,添加图片依赖<Image>组件 import Image from 'next/image';

然后往我们屏幕的右边栏目增加图片

<Image
    src="/helloo.png"
    width={1000}
    height={760}
    className="hidden md:block"
    alt="Screenshots of the dashboard and invoices page"
/>

刷新页面即可看到图片样子啦,在这里,您要将像素设置为width和1000。最好将图像的和设置为以避免布局偏移,这些应该与源图像的纵横比相同。

如果你想看更多内容或者能够看到技术更新的内容,请百度搜索:曲速引擎 warp drive csdn 在首页找到我的地址访问即可,一线更新内容将会在我的个人博客上面更新,谢谢大家。

更详细内容查看

独立博客 https://www.dataeast.cn/
CSDN博客 https://blog.csdn.net/siberiaWarpDrive
B站视频空间 https://space.bilibili.com/25871614?spm_id_from=333.1007.0.0
关注 “曲速引擎 Warp Drive” 微信公众号

标签:静态,js,Next,字体,图像,import,最新版,页面
From: https://www.cnblogs.com/XiaoH160309/p/18472545

相关文章

  • Next.js 与 Node.js 全栈应用开发:API设计、数据库连接、身份验证 | 2024版
    书接上回,到目前为止,您的应用程序只有一个主页。让我们学习如何使用布局和页面创建更多路线。在本章之中我们需要讨论:dashboard使用文件系统路由创建路由。了解创建新路线段时文件夹和文件的作用。创建可以在多个仪表板页面之间共享的嵌套布局。了解什么是共置、部分渲染和根......
  • 基于ssm+vue.js的二手车交易网站附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍后端框架SSM前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......
  • 新建next.js项目,customize the default import alias是否要自定义默认导入别名(@/*)的选
    使用命令npxcreate-next-app@latest新建项目时,会自定义一些选项,如下图:其中自定义导入别名的选项,选择Yes或No有何区别?Wouldyouliketocustomizethedefaultimportalias(@/*)?...No/Yes一、选择"Yes"jsconfig.js文件的内容是:{"compilerOptions":{......
  • 最新版今日头条独家内部玩法,单号轻松简单日入2张
    今日头条作为流行的新闻和内容平台,为内容创作者提供了一个展示和盈利的机会。本文档详细介绍了利用特定工具在今日头条上进行文章创作的流程和优势。项目背景随着移动互联网的普及,越来越多的用户通过手机应用获取信息。今日头条凭借其算法推荐系统,成为用户获取信息的重......
  • Vue.js 组件开发基本步骤
    Vue.js是一个构建用户界面的渐进式框架,它被设计为能够轻松地被集成进项目的部分功能,或者用于构建完整的前端应用。组件化是Vue.js的核心概念之一,它允许开发者将界面拆分成独立、可复用的组件,每个组件负责应用中的一小部分功能。以下是Vue.js组件开发的一些基本步骤:......
  • 【Next.js 项目实战系列】07-分配 Issue 给用户
    原文链接CSDN的排版/样式可能有问题,去我的博客查看原文系列吧,觉得有用的话,给我的库点个star,关注一下吧 上一篇【Next.js项目实战系列】06-身份验证分配Issue给用户本节代码链接SelectButton​#/app/issues/[id]/AssigneeSelect.tsx"useclient";import{Sel......
  • camtasia2024最新永久免费破解密钥最新版
    ......
  • 基于Node.js+vue钢材销售平台(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于钢材销售平台的研究,现有研究主要以传统销售模式为主,对于利用现代信息技术构建专门的钢材销售平台的研究较少。在国内外,传统钢材销售面临着流程繁琐......
  • 基于Node.js+vue个人理财微服务系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于个人理财微服务系统的研究,现有研究主要集中在传统理财系统的整体架构和功能实现上。在国内外,传统理财系统已经有了较为成熟的开发模式和功能模块,但......
  • 基于Node.js+vue短视频推荐系统(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景随着互联网的迅速发展,短视频行业蓬勃兴起。关于短视频推荐的研究,现有研究主要以用户行为分析和通用推荐算法为主 1。专门针对短视频这一特殊媒体形式,结......