基础 | 什么是Node.js?

123 阅读3分钟

什么是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有哪些模块化规范?

模块化规范导入方式导出方式注意事项
CommonJSrequire()module.exports或exportsNode.js默认支持
ES模块动态导入import()或静态导入import...from...export将文件扩展名设置为.mjs,或者在package.json中声明"type":"module"