什么是 Next.js?

166 阅读3分钟

在传统web开发中,前端和后端经历了合并,分离,再合并的不同阶段。与之前的合并不同的是,这次合并是基于JavaScript,而非之前的Php、Java、C#、Ruby等。表面上是历史在重演,实则完全不同,随着JavaScript的加入(服务端支持JavaScript运行),让整站开发变得越来越简单,小型的网站,一个人足以轻松完成。 React简介 React是一个前端构建用户界面的一个工具,在客户端,React的组件化开发和DOM高效渲染方法极大的提升了开发效率。但React只限于构建UI界面,它不关心后端数据的处理、路由、存储、SEO等问题。

Next.js简介 Next.js是基于React的一个增量全栈框架,不仅包含React的前端所有功能,而且还支持使用React来构建后端代码。使用Next.js,可以用于构建全栈web应用程序,可以使用React构建用户界面,也可以用来配置路由、编写接口等之前需要后端配合才能完成的功能。

Next.js同时支持客户端渲染和服务端渲染,选择使用服务端渲染,不用再担心SEO的问题,对搜索引擎非常友好,还能提升首屏加载时间。

image.png

Next.js有丰富的生态,许多第三方库都支持在Next.js中直接使用,如MUI,TailwindCSS,shadcnUI,GraphQL等。

Next.js集成了CLI工具,支持编译代码,压缩代码,自动化代码分割,代码加密,热更新,错误报告等功能,可以零配置直接使用,修改方法和webpack大同小异,很多参数甚至可以复制过来直接使用。

Next.js易于学习和使用,如果你之前使用过React,那么next.js可以直接上手使用。如果不熟悉React,也能在很短的时间学会使用。

使用Next.js开发的项目,部署也同样简洁,官方的Vercel和cloudflare以及docker都支持Next.js,配置好github和环境,代码推送后即可自动将代码部署至云端生产环境。

Next.js也支持TypeScript,在项目中可以直接 使用.ts或.tsx文件,通过使用TypeScript,可以更好的做类型检查。

使用Next.js可以直接定义接口,再也不需要去求后端写接口了,定义好后可以直接通过“/pages/api/test”获取数据。

// pages/api/test.js
export default function handler(req, res) {
    res.status(200).json({ message: 'Hello, Tom.' });
}

还有哪些全栈框架

基于JavaScript的全栈框架有好几种,如Next.jsRemixGatsbyNuxt等,这其中,Next.js是使用人数最多,也是生态最好的一个框架。

Remix也是基于React.js,功能和Next.js并没有太大区别,但Remix可能更偏向于提升项目性能,增加了一些限制,没有Next.js灵活。

Gatsby同样也是基于React.js,但Gatsby主要着重于静态站点生成(SSG),更偏向于静态站点的构建,如果需要创建博客、个人网站等更新频率较低的场景,可以选择使用。

Nuxt是基于Vue.js的全栈框架,基本Next.js的功能,Nuxt.js都有相对应的,只是不支持增量静态再生(ISR),Nuxt还默认集成了Vuex状态管理。因此,如果更喜欢和熟悉Vue.js,那么选择Nuxt也可以。

在github上Next.js的star数是12万7千多,Remix的star数是3万左右,Gatsby的star数是5万左右,Nuxt的star数是5.5万左右。

image.png image.png image.png image.png