Node 就是Javascript在服务器端运行环境,javascript语言通过Node在服务器上运行,Node有点像javascript虚拟机
其次,Node提供了大量的工具库,使得javascript语言与操作系统互动(文件读写,新建子进程),由此node又是javascript的工具库.
NVM(Node Version Manager)Node版本管理工具,之后的开发工作需要在多个Node版本中进行测试
安装操作步骤
- 下载:nvm-windows
- 解压到一个全英文路径
-
编辑解压目录下的
settings.txt
文件(不存在则新建)root 配置为当前 nvm.exe 所在目录
path 配置为 node 快捷方式所在的目录
arch 配置为当前操作系统的位数(32/64)
proxy 不用配置
-
配置环境变量 可以通过 window+r : sysdm.cpl
NVM_HOME = 当前 nvm.exe 所在目录
NVM_SYMLINK = node 快捷方式所在的目录
PATH += %NVM_HOME%;%NVM_SYMLINK%;
- 打开CMD通过
set [name]
命令查看环境变量是否配置成功 - PowerShell中是通过
dir env:[name]
命令
-
NVM使用说明:
- https://github.com/coreybutler/nvm-windows/
-
NPM的目录之后使用再配置
1.node中全局作用域及全局对象和函数
1.1node基本命令
1.2REPL环境:read Eval Print Loop交互式的运行环境,接收用户输入,执行用户输入,打印执行结果到控制台,循环到下一次,(类似Chrome Developer Tools)
1.3全局对象
global:类似于javascript运行环境中的window
process:用于获取当前的Node进程信息,一般用于获取环境变量等信息
console:node中内置的console模块,提供操作控制台的输入输出功能
1.4全局变量
1.5全局函数
setInterval(callback,millisecond)
clearInterval(timer)
setTimeout(callback,millisecond)
Buffer:class 用于操作二进制
1.6异步操作之回调函数
2.node调试
Node原生调试 https://nodejs.org/api/debugger.html
第三方模块提供的调试工具
-$ npm install node-inspector -g
-$ npm install devtool -g
开发工具调试
Visual Studio Code
Webstrom
3.异步操作
Node采用ChromeV8处理引擎处理Javascript脚本,V8最大的特点就是单线程,一次只能
运行一个任务.
node大量采用异步操作(asynchromous operation),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行.????插在队列尾部 这不也是要一个个执行吗???
提高代码的响应能力.
Node所有会阻塞执行的代码都是异步的.
3.回调函数的设计
对于一个函数如果需要定义回调函数
回调函数一定作为参数的最后一个参数出现
function foo1(name,age,callback){}
function foo2(value,callback1,callback2){}
回调函数的第一个参数默认接收错误信息,第二个参数才是真正的回调数据(便于外界获取调用错误的情况)
foo1('zhangsan',18,function(error,data)){
if(error) throw error;
console.log(data);
}
4.node约定
错误优先:因为之后的操作大多数是异步的方式,无法通过try catch捕获异常
错误优先的回调函数 第一个参数为上一步的错误调用信息
模板字符串:可以直接在里面取变量,可以回车换行
var msg='hello';
//模板字符串
proces.stdout.write(`${msg} world`);
------------------------总结----------------------
javascript书写的代码只能运行在浏览器中,代码最终是要运行在别人的浏览器中;所以javascript缺少文件读取,操作系统交互,网络服务相关的模块功能.由此可知node到底是个什么东西:
1.node使得我们写的javascript代码可以运行在服务器上,这个有点像java中的java虚拟机.
2.node提供了,文件操作,操作系统交互,网络文件读取等一系列相关的功能模块,使得我们可以使用javascript可以编写
服务器端的程序.
NVM是 node的版本管理工具,node有很多版本,我们日后开发的程序,需要运行在不同的node版本中,所以需要一个专门的管理工具.
NPM node的包管理工具,node有很第三方的包,统一使用NPM来进行管理.???less使用npm可以安装很多其他的包,与node相关吗??
异步非阻塞I/O
在node中任何阻塞线程的程序代码都会异步执行.