惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
Jina AI
Jina AI
Martin Fowler
Martin Fowler
W
WeLiveSecurity
V
Vulnerabilities – Threatpost
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Privacy International News Feed
D
DataBreaches.Net
Security Archives - TechRepublic
Security Archives - TechRepublic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Scott Helme
Scott Helme
U
Unit 42
Hacker News - Newest:
Hacker News - Newest: "LLM"
Google DeepMind News
Google DeepMind News
酷 壳 – CoolShell
酷 壳 – CoolShell
Vercel News
Vercel News
I
InfoQ
N
Netflix TechBlog - Medium
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
雷峰网
雷峰网
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
S
Securelist
S
Schneier on Security
T
Troy Hunt's Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
Cisco Blogs
H
Hacker News: Front Page
Spread Privacy
Spread Privacy
T
Tenable Blog
博客园 - Franky
Apple Machine Learning Research
Apple Machine Learning Research
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Darknet – Hacking Tools, Hacker News & Cyber Security
博客园_首页
量子位
AI
AI
L
LINUX DO - 最新话题
J
Java Code Geeks
小众软件
小众软件
爱范儿
爱范儿
月光博客
月光博客
H
Help Net Security
aimingoo的专栏
aimingoo的专栏

十月指南

使用AI开发一个应用最好的时间是现在 Kimi K2 发布并开源,实测效果确实很强! Vibe Coding实战:从翻车到上线,我开发了一款提前还贷计算器小程序 告别熬夜写代码!AI编程让我用Vibe Coding轻松上线 10 + 工具 用Vibe Coding方式打造 AI 内容创作平台 我连代码都没写,却做出JSON格式化工具—Vibe Coding了解一下 GPT 4.1、DeepSeek R1、Claude 3.7 代码生成横评,谁才是设计稿还原之王? AI 时代程序员生存指南 Cursor+Figma MCP 设计稿还原如此简单 MCP(模型上下文协议)是什么?它如何简化与API的AI集成 号外!我用Trae+Claude3.7开发的小程序上线啦 30分钟开发完成!Trae+Claude 3.7 打造小程序全流程揭秘! 5 分钟打造超酷小程序设计稿,Trae+Claude 3.7 太神了! 一句话生成设计稿,Trae+Claude 3.7 Sonnet,设计师也要被AI取代了 一句话生成应用!程序员效率翻倍的AI代码生成工具大盘点 我用AI创作了一首歌:Suno、海绵音乐、天工AI音乐生成效果测评 从哪吒2热潮到AI短片创作:AI视频实战测评 shadcn_ui:2024年最受欢迎的前端项目 实战:基于 Next.js+MoonShot API 开发一个 Github Trending 总结助手 技术篇:构建与部署 技术篇:Google 统计服务 技术篇:Next.js 多环境配置 技术篇:数据库-Prisma 技术篇:身份验证-NextAuth 技术篇:CSR、SSR、SSG、ISR 与客户端、服务端组件 技术篇:Next.js 路由与页面管理 技术篇:Next.js 项目结构 技术篇:从零开始掌握 Tailwind CSS 设计篇:独立开发设计入门 开篇:走上独立开发之路 Ollama:本地大模型运行指南 TooTool.net 理解 CSS 中的 Containing Block(包含块) 独立开发者工具大全(持续更新) TimeFlow 如何快速拥有一个技术博客 一个人从零开发上线一款App需要多少钱?终于有答案了! 深入理解HTTPS Nginx实战 Flutter Platform Channel 使用与源码分析 Android SDK类产品开发总结 360插件化框架 RePlugin 之 ClassLoader Hook Mac下Charles抓包配置 十一大西北体验 利用ContentProvider实现同步Binder macOS修改Android模拟器Hosts 走过 登山记 期待成长 小雨 静夜思 关于
技术篇:Next.js 简介与概览
十月 · 2024-10-28 · via 十月指南

学习目标:初步了解 Next.js

Next.js 是一个基于 React 的开源框架,由 Vercel 开发和维护,它的目标是简化开发现代 web 应用的流程。我们先看下 Next.js 官方介绍:

Next.js is a React framework for building full-stack web applications.

Next.js 是一个为全栈 web 应用而诞生的框架,全栈意味着前端和后端都在一个统一的框架中实现,因此非常适合有一定前端经验的独立开发者,甚至在 AI 加持下的后端开发者。

在 Next.js 个发展过程中,Next.js 13 是一个重要版本,它引入了许多新功能和改进,进一步提升了开发者体验和应用性能。其中最重要的是引入了新的 app 目录,这是对现有的 pages 目录的一个替代或补充,旨在实现更具模块化的文件结构,并且默认启用了 React Server Components(RSC)。之前的版本使用 pages 目录来定义路由,页面文件基本是 React 组件。本系列文章是基于 Next.js 13 或更高版本来进行介绍。

Next.js 特性 #

文件路由 (File-based Routing) #

Next.js 使用基于文件系统的路由结构,开发者只需在 pagesapp (Next.js 13)目录中创建文件即可定义路由。文件名对应于 URL 路径,自动生成页面和路由。

API 路由 (API Routes) #

Next.js 允许开发者在 pages/apiapp/api(Next.js 13)目录中创建 API 路由,这使得开发者可以在同一个项目中轻松构建后端 API,无需额外设置 Express 或其他服务器。

服务器端渲染 (Server-side Rendering, SSR) #

