[关闭]
@Wangww0925 2019-08-07T08:03:55.000000Z 字数 3068 阅读 213

了解NodeJs

NodeJs


再讲nodejs之前我们先了解下浏览器和服务器各自的特点

浏览器的特点:发送请求 接受请求 处理请求(渲染页面)

服务器的特点:接受请求 处理请求(操作数据库) 响应请求

什么是NodeJs?

NodeJs不是一门编程语言,是一个javascript的运行环境,NodeJs是采用C++语言编写而成的一个javascript的解释器

什么是运行环境?

通俗讲指一种语言想要实现相关的功能需要另外一种事物(可以使语言也可以是其他的东西)作为它的载体或这运行平台。
在客户端,javascript想要实现某种功能是需要浏览器提供支持,如果没有浏览器提供支持是完成不了的。
操作系统的运行环境,就是电脑硬件本身,如果连电脑都没有,那么操作系统无法运行。

为什么NodeJs是javascript的运行环境?

因为NodeJs采用的是Google Chrome浏览器的V8引擎,而V8引擎就是Javascript的运行环境,但是NodeJs是服务器端的运行环境

image_1d1sbb42a1oq11t3hss1ale2kb9.png-180.5kB

我怎么知道某个特定版本的 Node.js 发布是随着哪个版本的 V8 引擎呢?

Node.js 提供了一个简单的方法以列出所有依赖项,以及通过 process 全局对象,借助特定的二进制包发布的不同版本。由于是 V8 引擎,在你的终端输入以下命令就可以获取相关版本号:

  1. node -p process.versions.v8

服务器端的语言特点:

nodeJs的特点:

以上总结

Node.js 就是运行在服务端的JavaScript
Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台
Node.js 是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好

什么是事件驱动?

事件:在客户端js中有 点击按钮事件/鼠标事件/键盘事件等都叫做事件
事件驱动:有鼠标或者键盘引起一连串的操作动作叫做事件驱动
简单理解:通常事件驱动会伴随着相对应的程序处理或者函数的执行

Nodejs的有哪些事件驱动?

什么是非阻塞I/O ?

I/O : input/output 输入输出

对于磁盘 I/O = 读写  
对于网络 I/O = 收发请求

阻塞I/O:

指在执行I/O的过程时候,会阻塞其他应用程序的进行,只有等待这个I/O完成后,才会进行其他的操作

非阻塞I/O:

指在执行I/O的过程时候,不会等待其应用程序执行完成后在执行其他应用程序,当I/O结束后,在回头处理这个结果。 即异步

单线程与多线程

单线程:

程序按照逻辑顺序执行,前面的必须处理完成,后面的才会执行,即在同一个时间里面只能做一件事情。如:你在点击按钮出现弹窗的时候,就不可以对浏览器做出其他的相应操作

多线程:

程序在一个时间里面可以做多个事情,能够提高效率,例如迅雷同时下载多个小电影

javascript 是一门单线程语言,为什么javascript不能是多线程?

javascript作为单线程,由其内容所决定,在浏览器环境中,JavaScript的主要用操作DOM。如果JavaScript同时有两个线程,一个线程在某个DOM节点上添加内容,另一个线程删除了这个节点,这个时候没法搞?

既然javascript是单线程,那么为什么nodejs会有非阻塞I/O?

I/O操作都是比较耗时的,这个会阻塞其他的任务进行,javascript的设计者认为,没有必要等待I/O的完成,在I/O任务完成之前javascript完全可以继续执行其他的任务,直到I/O任务完成后再回头执行该任务的返回就行。所以javascript在设计之初中将这些耗时的I/O等操作封装为了异步的方法,等到这些任务完成后就将后续的处理操作封装为JavaScript任务放入执行任务队列中,等待JavaScript线程空闲的时候被执行   

Nodejs端的javascript和浏览器端的javascript的相同点和不同点

相同点:基本语法、数据类型相同

  1. 声明变量、函数
  2. 数值、字符串、对象、数组、函数、布尔、undefined
  3. 不同的数据类型的属性和方法

不同点:全局对象不同

  1. 浏览器端:window
  2. NodeJsglobal

PS:因为js的运行环境不同,所以两者的全局对象下的属性和方法基本上都是不同的(即window下的属性和方法在nodejs中没有,global中的属性和方法在浏览器端也是没有的)


NodeJs的安装

1、在 https://nodejs.org/en/download/ 官网中进行下载

不需要配置环境变量,安装过程中已经自动完成环境变量的安装。
什么叫做环境变量: 就是在系统的任何目录下,都能运行c:\program files\nodejs里面的程序。

2、安装完成后,在windows环境下打开命令提示符,检测是否安装成功

如果安装成功,会显示想对应的node版本号

  1. node -v

查看Node.js的包管理工具npm的版本工具

  1. npm -v

3、进入nodejs的repl交互环境

cmd键入node 回车 代表进入了交互环境可以进行类似浏览器console控制台的操作

在nodejs的 安装目录 中找到 nodejs.exe 双击打开 也是进入了repl交互环境

4、退出nodejs

连续两次ctrl + c 即可


node 创建一个简单的应用

例子: 脚本模式

demo.js 文件

  1. console.log("aaaa")

node 执行: cmd需要指定到当前文件目录

  1. node demo.js

例子: 交互模式

打开cmd,键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果,例如:

  1. $ node
  2. > console.log('Hello World!');
  3. Hello World!

注意

如果想修改程序,必须中断当前运行的服务器,重新node一次,并刷新页面,才行。

重新node: `ctrl + c 两次` 打断挂起的服务器程序,此时按 `上箭头` ,能够快速调用最近的node命令。

作者 wendy
2019 年 1月 21日

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注