Next.js是什么

前言:最近一年都在nextjs浩瀚的海洋中游来游去,在使用过程中算是小有心得,趁着有那么一点点时间温故而知新,总结一波(主要中文文档实在太少,它更新的速度又快,很多时候自己翻文档看issue实在头疼),希望和小伙伴们一起学习一起交流一起进步。接下来按照一般方法,先介绍一下nextjs(最新版本14.x)

1. 什么是Nextjs

首先上官网地址:https://nextjs.org/ (中文版的找到一个,但看起来很久没维护参考价值不大就不贴出来了)

The React Framework for the Web

官网给出的一句话概括就是:基于React的web 框架,基调定下了,用Nextjs的前提是一定的React基础,再往前推就是三剑客基础。再然后是框架,在我看来,本质上它对React做了二次封装,开发者能更快更容易的进行项目搭建,使用Nextjs之后,开发者不需要考虑构建打包,不需要考虑路由,可以自由选择服务端或者客户端渲染,它甚至还是一个全栈框架,只要你想,下一个全栈工程师就是你。简单来说,你只需要关注业务逻辑,其他的,都归它。

2. 主要功能:

  • 路由:基于文件系统的路由器构建在服务器组件之上,支持布局、嵌套路由、加载状态、错误处理等。
  • 渲染:使用客户端和服务器组件进行客户端和服务器端渲染。使用 Next.js 在服务器上进一步优化静态和动态渲染。在 Edge 和 Node.js 运行时上进行流式传输。
  • 数据获取:通过服务器组件中的 async/await 简化数据获取,以及用于请求记忆、数据缓存和重新验证的扩展获取 API。
  • 样式:支持您首选的样式方法,包括 CSS 模块、Tailwind CSS 和 CSS-in-JS
  • 优化:图像、字体和脚本优化,以改善应用程序的核心网络生命和用户体验。
  • TypeScript: 改进了对 TypeScript 的支持,具有更好的类型检查和更高效的编译,以及自定义 TypeScript 插件和类型检查器。

在实际开发过程中,跟业务代码关联性最大的就是路由,Nextjs有两种路由类型:App Router以及Pages Router,Pages Router是Next12之前的路由类型,使用多年,兼容性比较好,App Router是Next13之后新出的路由方案,允许使用 React 的最新功能,例如服务器组件和流媒体。现在官方以App Router为主,但因为新东西(不过出来也有两年了),如果在开发过程中需要使用第三方插件的时候,就会发现可能很多插件对App Router的兼容性并不是那么的完善,官方的很多demo也都还是pages Router版本的。但综合下来,还是推荐App Router,接下来一系列的文章,也会以App Router为主,主要参考官方文档,加上自己的实践经验及理解,那就从安装开始吧~

3. 安装

前提条件:

  1. Node.js 18.17 以上
  2. macOS, Windows (including WSL), Linux
npx create-next-app@latest

它会有一系列的东西让你选,按照需求来就好,我这里根据默认配置进行创建在这里插入图片描述
选择完成之后,开始构建~
在这里插入图片描述

  • dev:运行 next dev 以在开发模式下启动 Next.js。
  • build:运行 next build以构建用于生产的应用程序。
  • start:运行 next start 以启动 Next.js 生产服务器。
  • lint:运行 next lint 以设置 Next.js 的内置 ESLint 配置。

运行npm run dev,恭喜你,第一个next项目雏形已构建完成。
在这里插入图片描述
创建之后打开编辑器,你会发现,该有的配置它都有了,eslint,tailwind和ts都是内置的,如果有自定义的需求,在对应的文件中加上约束就好
在这里插入图片描述
除了基本的配置文件之外,有两个文件夹,一个叫app,一个叫public,这两个文件夹是项目的重头戏,这里先简单介绍一下,后续还会专门进行更加细致的分析

4. app 和 public

  1. 从这里开始,假设我的域名叫xiaoqian.best,便于理解
  2. 从这里开始,一切的分析都基于app-router,pages-router的情况不做考虑
app

