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' 字符串,表明是客户端组件!
相关推荐
mldong6 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排6 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60617 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角8 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!8 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰8 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi10 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen10 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马11 小时前
AI源码分析:拆解模型底层实现逻辑
前端
IT_陈寒11 小时前
React子组件莫名其妙重渲染?你可能漏了这个Hook
前端·人工智能·后端