什么是Node.js
- Node.js 就是运行在服务端的 JavaScript
- Node.js是一个基于Chrome Javascript运行时建立的一个平台
- Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行JavaScript的速度非常快,性能非常好。
Node.js与JavaScript是什么关系?
Node.js是一个基于Chrome V8引擎的JavaScript运行环境,是一个让JavaScript运行在服务端的开发平台。
Node.js特点
- 单线程和事件驱动架构:Node.js使用单线程来处理请求,但通过事件驱动和非阻塞I/O操作的特性,使其可以高效地处理大量并发连接,而不会阻塞线程。
- 异步和非阻塞I/O:这使得Node.js能够处理高并发的请求,非常适合I/O密集型应用,如文件读取、数据库操作和网络请求。
- 跨平台支持与生态丰富:Node.js可以在多个操作系统上运行;Node.js可以用npm生态系统来扩展功能和加速开发。
Node.js的应用场景
- Web服务器:由于其高效的处理并发请求能力,Node.js常被用于构建快速、可扩展的web服务器。
- 实时应用:例如聊天应用、实时协作工具等。
- API服务:Node.js很适合用来开发RESTful API和GraphQL服务。
- 命令行工具:Node.js还可以用于构建CLI工具,利用其易用的库和包管理器进行快速开发。
文件操作
Node.js 文件系统
Node.js的文件系统模块(fs模块)提供了丰富的API,用于读取、写入、删除文件以及执行其他文件系统操作。fs模块既支持同步方法也支持异步方法。
如何读取文件的内容?
通过fs.readFile(filename[,options],callback)
如何向文件中写入内容?
通过fs.writeFile(file,data[,options],callback) 参数说明:
- file:文件名或文件描述符
- data:要写入的数据,数据格式为String或Buffer
- options:该参数是一个对象,包含{encoding,mode,flag}。默认编码为utf8,模式为0666,flag为'w'
- callback:回调函数,回调函数值包含错误信息参数(err),在写入失败时返回:
如何向文件中追加内容?
这需要分三步完成:
- 通过fs.readFile(...)读取文件内容
- 将文件内容缓存下来,并拼接上要追加的内容
- 通过fs.writeFile(...)将拼接好的内容写入文件
Node.js模块系统
我们为什么需要模块化?
Node.js的模块系统是构建Node.js应用程序的重要基础,使开发者能够将代码拆分成可重用、可维护的小块。
Node.js会将已加载的模块缓存起来,以提高性能。再次require()同一模块时,直接返回缓存中的模块,而不是重新加载。
require('fs')有什么含义?
导入文件系统模块fs,并加载fs模块中的功能。
JavaScript有哪些模块化规范?
| 模块化规范 | 导入方式 | 导出方式 | 注意事项 |
|---|---|---|---|
| CommonJS | require() | module.exports或exports | Node.js默认支持 |
| ES模块 | 动态导入import()或静态导入import...from... | export | 将文件扩展名设置为.mjs,或者在package.json中声明"type":"module" |