在学习Node.js
时,发现一处课程通过介绍网站开发来引入Node.js
的思路很有意思,在此将整个过程以自己的理解记录了下来,供大家学习交流😀😀😀
前端和后端
众所周知,前端程序yuan通常写的是浏览器相关的bug,后端程序yuan写的则是服务器和数据库相关的bug👨🦳
上面提到的服务器,同样众所周知,可以简单理解为一台连网的提供某种特定服务的电脑,所以对于Web
服务器来说,它具备的功能如下:
- 首先,存储文件的功能,比如
.html
,.css
,.js
文件 - 其次,与浏览器通信的功能,能接收浏览器发送的请求,并提供响应,这个功能由
HTTP Server
提供 - 以上两个功能就构成了静态服务器,为浏览器提供静态资源,如果想要提供动态资源,就需要用到数据库和
App Server
静态网站
对静态网站来说,最初上传的时候网站是什么样,此后就一直是什么样,不会发生任何变化。
Web
服务器此时就是一个静态服务器,它将网站渲染需要的文件直接发送给浏览器,而浏览器也原封不动地将这些文件渲染出来。
动态网站
对动态网站来说,浏览器会根据用户的操作或者数据库的变化随时更改页面展示的内容。
动态网站渲染文件的获取通常需要数据库以及从数据库获取数据的应用程序,每当从浏览器发送一个请求到服务器时,应用程序会先从数据库中获取需要的数据,然后服务器会将数据丢到模板(jsp
,php
等)中生成.html
,.css
,.js
文件,然后返回给浏览器。以上过程也被称为服务端渲染,因为渲染页面所需要的文件在服务端就组装好了。
但上述的服务端渲染存在几个问题。首先,代码会变得非常复杂,需要兼容各种运行情况,而且逻辑混杂,难以维护;其次,每次页面需要有变化,都得重新获取数据,然后再基于模板去组装;再有,对前端开发人员不太友好,如果想要开发页面,需要去了解PHP
和Java
等前端开发本身用不到的语言
于是,客户端渲染应运而生:
在客户端渲染的模式中,服务器只提供API
(Application Programming Interface,即应用程序接口)来返回数据,通常是JSON
格式,而不是像服务端渲染那样返回需要展示的完整页面,浏览器接收到数据之后,同样会通过模板来生成页面,通常是使用Vue
、React
之类的前端框架,渲染页面的过程就来到了客户端。
但是与服务端渲染相比,客户端渲染有两个突出的缺点:一个是不利于SEO
(Search Engine Optimazition,即搜索引擎优化);另一个是不利于首屏渲染,增加了白屏时间
Node.js 的角色
那么Node.js
在上面那些过程中究竟扮演了什么样的角色,可以说从服务端到客户端,Node.js
都有用武之地:
我们可以使用Node.js
来编写API
,提供数据访问的接口;也可以使用它来写一个动态服务器,去实现服务端渲染。除了本文中涉及的,Node.js
可以做的远远不止于此,感兴趣的可以进一步看一下2021年 Node.js 开发者调查报告。
最后
整理了一套《前端大厂面试宝典》,包含了HTML、CSS、JavaScript、HTTP、TCP协议、浏览器、VUE、React、数据结构和算法,一共201道面试题,并对每个问题作出了回答和解析。
有需要的小伙伴,可以点击文末卡片领取这份文档,无偿分享
部分文档展示:
文章篇幅有限,后面的内容就不一一展示了
有需要的小伙伴,可以点下方卡片免费领取