开发者学堂课程【Node.js 入门与实战:node.js 开发网站和传统PHP等开发网站的区别】学习笔记,与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/588/detail/8246
node.js 开发网站和传统PHP等开发网站的区别
目录
一、 传统模式开发web应用程序
二、 Node.js开发web应用程序
三、 总结
一、传统模式开发web应用程序
通过 node.js 和传统的 PHP,ASP 等模式都可以开发网站。 node.js 开发网站和 PHP、Java、ASP.net 等传统模式开发网站应用程序的区别如下:
传统的网站开发首先必须有一个 web 容器,比如 apache服务器,而通过 node.js 开发网站不需 要 web 容器,因为 node.js本身就可以创建一个 http 服务器,它本身就是一个 http 服务器。
这幅图是传统的网站开发,左边是浏览器,右边是服务器,服务器是一台计算机,左边浏览器向服务器的域名某个端口8080发起了请求,服务器会出现很多进程,其中有一个进程是 Apache 进程。在下图中,进程2是web容器,web服务器进程。
Apache 外部服务器,外部容器安装在服务器计算机上,并且Apache默认监听8080端口,当浏览器请求服务器8080端口时,服务器收到浏览器请求,然后服务器检查自身进程中哪个进程正在监听8080端口。
服务器检查到Apache正在监听8080端口,请求就被交给 Apache 服务器,之后,Apache 服务器判断用户,把用户请求报文解析,根据用户请求作出一些处理。
比如判断请求是静态资源,例如 html 网页,css 图片,Apache 服务器会直接去磁盘上找到对应的文件,并且读取这个文件,读取到之后,会把内容直接响应给浏览器,然后浏览器就可以显示网页或者图片。
如果用户请求,8080端口不是静态资源,例如请求的是A.PHP动态网页,同样,请求到之后,根据端口号,服务器把请求交给 Apache 服务器 web 容器,Apache 服务器把 A.PHP 代码扔到一个 PHP 模块中,把 A.PHP 中的所有代码执行一遍。
执行完毕以后会生成一个结果比如生成一个 html 网页。把生成的结果再返回给 Apache 服务器,然后 Apache 服务器把生成的结果再返回给浏览器,浏览器就可以看到请求 A.PHP 页面的最终结果。在刚才的 PHP 开发网站过程中,核心的东西是 Apache 服务器,web 容器,可能是 Apache 服务器,IIS 服务器,Tomcat 服务器等等都被称为 web 容器。
它们的作用是监听用户的请求,并且根据不同的请求作出不同的处理,静态资源直接读取,动态资源交给对应的 PHP 模块处理。
这是传统的 web 网站开发方式,必须有 web 容器,比如是 Apache 服务器
二、Node.js开发web应用程序
对于 node.js 开发不同的是:
核心区别是使用 node.js 开发网站不需要 web容器,不需要 Apache 服务器。因为 node.js 本身就是基于更底层的 HTTP 协议开始的,它本身就是一个 HTTP 服务器,不需要 web 容器。
过程是,左边是一个浏览器,右边是一个服务器计算机,在右边计算机上安装 node.js 应用程序,安装好 node.js 以后,要启动网站,相当于启动 node.js文件,比如使 node.js 进程监听8080端口,因为没有 web 容器,没有 Apache,所有 node.js 本身就在监听8080端口。
当他在监听8080端口时,浏览器向服务器8080端口发起请求,然后服务器收到一个请求,是请求8080端口,计算机上拥有很多进程,发现是 node.js 进程在监听8080端口,然后它就把请求直接交给 node.js 进程来处理。
node.js 接到请求,无论是请求静态资源还是请求动态资源,都是 node.js 中由人工编写代码处理请求。
如果用Apache 服务器,有一部分静态资源,Apache 服务器会帮助处理,但是使用 node.js 任何一个请求都必须人工亲自书写代码来处理。
这就是传统模式与node.js的核心区别。
但是,使用 node.js 开发网站需要自己编写代码会导致效率低,所以在 npm 上已经写好,就是一个 web 开发框架,当使用这些 web 开发框架,开发网站的速度并不会降低。
三、总结
node.js 开发网站和传统模式开发网站核心的区别
第一:传统模式开发 web 应用程序,有 web 容器,只需要在web 容器中写对应的动态页面。而通过 node.js 开发web 应用程序,不需要 web 容器,node.js 本身就是一个 http 服务器。
第二、node.js 开发web 应用程序每一个请求过来以后都需要自己写代码处理,如果不写代码处理。那么请求就无法处理。