前端框架 Nextjs 实现React SEO优化

news2024/11/25 13:03:03

目录

一、Nextjs框架创建React项目

二、路由的使用

1、静态路由

2、动态路由

3、Link路由跳转

4、Api路由

5、Api动态路由 

三、Nextjs中加载js脚本

四、Nextjs中加载图片

五、Nextjs的公共布局

六、Pages的其他特性


一、Nextjs框架创建React项目

快速入门 | Next.js | Next.js中文网

yarn create next-app --typescript

二、路由的使用

Nextjs里的路由相对于传统ReactRouter路由更能满足SEO优化的需求,通过路径来进行路由更能被搜索引擎收录。

1、静态路由

pages目录下的.tsx文件都能被浏览器直接访问到:

localhost:3000

localhost:3000/ Two  

可以直接被访问到。

2、动态路由

与传统路由不同的是,动态路由需先创建一个目录,再到目录下创建传参文件,如下:

 相当于localhost:3000/user/:id这个id可以动态改变,都可以访问到对应的文件。

3、Link路由跳转

Link标签相当于传统H5里的a标签

如:完成动态路由的跳转

import Link from "next/link";
import styles from "../styles/Home.module.css";

export default function Home () {
    return (
        <div className={styles.container}>
            <ul>
                {
                    [1, 2, 3, 4, 5].map(
                        (id) => (
                            <li key={id}><Link href={`/user/${id}`}>user {id}</Link></li>
                        )
                    )
                }
            </ul>
            <div>
            </div>
        </div>
    );
}

 

4、Api路由

import type { NextApiRequest, NextApiResponse } from 'next'

interface Apple{
    name:string
}

export default function apple(
    req: NextApiRequest,
    res: NextApiResponse<Apple>
){
    res.status(200).json({ name: 'Apple' })
}

5、Api动态路由 

import type { NextApiRequest, NextApiResponse } from "next";

interface Fruit {
    name: string
}

export default function fruit (
    req: NextApiRequest,
    res: NextApiResponse<Fruit>
) {
    res.status(200).json({ name: "水果" + req.query.id });
}

三、Nextjs中加载js脚本

创建你的js脚本到public目录:

 页面中引入并使用Script标签:

import styles from "../styles/Home.module.css";
import Script from "next/script";

export default function Home () {
    return (
        <div className={styles.container}>
            <Script src={"/js/a.js"} />
            <h1>Home</h1>
        </div>
    );
}

效果如下:"/"代表从public目录下开始

 值得注意的是这样的js脚本都是在页面最好执行的。

 也可以通过添加属性使其先渲染:

参考:nextjs.cn/docs/basic-features/script

<Script src={"/js/a.js"} strategy="lazyOnload"/>

四、Nextjs中加载图片

 效果:

 参考:基本特性: 图片优化 | Next.js | Next.js中文网

五、Nextjs的公共布局

创建公共文件

import React, { PureComponent, ReactNode } from "react";

interface IProps{
    children?:ReactNode
}

class Layout extends PureComponent <IProps>{
    render () {
        return (
            <div>
                layout
                {this.props.children}
            </div>
        );
    }
}

export default Layout;

也可以这样写:

 在入口文件或对应组件上添加父类标签:

我这里在入口组件中添加:所有页面都会有改组件显示

import '../styles/globals.css'
import type { AppProps } from 'next/app'
import Layout from "../components/Layout";

export default function App({ Component, pageProps }: AppProps) {
  return (
      <Layout>
          <Component {...pageProps} />
      </Layout>
      )
}

效果:

 参考:基本特性: Layouts | Next.js | Next.js中文网

六、Pages的其他特性

见: nextjs.cn/docs/basic-features/pages

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

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

相关文章

YOLOv5~目标检测模型精确度

还是yolo5的基础啊~~ 一些关于目标检测模型的评估指标&#xff1a;IOU、TP&FP&FN&TN、mAP等&#xff0c;并列举了目标检测中的mAP计算。 指标评估(重要的一些定义) IOU 也称重叠度表示计算预测回归框和真实回归框的交并比,计算公式如下: TP&FP&FN&…

2022CTF培训(二)Hook进阶反调试

附件下载链接 Hook进阶 更精准的 Inline Hook 要求 实现防止任务管理器对某进程自身的结束要求不影响任务管理器结束其它进程的功能 Dll 注入程序编写 提权 主要过程如下&#xff1a; 首先,程序需要调用OpenProcessToken函数打开指定的进程令牌&#xff0c;并获取TOKEN…

【架构设计】作为架构师你应该掌握的画图技术

1.前言 大家知道&#xff0c;架构的过程其实就是建模的过程&#xff0c;那自然离不开架构图。那么&#xff0c;我们先来看几个问题。 &#xff08;1&#xff09;什么是架构图&#xff1f; 架构图 架构 图&#xff0c;用图的形式把系统架构展示出来&#xff0c;配上简单的文…

Rust学习笔记——安装、创建、编译、输入输出

目录 一.安装 二.创建 三.编译 四.输入输出 &#xff08;一&#xff09;.输出hello world &#xff08;二&#xff09;.输入 一.安装 Rust Programming Language (rust-lang.org)&#xff0c;这是Rust官网。 直接下载自己对应系统版本即可&#xff0c;小编是linux版。 下…

ARP协议map4(3层网络层的协议)

数据来源 一、广播与广播域概述 1、广播域广播域 广播&#xff1a;将广播地址做为目标地址的数据帧 广播域&#xff1a;网络中能接收到同一个广播所有节点的集合&#xff08;广播域越小越好&#xff0c;这样通信效率更高&#xff09; 下图每个圈都是一个广播域&#xff0c;说…

通关算法题之 ⌈数组⌋ 上

