我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Next.js的使用教程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Next.js的使用教程

本篇内容主要讲解“Next.js的使用教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Next.js的使用教程”吧!

目录
  • 简介

  • 创建Next.js项目

    • 手动创建Next.js项目

    • creact-next-app快速创建项目

  • Pages

    • 路由

      • Link

      • Router

      • 参数传递与接收

      • 动态路由

      • 钩子事件

    • 获取数据

      • getStaticProps

        • 构建时请求数据

      • getServerSideProps

        • 每次访问时请求数据

    • CSS支持

      • 添加全局样式表

        • 添加组件级CSS

        简介

        Next.js 是一个轻量级的 React 服务端渲染应用框架。

        官网链接:www.nextjs.cn/

        优点:

        零配置
        自动编译并打包。从一开始就为生产环境而优化。

        混合模式: SSG 和 SSR
        在一个项目中同时支持构建时预渲染页面(SSG)和请求时渲染页面(SSR)

        增量静态生成
        在构建之后以增量的方式添加并更新静态预渲染的页面。

        支持 TypeScript
        自动配置并编译 TypeScript。

        快速刷新
        快速、可靠的实时编辑体验,已在 Facebook 级别的应用上规模上得到验证。

        基于文件系统的路由
        每个 pages 目录下的组件都是一条路由。

        API 路由
        创建 API 端点(可选)以提供后端功能。

        内置支持CSS
        使用 CSS 模块创建组件级的样式。内置对 Sass 的支持。

        代码拆分和打包
        采用由 Google Chrome 小组创建的、并经过优化的打包和拆分算法。

        创建Next.js项目

        手动创建Next.js项目

        mkdir nextDemo  //创建项目npm init            //初始化项目npm i react react-dom next --save           //添加依赖

        在package.json中添加快捷键命令

         "scripts": {    "test": "echo \"Error: no test specified\" && exit 1",    "dev" : "next" ,    "build" : " next build",    "start" : "next start"  },

        创建pages文件夹和文件

        在项目根目录创建pages文件夹并在pages文件夹中创建index.js文件

        function Index(){    return (        <div>Hello Next.js</div>    )}export default Index

        运行项目

        npm run dev

        creact-next-app快速创建项目

        create-next-app可以快速的创建Next.js项目,它就是一个脚手架。

        npm install -g create-next-app  //全局安装脚手架create-next-app nextDemo  //基于脚手架创建项目cd nextDemonpm run dev  //运行项目

        目录结构介绍:

        • components文件夹: 这里是专门放置自己写的组件的,这里的组件不包括页面,指公用的或者有专门用途的组件。

        • node_modules文件夹:Next项目的所有依赖包都在这里,一般我们不会修改和编辑这里的内容。

        • pages文件夹:这里是放置页面的,这里边的内容会自动生成路由,并在服务器端渲染,渲染好后进行数据同步。

        • static文件夹: 这个是静态文件夹,比如项目需要的图片、图标和静态资源都可以放到这里。

        • .gitignore文件: 这个主要是控制git提交和上传文件的,简称就是忽略提交。

        • package.json文件:定义了项目所需要的文件和项目的配置信息(名称、版本和许可证),最主要的是使用npm install 就可以下载项目所需要的所有包。

        Pages

        在 Next.js 中,一个 page(页面) 就是一个从 .js、jsx、.ts 或 .tsx 文件导出(export)的React 组件 ,这些文件存放在 pages 目录下。每个 page(页面)都使用其文件名作为路由(route)。

        如果你创建了一个命名为 pages/about.js 的文件并导出(export)一个如下所示的 React 组件,则可以通过 /about 路径进行访问。

        路由

        页面跳转一般有两种形式,第一种是利用标签<Link>,第二种是用js编程的方式进行跳转,也就是利用Router组件

        Link

        import React from 'react'import Link from 'next/link'const Home = () => (  <>    <div>我是首页</div>    <div><Link href="/pageA" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" ><a>去A页面</a></Link></div>    <div><Link href="/pageB" rel="external nofollow" ><a>去B页面</a></Link></div>  </>)export default Home

        注意:用<Link>标签进行跳转是非常容易的,但是又一个小坑需要你注意一下,就是他不支持兄弟标签并列的情况。

         //错误写法 <div>  <Link href="/pageA" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >    <span>去A页面</span>    <span>前端博客</span>  </Link></div>//正确写法<Link href="/pageA" rel="external nofollow"  rel="external nofollow"  rel="external nofollow" >  <a>    <span>去A页面</span>    <span>前端博客</span>  </a></Link>

        Router

        import Router from 'next/router'<button onClick={()=>{Router.push('/pageA')}}>去A页面</button>

        参数传递与接收

        在Next.js中只能通过通过query(?id=1)来传递参数,而不能通过(path:id)的形式传递参数。

        import Link from 'next/link'//传递<Link href="/blogDetail?bid=23" rel="external nofollow" ><a>{blog.title}</a></Link>        //blog.jsimport { withRouter} from 'next/router'import Link from 'next/link'const BlogDetail = ({router})=>{    return (        <>            <div>blog id: {router.query.name}</div>            <Link href="/" rel="external nofollow" ><a>返回首页</a></Link>        </>    )}//withRouter是Next.js框架的高级组件,用来处理路由用的export default withRouter(BlogDetail)import Router from 'next/router'<button onClick={gotoBlogDetail} >博客详情</button>function gotoBlogDetail(){    Router.push('/blogDetail?bid=23')}//object 形式function gotoBlogDetail(){    Router.push({        pathname:"/blogDetail",        query:{            bid:23        }    })}<Link href={{pathname:'/blogDetail',query:{bid:23}}><a>博客详情</a></Link>

        动态路由

        pages/post/[pid].jsroute : /post/abc  -->  query : { "pid": "abc" }pages/post/[pid]/[comment].jsroute : /post/abc/a-comment  -->  query : { "pid": "abc", "comment": "a-comment" }

        钩子事件

        利用钩子事件是可以作很多事情的,比如转换时的加载动画,关掉页面的一些资源计数器.....

        //路由发生变化时Router.events.on('routeChangeStart',(...args)=>{    console.log('1.routeChangeStart->路由开始变化,参数为:',...args)})//路由结束变化时Router.events.on('routeChangeComplete',(...args)=>{    console.log('routeChangeComplete->路由结束变化,参数为:',...args)})//浏览器 history触发前Router.events.on('beforeHistoryChange',(...args)=>{    console.log('3,beforeHistoryChange->在改变浏览器 history之前触发,参数为:',...args)})//路由跳转发生错误时Router.events.on('routeChangeError',(...args)=>{    console.log('4,routeChangeError->跳转发生错误,参数为:',...args)})Router.events.on('hashChangeStart',(...args)=>{    console.log('5,hashChangeStart->hash跳转开始时执行,参数为:',...args)})Router.events.on('hashChangeComplete',(...args)=>{    console.log('6,hashChangeComplete->hash跳转完成时,参数为:',...args)})

        获取数据

        getStaticProps

        构建时请求数据

        在build阶段将页面构建成静态的html文件,这样线上直接访问HTML文件,性能极高。

        使用getStaticProps方法在build阶段返回页面所需的数据。
        如果是动态路由的页面,使用getStaticPaths方法来返回所有的路由参数,以及是否需要回落机制。

        // posts will be populated at build time by getStaticProps()function Blog({ posts }) {  return (    <ul>      {posts.map((post) => (        <li>{post.title}</li>      ))}    </ul>  )}// This function gets called at build time on server-side.// It won't be called on client-side, so you can even do// direct database queries. See the "Technical details" section.export async function getStaticProps(context) {  // Call an external API endpoint to get posts.  // You can use any data fetching library  const res = await fetch('https://.../posts')  const posts = await res.json()  // By returning { props: { posts } }, the Blog component  // will receive `posts` as a prop at build time  return {    props: {      posts,    },  }}export default Blog

        getServerSideProps

        每次访问时请求数据

        页面中export一个async的getServerSideProps方法,next就会在每次请求时候在服务端调用这个方法。

        • 方法只会在服务端运行,每次请求都运行一边getServerSideProps方法

        • 如果页面通过浏览器端Link组件导航而来,Next会向服务端发一个请求,然后在服务端运行getServerSideProps方法,然后返回JSON到浏览器。

        function Page({ data }) {  // Render data...}// This gets called on every requestexport async function getServerSideProps(context) {  // Fetch data from external API  const res = await fetch(`https://.../data`)  const data = await res.json()  // Pass data to the page via props  return { props: { data } }}export default Page

        CSS支持

        添加全局样式表

        要将样式表添加到您的应用程序中,请在 pages/_app.js 文件中导入(import)CSS 文件。
        在生产环境中,所有 CSS 文件将自动合并为一个经过精简的 .css 文件。
        你应该 只在 pages/_app.js 文件中导入(import)样式表。
        从 Next.js 9.5.4 版本开始,你可以在应用程序中的任何位置从 node_modules 目录导入(import) CSS 文件了。
        对于导入第三方组件所需的 CSS,可以在组件中进行。

        添加组件级CSS

        [name].module.css//login.module.css.loginDiv{    color: red;}//修改第三方样式.loginDiv :global(.active){    color:rgb(30, 144, 255) !important;}
        import styles from './login.module.css'<div className={styles.loginDiv}/>

        Next.js 允许你导入(import)具有 .scss 和 .sass 扩展名的 Sass 文件。 你可以通过 CSS 模块以及 .module.scss 或 .module.sass 扩展名来使用组件及的 Sass

        npm i sass --save

        如果要配置 Sass 编译器,可以使用 next.config.js 文件中的 sassOptions 参数进行配置。

        const path = require('path')module.exports = {  sassOptions: {    includePaths: [path.join(__dirname, 'styles')],  },}

        CSS-in-JS

        可以使用任何现有的 CSS-in-JS 解决方案。 最简单的一种是内联样式:

        <p style={{ color: 'red' }}>hi there</p>

        使用 styled-jsx 的组件就像这样

        function HelloWorld() {  return (    <div>      Hello world      <p>scoped!</p>      <style jsx>{`        p {          color: blue;        }        div {          background: red;        }        @media (max-width: 600px) {          div {            background: blue;          }        }      `}</style>      <style global jsx>{`        body {          background: black;        }      `}</style>    </div>  )}export default HelloWorld

        自定义Header

        <Head>    <title>技术胖是最胖的!</title>    <meta charSet='utf-8' /></Head>

        到此,相信大家对“Next.js的使用教程”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

        免责声明:

        ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

        ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

        Next.js的使用教程

        下载Word文档到电脑,方便收藏和打印~

        下载Word文档

        猜你喜欢

        Next.js的使用教程

        本篇内容主要讲解“Next.js的使用教程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Next.js的使用教程”吧!目录简介创建Next.js项目手动创建Next.js项目creact-nex
        2023-06-20

        DOS的使用教程

        这篇文章主要介绍“DOS的使用教程”,在日常操作中,相信很多人在DOS的使用教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”DOS的使用教程”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!net use
        2023-06-09

        SecureCRT的使用教程

        SecureCRT是一款功能强大的终端模拟器和SSH客户端工具,适用于Windows、Mac和Linux操作系统。下面是SecureCRT的使用教程。1. 下载和安装SecureCRT: - 访问SecureCRT官方网站。 - 选
        2023-09-21

        dockerfile的使用教程

        这篇文章主要介绍“dockerfile的使用教程”,在日常操作中,相信很多人在dockerfile的使用教程问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”dockerfile的使用教程”的疑惑有所帮助!接下来
        2023-06-04

        Fabric的使用教程

        Fabric是一个Python库,用于简化与远程服务器的交互和部署。它提供了一些高级功能,如并行执行命令,远程文件传输和任务管理。下面是一个简单的Fabric使用教程:1. 安装Fabric:可以使用pip命令来安装Fabric。打开终端窗
        2023-09-20

        Nodejs的express使用教程

        Express 是一个简洁、灵活的 node.js Web 应用开发框架, 它提供一系列强大的特性,帮助你创建各种 Web 和移动设备应用。 1.express组织结构 app demo|---node_modules------用于安装本
        2022-06-04

        webpack-merge的使用教程

        这篇文章主要介绍了webpack-merge的使用,webpack-merge工具提供了各种merge(合并)高级功能,本文给大家详细讲解,需要的朋友可以参考下
        2023-02-07

        GNS3使用教程

        经常有人在技术交流群里面,要教程。我也看了些前辈录的视频都很不错,就是时间录的有点长,文件大。为了让新手更快的熟悉使用GNS3模拟器,学习cisco的技术,我深夜为大家奉献GNS3使用教程,本教程优点:文件小7M不到,时间是17分钟,80%
        2023-01-31

        Seata使用教程

        文章目录 一、Seata简介1.Seata 概念介绍2.分布式事务3.Seata核心组件4.Seata 工作流程5.Seata四大模式二、Seata实战教程1.下载资源2.配置Seata-Server3.增加相关表结构4.代码配置三
        2023-08-16

        loadrunner使用教程

        LoadRunner是一种性能测试工具,被广泛用于测试Web、移动和企业应用程序的性能和负载。以下是一个简单的LoadRunner使用教程:1. 安装LoadRunner:从官方网站下载LoadRunner并进行安装。2. 创建新项目:打开
        2023-09-14

        openstack使用教程

        以下是一个简单的OpenStack使用教程:1. 安装OpenStack:首先,你需要在一台服务器或多台服务器上安装OpenStack。你可以选择使用OpenStack官方提供的安装工具,如OpenStack-Ansible、TripleO
        2023-10-11

        pycharm使用教程

        使用教程:1、创建项目:打开PyCharm,点击“Create New Project”,选择项目路径,点击“Create”开始创建;2、创建文件:在项目界面,点击“file”,再点“new”创建子目录或者文件,选择要创建的文件类型;3、运
        pycharm使用教程
        2023-12-09

        ReactuseCallback使用教程

        useCallback是react中比较重要的一个hook,useCallback用来返回一个函数,在父子组件传参或者通用函数封装中,起到举足轻重的作用
        2023-01-05

        Neofetch使用教程

        导读Neofetch是一个在终端上显示带有发行徽标的Ubuntu Linux系统信息的工具,neofetch命令将显示有关相应系统的简要信息。 它显示的信息包括型号,操作系统,内核,CPU,GPU,内存,正常运行时间,程序包,shell,分
        2023-06-05

        编程热搜

        • Python 学习之路 - Python
          一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
          Python 学习之路 - Python
        • chatgpt的中文全称是什么
          chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
          chatgpt的中文全称是什么
        • C/C++中extern函数使用详解
        • C/C++可变参数的使用
          可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
          C/C++可变参数的使用
        • css样式文件该放在哪里
        • php中数组下标必须是连续的吗
        • Python 3 教程
          Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
          Python 3 教程
        • Python pip包管理
          一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
          Python pip包管理
        • ubuntu如何重新编译内核
        • 改善Java代码之慎用java动态编译

        目录