当前位置: 首页 > 后端技术 > Node.js

Next.js入门系列(一)——你好Next.js!

时间:2023-04-03 17:37:34 Node.js

写在前面说实话,个人觉得写的越来越好了。之前的文章都是到天黑的一个问题,文章写的有点乱,因为文章太大,一口气做不完,思路有时候很混乱。所以我也准备开始写系列文章了,哈哈,试试看吧~系列文章的好处就是每次讲一个点,力求详细一点。希望大家多多指教~Next.js入门系列(一)HelloNext。js(2)AddAntd&&CSS陆续更新...笔者小白的技术栈目前主要是react,全家桶里几乎都用到了react、react-router、redux等。最近,我想解决服务器端渲染(SSR)的问题。说到服务端渲染,一大堆繁琐的webpack配置,后端路由配置等等让我头大又烦。我不太喜欢新事物。可能每个人学习的方式不同。我喜欢先用一个东西,理解了之后再去研究它的原理。那么,有没有类似一键配置或者傻瓜配置的服务呢?端侧渲染框架的脚手架呢?带着这个概念,百度了一下——Next.js。很喜欢create-react-app这个脚手架,但是官方明确表示目前不支持服务端渲染,只好作罢。其实基于这个脚手架,也是可以配置的,不过我还是先做一个能用的,等回来再补上。自己配置吧~服务端渲染先说服务端渲染。现在的项目确实是服务端渲染,但是我没有搭建。我个人写的一些东西不是服务端渲染,所以下面的结论是经过很多文章总结出来的。具体文章如下。知识是用来分享和学习的。学完了,就是我的啦~哈哈客户端最原始的前端渲染,页面在浏览器中获取JavaScript和CSS等,文件渲染完成后,完全在客户端(即浏览器),路由是客户端路由,现在大部分的SPA单页应用都是这种。server-rendered页面由服务器渲染,直接返回html页面给前端。url的变化会刷新整个页面,也就是之前的php和jsp方式同构的高端word万能APP。为什么要同构呢?有个缺点就是首屏加载文件太大或者文件太多会变得很慢,所以可以在客户端渲染首屏来提高首屏速度。第一屏加载完成后,道路开始交给客户端,并变成了一个SPA应用,整个代码都是用JavaScript写的,服务端使用的是nodejs。Next.js关于Next.js,我BB不多。这篇文章是我写的,也是我第一次接触Next.js,所以叫做矿坑入门。有兴趣的可以去官网学习。很不错详细--->Next.js创建一个Nextjs应用来学习编程。我们都知道入门系列是helloworld。在这里我觉得next.js还是比较友好的,因为它真的省去了我们平时理解的server端渲染的各种复杂配置,只需简单的几步就可以创建一个新的UniversalApp。第一步是安装依赖项。好吧,你只需要创建一个新文件夹,然后运行以下命令//初始化应用程序yarninit//安装三个依赖项yarnaddreactreact-domnext//package.jsonconfigurationstart{...//添加新的启动方式,选择使用next启动"script":{"dev":"next"}...}OK,基于next的服务器搭建就完成了,是不是很简单?接下来我们运行yarndev。什么?报告错误。嗯,原来Next.js默认从pages目录下取页面,渲染返回给前端显示,默认将pages/index.js作为系统的首页进行显示。因此,我们需要新建一个pages目录。接下来,再次尝试重新启动。第二步,新建pages文件夹和文件,因为3000经常被别的项目使用,所以我把启动端口改成3006,修改脚本启动方式即可:"script":{"dev":"next-p3006"}然后我们访问http://localhost:3006:ok,得到了一个非常简洁的页面。公平地说,我非常喜欢这个简洁的页面。为什么是404?原来我们只是新建了一个pages目录。刚才说了,它的默认根路由页面是pages下的index.js,所以我们新建一个index.js。constHome=()=>(

我是Next的首页

);导出默认主页;ok,现在没有问题了。因为next.js默认开启服务端渲染,我们不需要任何配置,所以现在这个极其简单的应用就是一个UniversalReactAPP。从页面元素我们也可以看出:第三步Next.js看到这里,新手朋友应该和我一样感叹Next.js的强大,同时也有一个疑问,等一下,为什么会渲染?你没有任何路由根据配置显示首页。一般的SPA至少会配置跳转到页面的路由。这里没有配置路由。主页出来的时候我还有其他页面。我应该怎么办?原来这些东西都是Next帮我们配置的。刚才说了Next.js默认匹配pages目录的index.js为根路径/,其他路径也按照文件名匹配。而我们的各种路由跳转也不再依赖react-router而是next.js为我们封装了路由(其实redux也是,后面会提到)。/pages/index.js页面---->/importReact,{Fragment}from'react';从“下一个/链接”导入链接;constHome=()=>(

我是下一个首页

用户列表页
);exportdefaultHome;/pages/userList.js---->/userListconstUserList=()=>(

我是用户列表页

);导出默认用户列表;小弟厉害了,不仅跳转成功了,还给我们打包了相应的history,Backing也正常,可以看到我们在前端或者node端都不需要配置任何路由相关的,我们只需要根据它的模板编写即可。而且前端页面的跳转也是没有刷新的~不过萝卜白菜各有所爱。虽然个人觉得很强大,但是看不到路由还是感觉怪怪的,而且写法也变了,就是路由必须在pages路径下,项目做大了会不会很混乱,页面和路由集成在一起怎么办?肯定不是,我们以后再探讨。代码地址参考文章Server-siderenderingandUniversalReactAppD2-打造高可靠高性能的React同构方案