滑动窗口 3. 无重复字符的最长子串 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 输入: s "abcabcbb" 输出: 3 这就是变简单了&#xff0c;连 need 和 valid 都不需要&#xff0c;而且更新窗口内数据也只需要简单的更新计数器 …

(续)SSM整合之SSM整合笔记(ContextLoaderListener)(P179-188)

一 准备工作 1 新建模块ssm com.atguigu.ssm 2 导入依赖 <packaging>war</packaging><properties><spring.version>5.3.1</spring.version> </properties><dependencies><dependency><groupId>org.springframew…

Day10--初步实现自定义tabBar的效果

承接上文配置信息之后。 1.添加tabBar代码文件 我的操作&#xff1a; 1》在文件区新建一个custom-tab-bar文件夹 2》并在其中新建一个index组件 3》文件区展示图 4》最终的效果图&#xff1a; **************************************************************************…

界面组件DevExpress Reporting v22.1亮点 - 报表设计器功能全面升级

DevExpress Reporting是.NET Framework下功能完善的报表平台&#xff0c;它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集&#xff0c;包括数据透视表、图表&#xff0c;因此您可以构建无与伦比、信息清晰的报表。 DevExpress Reporting v22.1版本已正式发布&am…

数据结构之二叉树(前提知识)

文章目录前言**一、树****二、树的相关概念****节点的度****叶节点****分支节点****子节点****父节点****兄弟节点****树的度****节点的层****树的高度****祖先****子孙****森林****三、树的表示****孩子表示法****左孩子右兄弟法****双亲表示法****四、树在实际中的应用****总…

iPhone/iPad屏幕投屏镜像到PC或Mac上面教程分享

AirServer是一款Mac应用程序&#xff0c;可将AirPlay / AirTunes的音频&#xff0c;视频&#xff0c;照片&#xff0c;幻灯片和镜像接收功能添加到Mac电脑。它可以实现将iPhone手机或Mac电脑上的媒体文件以及其他操作投射到Mac电脑上。使用AirServer&#xff0c;可以从Mac&…

如何利用DGL官方库中的rgcn链接预测代码跑自己的数据集(如何在DGL库的链接预测数据集模块定义自己的数据集类)

最近在忙我的省创&#xff0c;是有关于知识图谱的&#xff0c;其中有一个内容是使用rgcn的链接预测方法跑自己的数据集&#xff0c;我是用的dgl库中给出的在pytorch环境下实现rgcn的链接预测的代码&#xff0c;相关链接贴在这里&#xff1a; dgl库中关于rgcn的介绍文档 dgl库…

联盟快应用-如何进行测试?

官方文档&#xff1a;快应用-无需安装&#xff0c;即点即用-厂商联盟官方网站 什么是快应用&#xff1f; 可以简单理解为是另一种小程序。 快应用是一种新的应用形态&#xff0c;以往的手机端应用主要有两种方式&#xff1a;网页、原生应用&#xff1b;网页无需安装&#xff…

阻塞车间调度

阻塞车间调度 当前机器上的作业处理必须保留在该机器上&#xff0c;直到下一台机器可用于处理为止。也就是说如果该作业要执行的下一个工序的机器被使用&#xff0c;则该机器必须被占用。 n个作业必须在m个机器f个工厂上进行处理&#xff0c;在每一个工厂中连续机器之间没有缓…

Android11 framework Handler

Android11 framework Handler引言Handler工作流程MessageQueue主要函数Looper主要函数思考1.一个线程有几个handler&#xff0c;有几个looper2.为什么handler会有内存泄漏3.如果想要在子线程new Handler怎么做&#xff1f;4.子线程中的loop如果消息队列中没有消息处理的时候怎么…

深入底层学git:目录中包含的秘密

1.Git简介 Git具有最优的存储能力&#xff0c;在没有远端git服务器的情况下&#xff0c;git本地就可以独立作为版本管控系统&#xff0c;这其中.git裸仓库中起了关键作用&#xff0c;那么我们一起来看看.git下都放了哪些文件。 打开Git Bash&#xff0c;切换到项目目录&#x…

王道考研——操作系统(第二章 进程管理)(进程;线程)

一、进程的概念、组成、特征 进程的概念 进程的组成——PCB 进程的组成——程序段、数据段 知识滚雪球&#xff1a;程序是如何运行的&#xff1f; 进程的组成 进程的特征 知识回顾与重要考点 二、进程的状态与转换 进程的状态——创建态、就绪态 进程的状态——运行态 进程的…

刷题日记【第十二篇】-笔试必刷题【洗牌+MP3光标位置+年终奖+迷宫问题】

洗牌【编程题】 import java.util.*;public class Main {// 左: i --> 2*i;// 右: in --> 2*i 1;private static void playCard(int[] cards, int n, int k ) {for (int i 0; i < k; i) {//一次洗牌的顺序int[] newCards new int[cards.length];//遍历编号为0-n-1…

【Servlet】2:认识一下Web服务器——Tomcat

目录 第三章 | Tomcat 认识与配置 | 章节概述 | HTTP服务器概述 | Tomcat 安装与配置 | Tomcat 的目录结构、端口号 第四章 | Tomcat 基本使用 | 章节概述 | 本地Tomcat 静态资源网站访问 | IDEATomcat 静态资源网站访问 | IDEA中最基础web项目的目录结构 本文章属于后…

从零开始操作系统-07:APIC

这一节主要主要是APIC。 所需要的文件在Github&#xff1a;https://github.com/yongkangluo/Ubuntu20.04OS/tree/main/Files/Lec7-ExternalInterrupt 历史方法&#xff1a;PIC&#xff08;Programmable Interrupt Controller&#xff09; Intel 8259&#xff1a; APIC&#…