初始Next.js

版本:

本系列next.js基于的是目前最新版本的 v14 版本,需要 Node.js 18.17 及以后版本

创建项目:

最快捷的创建 Next.js 项目的方式是使用 create-next-app脚手架,你只需要运行:

npx create-next-app@latest

&&

pnpm create next-app

&&

yarn create next-app

文件目录及其启动命令

开发的时候使用 npm run dev

部署的时候先使用 npm run build 构建生产代码,再执行 npm run start 运行生产项目。

运行 npm run lint 则会执行 ESLint 语法检查。

执行 next build 将会创建项目的生产优化版本:输出如下

从上图可以看出,构建时会输出每条路由的信息,比如 Size 和 First Load JS。注意这些值指的都是 gzip 压缩后的大小。其中 First Load JS 会用绿色、黄色、红色表示,绿色表示高性能,黄色或红色表示需要优化。

这里要解释一下 Size 和 First Load JS 的含义。正常我们开发的 Next.js 项目,其页面表现类似于单页应用,即路由跳转(我们称之为“导航”)的时候,页面不会刷新,而会加载目标路由所需的资源然后展示,所以:

加载目标路由一共所需的 JS 大小 = 每个路由都需要依赖的 JS 大小 + 目标路由单独依赖的 JS 大小

其中:

  • 加载目标路由一共所需的 JS 大小就是 First Load JS
  • 目标路由单独依赖的 JS 大小就是 Size
  • 每个路由都需要依赖的 JS 大小就是图中单独列出来的 First load JS shared by all

First Load JS = Size + First load JS shared by all

使用官方文档中的介绍就是:

  • Size:导航到该路由时下载的资源大小,每个路由的大小只包括它自己的依赖项
  • First Load JS:加载该页面时下载的资源大小
  • First load JS shared by all:所有路由共享的 JS 大小会被单独列出来

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Next.js 中实现分页功能可以通过以下步骤进行: 1. 创建一个页面组件(例如 `pages/index.js`),用于显示分页数据。 2. 在页面组件中,使用 Next.js 提供的 `getServerSideProps` 方法来获取初始的分页数据。在这个方法中,您可以调用后端 API 或者读取数据库等方式获取数据。 3. 在页面组件中,使用状态管理(例如 React 的 `useState` 和 `useEffect`)来存储当前页数和总页数等信息。 4. 创建一个翻页组件(例如 `components/Pagination.js`),用于展示分页按钮和处理页码切换的逻辑。 5. 在页面组件中使用翻页组件,并将当前页数和总页数等信息作为 props 传递给翻页组件。 6. 在翻页组件中,添加点击事件处理函数,用于处理点击不同页码时的逻辑。您可以根据当前页数和总页数等信息来计算新的页码,并触发数据更新。 7. 在页面组件中,根据当前页数和分页数据来展示相应的内容。 下面是一个简单的示例代码: **pages/index.js:** ```javascript import { useState, useEffect } from 'react'; import Pagination from '../components/Pagination'; export default function Home() { const [currentPage, setCurrentPage] = useState(1); const [totalPages, setTotalPages] = useState(0); const [data, setData] = useState([]); useEffect(() => { fetchData(currentPage); }, [currentPage]); const fetchData = async (page) => { // 根据页码调用 API 或者读取数据库等方式获取数据 // 更新总页数和当前页的数据 // 示例代码: const response = await fetch(`https://example.com/api/data?page=${page}`); const { totalPages, data } = await response.json(); setTotalPages(totalPages); setData(data); }; const handlePageChange = (page) => { setCurrentPage(page); }; return ( <div> {/* 显示数据 */} <ul> {data.map((item) => ( <li key={item.id}>{item.name}</li> ))} </ul> {/* 显示分页组件 */} <Pagination currentPage={currentPage} totalPages={totalPages} onPageChange={handlePageChange} /> </div> ); } ``` **components/Pagination.js:** ```javascript import React from 'react'; export default function Pagination({ currentPage, totalPages, onPageChange }) { const handlePrevClick = () => { if (currentPage > 1) { onPageChange(currentPage - 1); } }; const handleNextClick = () => { if (currentPage < totalPages) { onPageChange(currentPage + 1); } }; return ( <div> <button onClick={handlePrevClick}>Previous</button> <span>{currentPage}</span> / <span>{totalPages}</span> <button onClick={handleNextClick}>Next</button> </div> ); } ``` 以上代码仅为示例,您可以根据自己的需求进行修改和扩展。希望对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值