码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 前端框架 Nextjs 实现React SEO优化


    目录

    一、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标签

    如:完成动态路由的跳转

    1. import Link from "next/link";
    2. import styles from "../styles/Home.module.css";
    3. export default function Home () {
    4. return (
    5. <div className={styles.container}>
    6. <ul>
    7. {
    8. [1, 2, 3, 4, 5].map(
    9. (id) => (
    10. <li key={id}><Link href={`/user/${id}`}>user {id}Link>li>
    11. )
    12. )
    13. }
    14. ul>
    15. <div>
    16. div>
    17. div>
    18. );
    19. }

     

    4、Api路由

    1. import type { NextApiRequest, NextApiResponse } from 'next'
    2. interface Apple{
    3. name:string
    4. }
    5. export default function apple(
    6. req: NextApiRequest,
    7. res: NextApiResponse
    8. ){
    9. res.status(200).json({ name: 'Apple' })
    10. }

    5、Api动态路由 

    1. import type { NextApiRequest, NextApiResponse } from "next";
    2. interface Fruit {
    3. name: string
    4. }
    5. export default function fruit (
    6. req: NextApiRequest,
    7. res: NextApiResponse<Fruit>
    8. ) {
    9. res.status(200).json({ name: "水果" + req.query.id });
    10. }

    三、Nextjs中加载js脚本

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

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

    1. import styles from "../styles/Home.module.css";
    2. import Script from "next/script";
    3. export default function Home () {
    4. return (
    5. <div className={styles.container}>
    6. <Script src={"/js/a.js"} />
    7. <h1>Homeh1>
    8. div>
    9. );
    10. }

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

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

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

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

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

    四、Nextjs中加载图片

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

    五、Nextjs的公共布局

    创建公共文件

    1. import React, { PureComponent, ReactNode } from "react";
    2. interface IProps{
    3. children?:ReactNode
    4. }
    5. class Layout extends PureComponent <IProps>{
    6. render () {
    7. return (
    8. <div>
    9. layout
    10. {this.props.children}
    11. div>
    12. );
    13. }
    14. }
    15. export default Layout;

    也可以这样写:

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

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

    1. import '../styles/globals.css'
    2. import type { AppProps } from 'next/app'
    3. import Layout from "../components/Layout";
    4. export default function App({ Component, pageProps }: AppProps) {
    5. return (
    6. <Layout>
    7. <Component {...pageProps} />
    8. Layout>
    9. )
    10. }

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

    六、Pages的其他特性

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

  • 相关阅读:
    C 语言宏 + 内联汇编实现 MIPS 系统调用
    交换机和路由器技术-18-热备份路由选择协议HSRP
    Blender中的4种视图着色模式
    “NPM”的全称(github.com/npm/npm-expansions)
    【面试题】面试必备我跟面试官聊了一个小时线程池!
    咖啡赛道1个月6起新融资,该不该投?投融资另类数据深度解析
    【Mysql进阶优化篇02】索引失效的10种情况及原理
    Vue-Router实现带参数跳转,并且保存原页面数据记录
    蓝桥杯Java B组历年真题(2013年-2021年)
    Momenta“飞轮式L4”接受夜间长尾场景「像素级」挑战,表现堪比老司机
  • 原文地址:https://blog.csdn.net/qq_50909707/article/details/127983994
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号