app文件夹是重中之重,nextjs中页面的路由就是根据app的目录自动生成的。创建app/文件夹,然后添加layout.tsx和page.tsx文件。当用户访问应用程序的根目录 (/) 时,将呈现这些内容。根目录中这两个文件都是必须的。

  1. layout.tsx
    layout.tsx用于布局的设置,根目录(也就是app)下的layout.tsx中的布局适用于所有的页面,html和body是必须的,其他的全局配置一般也在这里进行
export default function RootLayout({children,
}: {children: React.ReactNode
}) {return (<html lang="en"><body>{children}</body></html>)
}
  1. page.tsx
    page.tsx用于内容的展示,访问xiaoqian.best,展示的内容就是app/layout.tsx 和app/page.tsx的结合体
export default function Page() {return <h1>Hello, Next.js!</h1>
}

如果我需要建立子路由,比如xiaoqian.best/login,怎么办呢,很简单,只需要创建app/login/page.tsx,此时这个页面会继承app/layout.tsx的布局,并在这基础上展示app/login/page.tsx的页面内容,所以,在子路由中,layout.tsx不是必须的,但page.tsx是。

public

这是一个用来存储例如图像、字体等静态资源的文件夹,在代码中使用可以从根目录 (/) 开始引用文件,下面代码里的src="/next.svg"对应的就是public/next.svg,项目部署之后,public文件夹中的文件也可以直接访问,通过xiaoqian.best/next.svg,就可以访问到对应的文件。所以在某些场景下,public也会用来存储第三方插件的一些配置。另一个角度来说,它是公开的,所以涉及隐私的代码就尽量不要放在这里。

import Image from "next/image";export default function Home() {return (<main className="flex min-h-screen flex-col items-center justify-between"><ImageclassName="relative"src="/next.svg"alt="Next.js Logo"width={180}height={37}priority/></div></main>);
}

结语

今天的开胃菜就先到这里,主要是nextjs的简单介绍和代码的基本安装,接下来会有详细的功能及使用介绍(我会努力不鸽的!!!)~如果有表述不清楚的地方欢迎指正,十分感谢~

番外 关于Vercel

有Nextjs的地方,基本都能看到Vercel的身影,Nextjs是由Vercel公司开发和维护的,Vercel本身是一个云平台,专注于提供静态网站部署、服务器端渲染和无服务器函数的服务。它的目标是帮助开发人员更轻松地构建、部署和托管现代网站和应用程序。Vercel支持多种前端框架,如React、Vue、Angular等,同时提供了简单易用的命令行工具和界面,使开发人员能够快速部署他们的项目。Vercel还提供了自动化的构建和部署流程,以及全球性的内容分发网络(CDN),确保网站和应用程序的性能和可靠性。
其实很佩服这个公司的商业头脑,Nextjs本身是可以随意使用的,但作为开发者,特别是前端开发者,代码的部署和项目上线是一件令人头疼的事情,嘿,这不是巧了,使用Nextjs开发之后,通过Vercel,可以很轻松的进行部署和上线(Nextjs本身不是和Vercel的部署强绑定,但它只是提供了一个方便的路子),这又大大的解决了一个开发之路的绊脚石,而且除了Nextjs之外,Vercel还有很多很好用的功能,比如最近上线的生成式UI-v0,有时间可以一起探索

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/616605.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RISC-V技术变革:一颗芯片,CPU与GPU合二为一

一颗万能的RISC-V芯片: 将CPU和GPU整合到一个核中 X-Silicon 推出创新的 RISC-V 芯片架构,将 CPU、矢量功能和 GPU 加速无缝集成。这种开源混合芯片专为多功能工作负载而设计,包括人工智能,旨在通过高效处理提升性能。 革命性的 CPU/GPU 混合处理器全新的 RISC-V CPU/GPU 混…

OpenAI CEO山姆·奥特曼推广新AI企业服务,直面微软竞争|TodayAI

近期&#xff0c;OpenAI的首席执行官山姆奥特曼在全球多地接待了来自《财富》500强公司的数百名高管&#xff0c;展示了公司最新的人工智能服务。在旧金山、纽约和伦敦的会议上&#xff0c;奥特曼及其团队向企业界领袖展示了OpenAI的企业级产品&#xff0c;并进行了与微软产品的…

