百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

一、nextjs 服务端渲染及环境搭建

off999 2025-02-10 13:53 15 浏览 0 评论

一、nextjs 服务端渲染及环境搭建

从今天开始,我们会出一系列的nextjs文章,助力您快速掌握这一前端框架的精髓。

我们知道,nextjs是基于react的服务端渲染的框架。所以必须要会 react

当然基于vue 的服务端渲染框架,也有,叫 nuxt,现在已经出了nuxt3了。

这个我们以后会讲,因为 www.helloworld.net 就是基于nuxt框架开发的。

只不过 nuxt2 升级到nuxt3, 时间并不算太长

更新还是很频繁的,所以打算晚点写nuxt3的文章。

什么是服务端渲染?

服务端渲染,也叫 SSR ,不是啥新技术,可以说最开始都是SSR。

10年前的PHP,JSP, ASP 的套模板技术,就是服务端渲染。

  • 为什么以前没有听过服务端渲染 这个词呢?

那是因为以前只有 服务端渲染 ,天天在用,就没有这个概念。

  • 现在什么强调这个词了呢?还起了个缩写叫 SSR

那是因为自从 vue, react 等这类框架出来以后,写网页的方式发生了变化

再具体点就是中心发生了变化。

以前怎么写?

以前写网页,是以 html, css 标签为中心,在一个html文件中,写一堆的 html标签, css样式

浏览器请求的时候,把这个html文件发送给浏览器 ,浏览器渲染出来。

现在怎么写?

现在写网页,是以 JS 为中心,以vue, react 这两个框架为代表,主要是写一堆的 JS ,

用vue, react写的项目,编译打包成了一堆的 js

浏览器请求的时候,实际上是请求了一个空的html文件 ,但是这个空的html文件,

会请求js 文件并执行 js 文件 , js文件执行完以后,就会生成一个完整的网页了,也就是一堆的html,css

是 浏览器执行JS 文件,动态生成的dom树,说白了就是动态生成了一堆的html标签 和css样式。

这就是客户端渲染 ,也起一个洋气的名字叫:CSR

现在的SSR和以前的有啥不一样?

10年前SSR怎么写?

其实就一句话:套模板 。

我们知道,10年前,套模板的技术,各家都有,JSP, PHP等,那时候,只是在PHP文件中,JSP文件中

写html标签,引入css文件等,里面再掺杂一些PHP代码,JAVA代码。主要就是为了一些动态数据需要,

因为要显示的数据,在数据库嘛,这些PHP代码,JAVA代码,就是干这事的,获取数据并把数据塞到模板里面来。

现在的SSR怎么写呢?

现在都是用vue, react这样的JS框架写,编译出来是 JS 文件,浏览器下载并执行JS文件,从成生成html文件 。这叫客户端渲染。

那么对应的服务端渲染就是在服务端这块,直接执行JS,生成html文件,然后再把html文件发送到服务端

总结:

和以前比还是有一些差别的。

现在的SSR,是在服务端执行JS文件生成html文件,获取数据就请求接口。

以前是套模板 ,执行的是PHP代码或者JAVA代码。

一句话总结, 服务端渲染和客户端渲染的区别 ?

html文件,是在服务端生成还是在客户端生成

解释:

  • 服务端渲染:html文件是在服务端生成,并且html文件中有已经写好的html标签和css样式
  • 客户端渲染:html文件是在客户端(浏览器 )生成,具体就是浏览器执行JS,生成一堆的html标签和css样式。

服务端渲染有什么好处?

  • SEO 需要, 这是最大的好处
  • 加载速度快

其实我最关注的就是 SEO ,因为主要解决的就是SEO问题。

而且 www.helloworld.net 也是要解决SEO问题,当时用了nuxt框架

这个框架我们以后再写相应的文章,这个大家可以关注一下。

谁来充当这个生成html文件的服务器呢?

这是一个很多人容易忽略的问题,之前我们公司也有遇到过。

之前我们公司有一个规定,线上服务器,不能跑node 。

可能是觉得 node 写服务,内部用用还行,真到线上,感觉还是不放心。

于是当时前端,后端的同学都在找相应的解决方案, Java , go 相关的方案都找过了。

就是在Java或者go 写的服务里面,内置一个 js 解析器。

搞了半天,这不还是需要JS引擎嘛,不管是v8也好还是其它的也好。

掩耳盗铃,还是离不开JS,想执行JS,除了浏览器 ,就是node了,还是离不开node啊。

最后又老老实实的换成了node,也就是nextjs 来做。至于规定嘛,还给领导了。

所以,在服务端充当生成html文件的服务,是用node写的,是node 服务

所以你的网站以后很可能是这样:

浏览器发起请求 --> 请求打到 nginx 服务器 --> 转到到 node 服务器 --> 请求接口服务器 --> 生成html --> 返回给浏览器

如下图:

回到正题 ,nextjs 环境搭建

首先是官网:一定要看官方文档

https://nextjs.org/

