1.什么是Node?
Node.js® 是基于Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时。
不需要处理兼容性问题 2009.05
1.1Node是一个JS的运行环境
js的运行方式:
1.客户端:把js文件引入,然后打开浏览器,控制台查看
2.node服务端:
1.cmd窗口中cd命令切换到需要打开的文件夹下,运行 node 文件名
2.直接在文件夹下 shift+右键
3.vscode编辑器中直接在当前文件的终端中打开,submint编辑器是需要安装terminal插件
1.2对比浏览器中的JS
1.2.1 浏览器中的JS
web api 提供了操作浏览器窗口和页面的功能。例如:BOM操作,DOM操作,AJAX
这些功能有局限性。例如:跨域问题,文件读写
1.2.2 Node中的JS
nodeAPI几乎提供了所有能做的事情
1.2.3 Node中的JS对比浏览器中的JS
① 浏览器提供了有限的能力,JS只能使用浏览器提供的功能做有限的操作
② Node提供了完整的控制计算机的能力,NodeJS几乎可以通过Node提供的接口,实现对整个操作系统的控制
2.全局对象
global
跟浏览器环境中的this相同,表示顶级对象
注意:浏览器的全局环境this表示window,node中this不
1.setTimeout,setInterval
用法跟浏览器环境完全相同。
注意:浏览器返回的是ID,node环境中返回的是对象
2.setImmediate
类似于 setTimeout 0
3.console
浏览器在控制台输出
node在命令行输出
4.__dirname*
获取当前模块所在的目录
注意:并非global属性
5.__filename*
获取当前模块的文件路径
注意:并非global属性
6.Buffer
类型化数组
继承自 UInt8Array
计算机中存储的基本单位:字节
使用时、输出时可能需要用十六进制表示
7.process
cwd()
返回当前nodejs进程的工作目录,运行的cmd窗口的目
exit()*
强制退出当前node进程
可传入退出码,0表示成功退出,默认为0,主要是为
argv*
获取命令中的所有参数
platform
获取当前的平台系统
kill(pid)
根据进程ID杀死进程
env
获取环境变量对象
3.node 模块化
1.模块的查找
1. 绝对路径
2. 相对路径
2.1 加 ./ 情况
在服务端,一定要加./,表示从当前目录开始
2.2 不加./情况
①检查是否是内置模块,如:fs、path等
②检查当前目录中的node_modules
③检查上级目录中的node_modules
3.后缀名
如果不提供后缀名,自动补全
补全顺序为:js,json,node,mjs
4.文件名
如果仅提供目录,不提供文件名,则自动寻找该目录中的index.j
5.运行node ./
package.json中的main字段,默认值为index.js
6.module对象
记录当前模块的信息
7.require函数
resolve函数 拼接成一个绝对路径
8.模块化原理
当执行一个模块或使用require时,会将模块放置在一个函数环境中
4.文件I/O
1. I/O:input output
对外部设备(磁盘、网卡、显卡、打印机…)的输入输
IO的速度往往低于内存和CPU的交互速度
2.fs模块
参考地址:https://nodejs.org/dist/latest-v12.x/
1. fs.readFile
读取一个文件
2. fs.writeFile
向文件写入内容
文件名不存在会新建,目录不存在报错
3.fs.stat
获取文件或目录信息
1.size
占用字节
2.atime
上次访问时间
3.mtime
上次文件内容被修改时间
4.ctime
上次文件状态被修改时间
5.birthtime
文件创建时间
6.isDirectory()
判断是否是目录
7.isFile()
判断是否是文件
4.fs.readdir
获取目录中的文件和子目录
5.fs.mkdir
创建目录
6.fs.exists
判断文件或目录是否存在