Next.js 支持服务器端渲染,这意味着每个请求都可以动态生成页面内容。SSR 可以提高页面加载速度,特别是在内容动态变化的应用中。

静态站点生成 (Static Site Generation) #

Next.js 支持静态站点生成 (Static Site Generation),可以在构建时生成 HTML 文件。这对于 SEO 和性能非常有利,因为用户访问时不需要再进行服务器端渲染。

增量静态生成 (Incremental Static Regeneration, ISR) #

ISR 允许开发者在构建时生成部分页面,并在运行时动态更新静态内容,这结合了静态生成和服务器端渲染的优势。

Next.js 13 新特性 #

Next.js 13 带来了许多重大更新,旨在进一步提高开发者体验和应用性能。以下是一些关键的新特性和改进。

App Router:全新的应用路由体系 #

Next.js 13 引入了一个全新的路由系统——App Router,使用 React 的 Server Components(服务器组件)来实现更高效的渲染模式。这个新的路由系统允许开发者以更简洁和模块化的方式组织应用结构,并且支持渐进式的渲染和数据获取方式。

React Server Components #

Next.js 13 更好地支持 React Server Components(RSC)。RSC 允许在服务端渲染部分或全部组件,并将其作为静态 HTML 发送到客户端,极大地降低了客户端的 JavaScript 负载。

Layouts #

在 Next.js 13 中,Layout 变得更加灵活和强大。开发者可以为应用的不同部分定义不同的 Layout,从而实现页面的模块化和可重用性。

Streaming 和 Suspense #

Streaming 和 Suspense 是 Next.js 13 中增强的功能,旨在提高应用的感知性能。通过 Streaming,页面可以逐步加载和渲染,使用户能够更快地看到页面内容。Suspense 则允许开发者在组件加载数据时显示备用内容,从而避免空白页面的出现。

上面介绍了非常多的概念,在后续的章节中,会针对 Next.js 核心概念以及本项目用到的 Next.js 13 的新特性进行介绍,到目前为止大家只需要记住两点:

  • Next.js 13 是一个非常重要的版本,引入 App Router 代替 Pages Router、启用了 React Server Components(RSC)。
  • 本项目是基于 Next.js 13 的,因此会重点介绍和 Next.js 13 相关的内容。

开始使用 Next.js 13 #

创建新项目 #

要一个 Next.js 13 项目,只需在终端中运行以下命令:

npx create-next-app@latest

此命令将使用最新的 Next.js 版本初始化一个新项目,回车之后我们需要确认以下信息,包括项目名称、是否使用 TypeScript、是否使用 ESLint、是否使用 Tailwind CSS、是否使用 src/ 目录、是否使用 App Router、是否自定义默认的导入别名 (@/*)。

✔ What is your project named? … dramai
✔ Would you like to use TypeScript? … No / Yes
✔ Would you like to use ESLint? … No / Yes
✔ Would you like to use Tailwind CSS? … No / Yes
✔ Would you like to use `src/` directory? … No / Yes
✔ Would you like to use App Router? (recommended) … No / Yes
✔ Would you like to customize the default import alias (@/*)? … No / Yes

我选择的分别是:

  • project name:dramai
  • use TypeScript:No
  • use ESLint:Yes
  • use Tailwind CSS:Yes
  • use src/ directory:No
  • use App Router:Yes
  • customize the default import alias (@/*):No
image <em>5</em>.png

初始化完成后,我们进入 dramai 目录,安装依赖:

安装完成后,我们看下项目的默认目录:

dramai
├── README.md
├── app
│   ├── favicon.ico
│   ├── globals.css
│   ├── layout.js
│   └── page.js
├── jsconfig.json
├── next.config.mjs
├── node_modules
├── package-lock.json
├── package.json
├── postcss.config.mjs
├── public
│   ├── next.svg
│   └── vercel.svg
├── tailwind.config.js
└── yarn.lock

然后我们看下 package.json(目前 next 最新版本为 14.2.7 ):

{
  "name": "dramai",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  },
  "dependencies": {
    "react": "^18",
    "react-dom": "^18",
    "next": "14.2.7"
  },
  "devDependencies": {
    "postcss": "^8",
    "tailwindcss": "^3.4.1",
    "eslint": "^8",
    "eslint-config-next": "14.2.7"
  }
}

运行项目 #

可以看下支持的命令有 dev、build、start、lint,我们执行 yarn dev

yarn run v1.22.18
$ next dev
  ▲ Next.js 14.2.7
  - Local:        http://localhost:3000

 ✓ Starting...
 ✓ Ready in 6.5s

可以看到项目已经启动,默认端口为 3000,我们打开页面后效果如下图:

image <em>6</em>.png

至此我们已经对 Next.js 有了初步了解,同时运行起了第一个 Next.js 项目。

注意:大家保存好这个项目,后续我们就基于这个项目开发。

总结 #

Next.js 是一个功能强大且灵活的 React 框架,无论是对中小型项目,还是对大型企业应用,Next.js 都是一个值得考虑的选择。Next.js 13 是一个为现代 Web 开发量身定制的强大工具,其新特性如 App Router、Layouts 和 React Server Components 等,使得开发者能够更轻松地构建高性能、可扩展的 Web 应用。是前端开发者或全栈开发者不可错过的利器。

参考 #

https://nextjs.org/

https://nextjs.org/docs