node概念、特点及基本用法(入门进阶一)

1、简介

1.1  概念与特点

? node是js的服务器运行环境。运行环境有两层含义:

1>   js通过node在服务器运行,这个意义上,node有点像js虚拟机。(没有浏览器安全级别的限制,没有跨域之类的问题—因其运行在服务器端)。

2>  node提供大量工具库,使js可以与操作系统互动(如读写文件、进程的管理、网络通信(HTTP模块)),这个意义上,node又是js的工具库。

3>  采用Google的V8引擎作为js的语言解释器,通过自行开发的libuv库,调用操作系统资源。

4>   基于commonJS规范。

5>   使用了一个事件驱动、非阻塞式I/O的模型,轻量又高效。

6>   它的包管理工具npm,是全球最大的开源库。

7>   解决高并发的佼佼者(现在最快的是go语言)。

8>   天生支持ES6。

9>   没有BOM、DOM对象,即没有window、document。

10>   可以开发区块链。

11>   特别适合于提高前端访问性能方面的应用。

12>   不适合做高CPU方面的运算,对CPU的利用率低。

1.2、版本管理工具nvm

如果在一个机器上安装多个版本的node.js,就需要用到版本管理工具nvm

1.3、基本用法

1>   在命令行键入node,就进入node的REPL环境(Read–eval–print loop,”读取-求值-输出”循环),可以直接运行各种JavaScript命令。

$ node
> console.log(1);//进入node环境,类似于浏览器的控制台

$ node --use_strict //如果使用参数 –use_strict,则REPL将在严格模式下运行。

node **.js //运行js文件,后面的文件可用tab键切换(nodemon  **.js)
//**.js中的代码改变时,要先在命令行重新运行,再在浏览器刷新才能看到最新结果

//常用几个快捷键
shift+右键 : 打开命令行
ctrl+c : 退出当前终端
ctrl+c按下两次/ctrl+d : 退出Node REPL。
向上/向下键 : 查看输入的历史命令
tab键/.help : 列出当前命令
.break/.clear : 退出多行表达式
.save filename : 保存当前的 Node REPL 会话到指定文件
.load filename : 载入当前 Node REPL 会话的文件内容
cls : 清屏

2>   特殊变量下划线(_)表示上一个命令的返回结果。

> 1 + 1
2
> _ + 1
3

3>  输入多行表达式时,系统会自动生成"..."三个点的符号,你回车换行后即可。Node 会自动检测是否为连续的表达式。

> do {
... x++;
... console.log("x: " + x);
... } while ( x < 5 );
x: 1
x: 2
x: 3
x: 4
x: 5
undefined
>

4>  如果运行一个表达式,会直接在命令行返回结果。如果运行一条语句,就不会有任何输出,因为语句没有返回值。

> x = 1
1
> var x = 1

1.4、全局对象和全局变量

1> 全局对象

global 表示Node所在的全局环境,类似于浏览器的window对象。需要注意的是,如果在浏览器中声明一个全局变量,实际上是声明了一个全局对象的属性,比如var x = 1等同于设置window.x = 1,但是Node不是这样,至少在模块中不是这样(REPL环境的行为与浏览器一致)。在模块文件中,声明var x = 1,该变量不是global对象的属性,global.x等于undefined。这是因为模块的全局变量都是该模块私有的,其他模块无法取到。
process 该对象表示Node所处的当前进程,允许开发者与该进程互动
console 指向Node内置的console模块,提供命令行环境中的标准输入、标准输出功能
var a = 1;
console.log(window.a); //1
//浏览器端的解析结果,var x = 1等同于设置window.x = 1

2>  全局函数

setTimeout() 用于在指定毫秒之后,运行回调函数。实际的调用间隔,还取决于系统因素。间隔的毫秒数在1毫秒到2,147,483,647毫秒(约24.8天)之间。如果超过这个范围,会被自动改为1毫秒。该方法返回一个整数,代表这个新建定时器的编号。
clearTimeout() 用于终止一个setTimeout方法新建的定时器
setInterval() 用于每隔一定毫秒调用回调函数。由于系统因素,可能无法保证每次调用之间正好间隔指定的毫秒数,但只会多于这个间隔,而不会少于它。指定的毫秒数必须是1到2,147,483,647(大约24.8天)之间的整数,如果超过这个范围,会被自动改为1毫秒。该方法返回一个整数,代表这个新建定时器的编号。
clearInterval() 终止一个用setInterval方法新建的定时器
require() 用于加载模块
Buffer() 用于操作二进制数据

3>  全局变量(都以两个下划线开头

__filename 当前正在执行的脚本的文件名
__dirname 当前执行脚本所在的目录

4>  局部变量(伪全局变量)

除此之外,还有一些对象实际上是模块内部的局部变量,指向的对象根据模块不同而不同,但是所有模块都适用,可以看作是伪全局变量,主要为module、module.exports、exports等。

 

 

 

你可能感兴趣的:(node)