【fastapi】搭建第一个fastapi后端项目

本篇文章介绍一下fastapi后端项目的搭建。其实没有什么好说的&#xff0c;按照官方教程来即可&#xff1a;https://fastapi.tiangolo.com/zh/ 安装依赖 这也是我觉得python项目的槽点之一。所有依赖都安装在本地&#xff0c;一旦在别人电脑上编写项目就又要安装一遍。很扯淡。…

我的新书,在西西弗书店上架了!

大家好&#xff0c;我是程序员小灰。今天告诉大家一个好消息&#xff0c;我的新书在西西弗书店上架了&#xff01; 熟悉小灰的朋友都知道&#xff0c;我以前是京东的一名程序员&#xff0c;现在全职投入到IT领域的自媒体创作。在2019年&#xff0c;我出版了人生中的第一本书《漫…

普乐蛙VR航天体验馆设备VR太空飞船VR元宇宙展厅

三天小长假就要来啦&#xff01;五一假期也即将到来。老板们想捉住人流量这个财富密码吗&#xff1f;那快快行动起来&#xff01;开启VR体验项目&#xff0c;假期赚翻天&#xff01;小编亲测&#xff01;&#xff01;这款设备刺激好玩&#xff0c;想必会吸引各位家长小孩、学生…

Android开发:Camera2+MediaRecorder录制视频后上传到阿里云VOD

文章目录 版权声明前言1.Camera1和Camera2的区别2.为什么选择Camera2&#xff1f; 一、应用Camera2MediaPlayer实现拍摄功能引入所需权限构建UI界面的XMLActivity中的代码部分 二、在上述界面录制结束后点击跳转新的界面进行视频播放构建播放界面部分的XMLActivity的代码上述代…

b站江科大stm32笔记(持续更新)

b站江科大stm32笔记&#xff08;持续更新&#xff09; 片上资源/外设引脚定义表启动配置推挽开漏oc/od 门漏极/集电极 电阻的上拉下拉输入捕获输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构PWMPSC ARR CRR输入捕获模式测频率TIM_PrescalerConfig()初始化输入捕获测频法…

在Windows中用命令行编译C项目

在Windows中可以用命令行编译C项目 官方指导文档&#xff1a; 演练&#xff1a;在命令行上编译 C 程序 | Microsoft Learn 在官方文档中可以看到&#xff0c;可以只安装VS的命令行工具集&#xff0c;如下图所示

MQ概览及Kafka详解

文章目录 概览MQ优点MQ缺点常见MQ对比JMS消息模型点对点模式发布订阅模式 kafka基础架构发布订阅工作流程生产者生产者文件存储生产者分区策略生产者数据可靠性保证生产者数据一致性保证生产者ack机制ExactlyOnce生产者发送消息流程 消费者消费者分区分配策略消费者消费数据问题…

标准更新丨美国发布玩具安全标准ASTM F963-23

2023年10月13日&#xff0c;美国材料试验协会 (ASTM)发布了玩具安全标准ASTM F963-23。新版标准主要修订了声响、电池可触及性、膨胀材料和弹射玩具的技术要求&#xff0c;另外&#xff0c;澄清和调整了邻苯二甲酸酯、玩具基材重金属的豁免以及溯源标签的要求&#xff0c;使其保…

自动化测试中的SOLID原则

自动化测试在软件质量保障手段中愈显重要 。但是随着自动化测试代码的规模和复杂性不断扩大&#xff0c;它也很容易出现测试代码重复、紧耦合等问题。而SOLID原则可以解决这一问题&#xff0c;作为自动化用例开发的指导原则。 探索SOLID原则 SOLID原则是一组指导软件开发人员…

AI PC元年,华为的一张航海图、一艘渡轮和一张船票

今天&#xff0c;从学术研究者到产业投资者&#xff0c;无不认为大模型掀起了一场人工智能的完美风暴。 所谓“完美风暴”&#xff0c;指的是一项新技术的各个要素&#xff0c;以新的方式互相影响、彼此加强&#xff0c;组合在一起形成了摧枯拉朽般的力量。 而我们每个人&#…