nextjs 16 基础完全指南!(一) - 初步安装

注,以下内容过于基础,对于"老鸟"可以跳过文章前面,直接看最后最需要了解的知识点: React 的服务器组件和客户端组件。

前言

首先很多人疑惑为什么要学习 next.js 技术,我从客观角度帮你分析,你需不需要:

  • 一个是未来你想做 remote 也就是远程开发者,next.js 几乎是必备的,因为它最大的优点之一就是全栈,可以将前后端在一起做

这里我简单解释一下,全栈是指前端页面和后端接口服务都可以做,但实际上复杂应用一般还是会前后端分离,但鉴于国外很多小公司,面对的用户数量并不多,所以使用一个技术快速验证商业想法才是最主要的,这是 next.js 很受欢迎的原因。

  • 一个是对 seo 有强烈需求的,seo 你简单理解就是你的网站内容能被搜索引擎爬虫爬到,然后用户搜索的时候,你的页面有机会呈现在搜索引擎中,这是我们传统的单页面应用(SPA)做不到的,当然也有一些其他办法,但没有 next.js 直接。

但是任何技术有利有弊,国内为什么不流行 next.js 的最大原因就是很多 B端 后台系统,根本用不着 next.js ,首先是前后端分离在国内是常见的技术合作模式,其次 B端 后台系统不需要 seo, 只有首页和官网可能需要。

Next 和 React 的区别

简单说一下 reactnext.js 的区别。

本质:Next.js 是一个用于构建全栈 Web 应用程序的 React 框架。

  • React 是一个库,只负责应用的视图层。开发者需要自行选择和配置路由、数据获取等生产级功能。

  • Next.js 是一个框架,它在 React 的基础上,提供了一整套开箱即用的生产就绪功能,并遵循特定的约定和最佳实践。

这里咋们就不说太多概念的东西,例如 Next.js 提供了哪些常见的开箱即用的功能,我们直接上手(毕竟初学看到了这些概念也不知道具体是什么意思)。

学习前提

  • 只需要基本的 HTMLCSSJavaScript 知识,和基本会使用一点 React 就可以开始学习 Next.js
  • 需要你安装了 Node.js (版本建议 20 以上)
  • 安装命令:npx create-next-app@latest
    • 然后会让你输入项目名称,你可以直接回车默认,也可以输入你喜欢的名称。
    • 最后设置一些选项,等待下载完依赖包,就可以完成安装了

最后使用 npm run dev(你用 pnpmpnpm run dev) 就可以启动了:

对于访问的 URL(如 /),Next.js 在 app 目录下找到对应的 page.tsx 组件。

Next.js 项目结构解析

一个基础的 Next.js 项目包含以下核心部分:

  • 4个主要文件夹:.next, node_modules, public, src (或 app)

    • .next: 是构建输出目录,自动生成,无需手动修改。这是当你运行 npm run dev、npm run build 或 npm run start 时,Next.js 构建工具链生成的优化后的生产就绪代码,例如包含编译后的 JavaScript 和 CSS 文件。
    • node_modules: 是安装第三包包的目录
    • public: 静态资源目录, 例如图片和字体都可以放进来。
    • src/ 或 app/ - 应用源代码目录(你的主战场):这是你作为开发者最常工作和编写代码的地方。
  • 10个左右配置文件:包括 package.json、Next.js 和各类工具的配置文件。

    • package.json,主要包含以下两部分:

      • 依赖管理:列出 next, react, react-dom 等核心库。
      • 脚本命令:定义 dev (开发), build (构建), start (生产启动), lint (代码检查)具体使用的命令是什么。
    • next.config.js (Next.js 配置)

    • tsconfig.json (TypeScript 配置)

    • eslint.config.js (代码规范检查)

    • tailwind.config.js (Tailwind CSS 配置)

    • .gitignore:版本控制忽略文件。

    • README.md:项目说明文档。

    • next-env.d.ts:Next.js 的 TypeScript 类型声明。

    • favicon.ico 浏览器标签页图标。

    • globals.css 全局样式文件。

    • layout.tsx 根布局:定义所有页面共享的 UI(如导航栏、页脚)。

    • page.tsx 首页组件:对应路由 / (localhost:3000) 的页面内容。

服务器从根布局 layout.tsx 开始渲染(也就是 app 下的 layout 文件开始渲染 )。虽然是从 layout.tsx 渲染,但 layout.tsx 主要作用是共享 UI,也就是例如头部导航栏所有组件一般都会用到,所以 layout.tsx 里面的代码会共享给所有组件,但如果你只看当前路由渲染的内容,是在 page.tsx 文件中。

对于访问的 URL(如 /),Next.js 在 app 目录下找到对应的 page.tsx 组件。

React 服务器组件核心概

根本性变革

RSC(React Server Component 也就是 React 服务端组件) 是 React 团队引入的新架构,并已被 Next.js 广泛采用。

它彻底改变了 React 组件的构建方式,将组件明确划分为两种类型:服务器组件和客户端组件。

两种组件对比

特性 服务器组件 客户端组件
默认状态 Next.js 中所有组件默认都是服务器组件 需要明确使用 'use client' 指令
运行环境 在服务器端渲染 在浏览器端渲染
能力/优势 执行服务端任务: • 直接读取文件 • 从数据库获取数据 实现交互性: • 使用 React Hooks • 处理用户交互事件
限制 不能使用 React Hooks 或处理用户交互 不能执行服务端任务

关键:

  • 服务器组件用于等待异步操作(如数据获取)完成后渲染内容。其中不能使用 React 的 Hook,只有客户端组件才可以,并且需要在文件开头,写上 'use client' 字符串,表明是客户端组件!
相关推荐
无巧不成书02186 小时前
Windows PowerShell执行策略详解:从npm报错到完美解决
前端·windows·npm·powershell执行策略·执行策略·npm.ps1·脚本报错
Z兽兽12 小时前
React@18+Vite项目配置env文件
前端·react.js·前端框架
SuniaWang12 小时前
《Spring AI + 大模型全栈实战》学习手册系列 · 专题六:《Vue3 前端开发实战:打造企业级 RAG 问答界面》
java·前端·人工智能·spring boot·后端·spring·架构
A_nanda13 小时前
根据AI提示排查vue前端项目
前端·javascript·vue.js
happymaker062613 小时前
web前端学习日记——DAY05(定位、浮动、视频音频播放)
前端·学习·音视频
~无忧花开~14 小时前
React状态管理完全指南
开发语言·前端·javascript·react.js·前端框架
LegendNoTitle14 小时前
计算机三级等级考试 网络技术 选择题考点详细梳理
服务器·前端·经验分享·笔记·php
@大迁世界14 小时前
1.什么是 ReactJS?
前端·javascript·react.js·前端框架·ecmascript
BJ-Giser15 小时前
Cesium 基于EZ-Tree的植被效果
前端·可视化·cesium
王码码203516 小时前
Flutter for OpenHarmony:Flutter 三方库 algoliasearch 毫秒级云端搜索体验(云原生搜索引擎)
android·前端·git·flutter·搜索引擎·云原生·harmonyos