浅谈node.js

本文深入探讨了Node.js,包括其作为一个JavaScript运行环境的角色,对比浏览器中的JS,介绍Node.js可以用于开发桌面应用和服务器应用,强调了Node.js的全局对象、模块化特性,以及内置的os、path和url模块,同时还涵盖了文件I/O操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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提供的接口,实现对整个操作系统的控制

1.3官方文档

Node官网:Node.js

Node中文官网(民间网):Node.js 中文网

2.Node可以做什么?

2.1 开发桌面应用程序

例如QQ,微信... 经常用的VScode就是用node开发的

2.2 开发服务器应用程序

结构1:微型结构

Node服务器要完成请求的处理、响应、和数据库交互、各种业务逻辑

这种结构通常应用在微型的站点上。例如:个人博客、公司官网

结构2:大型结构

这种结构非常常见,应用在各种规模的站点上

Node服务器

不做任何与业务逻辑有关的事情。绝大部分时候,只是简单的转发请求。但可能会有一些额外的功能

1.简单的信息记录:请求日志、用户偏好、广告信息

2.静态资源托管

3.缓存

后端服务器

处理大型的业务逻辑

3.为什么要学习NodeJS?

1. JS开发省时,省力

2. 因为nodeJS是单线程,没有线程切换的损耗,没有线程之间的竞争。

3. IO处理非常快

4. node不适合处理复杂运算,例如java可以开多线程进行并行运算

其他服务端语言(例如java,.net)能做的事情,node全部都能做。语言没有好坏之分,只有场景的适合。

node开发者就是为了寻找快速的IO处理的语言,所以选择了JavaScript

4.全局对象

global

跟浏览器环境中的this相同,表示顶级对象

注意:浏览器的全局环境this表示window,node中this不是表示global

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

获取环境变量对象

5.Node模块化

1.模块的查找

1. 绝对路径

2. 相对路径

2.1 加 ./ 情况

在服务端,一定要加./,表示从当前目录开始

2.2 不加./情况

①检查是否是内置模块,如:fs、path等

②检查当前目录中的node_modules

③检查上级目录中的node_modules

3.后缀名

如果不提供后缀名,自动补全

补全顺序为:js,json,node,mjs

4.文件名

如果仅提供目录,不提供文件名,则自动寻找该目录中的index.js

5.运行node ./

package.json中的main字段,默认值为index.js

2.module对象

记录当前模块的信息

3.require函数

resolve函数 拼接成一个绝对路径

4.模块化原理

当执行一个模块或使用require时,会将模块放置在一个函数环境中

6.基本内置模块

(在下载号node之后,自动帮你封装好的模块)

1.os

参考地址:OS | Node.js v12.22.7 Documentation

1.EOL

操作系统版本

2.arch()

操作系统CPU体系结构

3.cpus()

CPU内核的信息

4.freemem()

电脑剩余多少内存,返回为字节

5.homedir()

用户目录

6.hostname()

主机名

7.tmpdir()

获取临时文件目录

2.path

参考地址:Path | Node.js v12.22.7 Documentation

注意:path模块操作全部相当于字符串操作,并不会判断路径是否真实存在

1.basename

获取某段路径的最后一个 / 后面的内容

第二个参数为可选参数,如果匹配,去掉匹配内容

2.sep

操作系统的分隔符

3.delimiter

输出当前操作系统的分隔符

4.dirname

获取路径的目录

5.extname

获取路径的后缀名

6.join

拼接路径,会根据操作系统拼接

7.normalize

根据操作系统规范路径

8.relative

换成相对路径的格式

9.resolve*

转换成绝对路径,根据cmd窗口来拼接

注意:相对于命令行工具,一般使用配合__dirname使用

3.url

参考地址:URL | Node.js v12.22.7 Documentation

1.parse()*

字符串转换成对象

2.format()

对象转换成字符串

4.util

参考地址:Util | Node.js v12.22.7 Documentation

1.callbackify

异步函数转换成callback形式

2.promisify

callback形式转换成异步函数

3.isDeepStrictEqual

两个对象深度比较

7.文件I/O

1. I/O:input output

对外部设备(磁盘、网卡、显卡、打印机...)的输入输出

IO的速度往往低于内存和CPU的交互速度

2.fs模块

参考地址:File system | Node.js v12.22.7 Documentation

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

判断文件或目录是否存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值