Node.js:一种全新的JavaScript运行环境

发表时间: 2022-10-08 18:46

基本含义

Node.js是一个能够在服务器端运行JavaScript的开放源代码、是一个跨平台JavaScript运行环境。

node.js就是使用javascript编写,并且运行在服务器。

也就是说node.js实现了使用js来开发后端。

node.js把js的战场从浏览器转移到服务器,可以进行更多的操作。

用户请求和响应的过程:

在这里插入图片描述

产生原因

Node.js的产生原因要追溯到服务器的阻塞问题:

传统服务器每次产生一个请求,就对应着一个线程。

那么就有一个问题:请求的速度由用户决定,响应的速度也可以通过提升带宽等方法比较容易的提升速度。但是I/O的输入输出速度是比较难提升的。而每一个请求就会产生一个线程,数据请求又比较慢就会出现有很多线程再缓存中等待,就会造成大量的内存浪费。所以使用Node.js编写的服务器采用单线程模式,即不管产生多少请求就只有一个线程,这样就可以节省空间,大大降低了成本。

我们常说JS是单线程的,这也与它运行在nodejs上的有关。

nodejs特点

Node采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步模型等技术来提高性能,可优化应用程序的传输量和规模。

Nodejs是基于V8引擎,V8是Google发布的开源JavaScript引擎,本身就是用于Chrome浏览器的js解释部分,但是Ryan Dahl鬼才般地,把这个V8搬到了服务器上,用于做服务器的软件。

Node大部分基本模块都用JavaScript编写。在Node出现之前,JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。

Node.js的单线程是Node.js的一个最大的优点,但是同时也是它的缺点。

因为毕竟是单线程,如果请求太多会处理不过来的,所以我们一般情况下采用分布式的方法来弥补这个缺点。分布式是指采取多个服务器,node.js对服务器的要求不高,所以不必担心价格问题。

nodejs的用途

nodejs编写的就是服务器,所以服务器有的作用它都有,如:

Web服务API,比如REST

实时多人游戏

后端的Web服务,例如跨域、服务器端的请求

基于Web的应用

多客户端的通信,如即时通信

作为底层开发工具:

`node.js => webpack=> vue,recat脚手架开发方式

node.js的基本使用

node环境搭建

官网:https://nodejs.org/en/

中文官网:
http://nodejs.cn/download/

以官网为例:

在这里插入图片描述

点击下载:

下载完有一个.msi文件,双击进行安装即可。

在这里插入图片描述

如果安装.msi文件出现问题可以尝试在终端输入:

msiexec /package +msi文件路径+文件名.msi

查看node是否安装完成:

在任意文件夹目录按住shift键同时点击右键,出现了在此处打开PowerShell说明安装成功。

在这里插入图片描述

在这里插入图片描述也可以cmd在终端直接输入node,进行验证

在这里插入图片描述

node编写

终端编写

配置完成环境变量之后再终端输入node,就进入了node的编写:

在这里插入图片描述

js文件编写

node.js的第二种运行方式:

编写.js文件

在终端cd到文件的路径文件夹下

(也可以再文件的目录中输入cmd,回车,就可以快速进入对应位置的命令行:

在这里插入图片描述

)

输入 node 文件名,就可以运行相应的node代码了

eg:

hello.js

console.log("hello")

var a =123

var b =456

console.log(a+b)

1

2

3

4

在这里插入图片描述

在Vscode上使用node.js运行js代码

法一:终端运行

打开Vscode的终端

在终端输入:node 文件路径\文件名

在这里插入图片描述

法二:右键Run Code

右键Run Code即可运行代码

nodejs环境和浏览器环境的区别

浏览器环境:

在这里插入图片描述

Node环境:

在这里插入图片描述

node特点总结:

和浏览器相比node.js环境中是没有Dom和Bom的

出于安全问题考虑,浏览器不支持跨域请求和文件读写功能;

而Node.js没有安全限制可以直接访问到终端提供的很多的API方法:

所以可以直接操作文系统

进行进程管理(解决单线程问题,在node下可以创建多个进程)

可以进行跨域请求

————————————————

版权声明:本文为CSDN博主「_洋」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:
https://blog.csdn.net/mantou_riji/article/details/124987322