对环境的要求:

  • node 18.17 以上
  • macOS, windows, linux都可以。

安装完node,可以直接在命令行中执行以下命令:

第一步:执行以下命令

npx create-next-app@latest

1

输出以下,第一次可以全部选择默认选项

What is your project named? my-app
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
What import alias would you like configured? @/*

第二步:yarn install

切换到项目目录下,执行

yarn 或者 yarn install 

1

第三步:yarn dev

yarn dev

1

过几秒,你就会看到如下输出了。

浏览器中访问 : http://localhost:3000

就可以访问你的项目了。你的项目就成功的跑起来了。

总结:

本次只是照着官网把项目跑起来即可,nextjs 给我们提供了非常多的好用的功能 。

下一篇我们讲讲 nextjs 的路由功能,相比于react的,nextjs的路由非常好用和灵活。

如果你喜欢,持续关注,后续的文章。

相关推荐

Python变量类型判断方法详解(python怎么判断变量名合不合法)

技术背景在Python编程中,变量类型的判断是一项基础且重要的操作。由于Python是动态类型语言,变量的类型在运行时才能确定,因此在开发过程中,我们常常需要明确变量的类型,以便进行相应的操作。同时,...

如何确定Python变量的类型(python指定变量类型)

技术背景在Python编程中,变量是动态类型的,即变量在使用过程中可以被赋予不同类型的值。这在带来灵活性的同时,也可能导致在某些情况下需要明确变量的具体类型。例如,在进行数据处理、类型转换或错误检查时...

Python 中检查类型的标准方法(python检查函数)

在Python的编程世界里,我们常常会遇到需要检查变量类型的情况。在StackOverflow上有一个热门问题“What'sthecanonicalwaytocheck...

Python中确定对象类型的方法(python中确定对象类型的方法有哪些)

技术背景在Python编程中,有时候需要确定一个变量的类型,例如判断一个变量是列表、字典还是其他类型。了解对象的类型有助于进行条件判断、错误处理以及编写通用的代码。Python提供了多种方法来实现这一...

Python 中的类型检查(python类型检查函数)

Python是一种解释型、交互式和面向对象的编程语言。它支持动态类型,具有非常高级的动态数据类型。动态数据类型使得开发者能够专注于实际程序,而不是在编写代码时花费时间和精力去指定数据类型。Pytho...

Python从入门到放弃-详解列表、元组和字典

什么是列表?列表是在Python中一种常见的数据存储结构,它可以用来存储不同类型的数据。与其他开发语言不同的是Python中的列表中可以存储各种类型的数据,而不是只能用来存储一种类型的数据,如下所示l...

现代化python字典合并的技巧(python字典怎么合并)

现代Python字典合并:使用|运算符在Python3.9之前,有两种常见的合并字典的方法:使用update方法或**运算符。然而,这两种方法都有其缺点。在本文中,我们将探讨Python中合并字典的...

三种常用方法合并 Python 字典,你学会了吗?

在使用Python字典时,你有时需要将多个字典合并成一个,以便后续处理。本教程将介绍三种常见的Python字典合并方法。我们将重点学习以下三种方式:使用update()方法字典解包并集运算...

23-Python-第三方库Json(python第三方库代码大全)

1-json库的使用`json`库是Python标准库的一部分,用于处理JSON数据。它提供了`loads`、`dumps`等方法。安装三方库pipinstalljson1-1-将JSON字符串解...

Python中复制字典并仅修改副本的方法

技术背景在Python编程中,当我们想要复制一个字典并对副本进行修改,而不影响原始字典时,可能会遇到一些问题。直接使用赋值语句dict2=dict1并不能实现真正的复制,而是让dict2和...

Python 中的字典推导式(字典在python)

通过本文,你将了解有关Python字典推导式的所有信息,包括如何创建字典、使用条件语句(if-else语句)访问字典以及如何使用易于实现的步骤嵌套推导式!什么是字典Python中的字典是项目的...

python笔记17:字典推导式(python 字典的字典)

字典推导式'''#如:1,2,……10为键,平方为值dict_shu={}forimteinrange(1,11):dict_shu[imte]=imte**2print...

Python代码使用字典推导式(字典 python)

解释python代码:stoi={ch:ifori,chinenumerate(chars)}这段Python代码使用字典推导式创建了一个字符到索引的映射字典。具体解释如下:stoi=...

Python-中的词典 {_}(python字典用法大全)

字典是键值对的集合,其中每个键都链接到一个值(可以是数字、字符串、列表,甚至是另一个字典)。键和值用冒号分隔,每个键值对用逗号分隔,用大括号{}括起来。访问值:可以通过引用方括号内的键来检索值。a...

Python 开发工程师必会的 5 个文件操作库

在Python开发的世界里,文件操作是一项基础且高频的任务。从日常的数据处理到复杂的项目部署,熟练掌握文件操作库能让我们的开发工作事半功倍。本文和大家聊聊我眼中开发必备的5个文件操作库,它们各...

取消回复欢迎 发表评论: