首页 > 编程语言 >Node

Node

时间:2022-11-07 18:00:57浏览次数:33  
标签:Node 异步 fs process js 参数

 1、Node. js中的流是什么?使用流有什么好处?流有哪些典型应用?

概念:
流(Stream)是基于 EventEmitter的数据管理模式,由各种不同的抽象接口组成,主要包括可写、可读、可读写、可转换等类型。
好处:
流是非阻塞式数据处理模式,可以提升效率,节省内存,有助于处理管道且可扩展等。
典型应用:
流在文件读写、网络请求、数据转换、音频、视频等方面有很广泛的应用。

 2、npm是什么,作用是?

概念:
npm是 Node. js中管理和分发包的工具,可用于安装、卸载、发布、查看包等。
作用: 通过ηpm,可以安装和管理项目的依赖,还可以指明依赖项的具体版本号。
(1)允许用户从npm服务器下载别人编写的第三方包到本地。
(2)允许用户从npm服务器下载并安装别人编写的命令行程序到本地。
(3)允许用户将自己编写的包或命令行程序上传到npm服务器供别人使用。

3、对中间件概念的理解

概念
中间件(Middleware)是介于应用系统和系统软件之间的一类软件,能够达到资源共享、功能共享的目的。中间件的本质为一个回调函数,参数包含请求对象、响应对象和执行下一个中间件的函数

 

 

 

 

4、对 Node 中的 Buffer 的理解?应用场景?

概念:
在Node应用中,需要处理网络协议、操作数据库、处理图片、接收上传文件等,在网络流和文件的操作中,要处理大量二进制数据,而Buffer就是在内存中开辟一片区域(初次初始化为8KB),用来存放二进制数据;Nodejs不能控制数据传输的速度和到达时间,只能决定何时发送数据,如果还没到发送时间,则将数据放在Buffer中,即在RAM中,直至将它们发送完毕
应用场景:
I/O操作
加密解密
zlib.js

5、对 Node 中的 fs模块的理解? 有哪些常用方法

5.1、概念
fs(filesystem),该模块提供本地文件的读写能力,可以说,所有与文件的操作都是通过fs核心模块实现,这个模块对所有文件系统操作提供异步(不具有sync 后缀)和同步(具有 sync 后缀)两种操作方式,而供开发者选择

5.2、常用方法
a、文件读取
同步读取:fs.readFileSync
第一个参数为读取文件的路径或文件描述符
第二个参数为 options,默认值为 null,其中有 encoding(编码,默认为 null)和 flag(标识位,默认为 r),也可直接传入 encoding
异步读取:fs.readFile
异步读取方法 readFile 与 readFileSync 的前两个参数相同,最后一个参数为回调函数,函数内有两个参数 err(错误)和 data(数据),该方法没有返回值,回调函数在读取文件成功后执行
b、文件写入
同步写入:fs.writeFileSync
第一个参数为写入文件的路径或文件描述符
第二个参数为写入的数据,类型为 String 或 Buffer
第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 w)和 mode(权限位,默认为 0o666),也可直接传入 encoding
异步写入:fs.writeFile
异步写入,writeFile 与 writeFileSync 的前三个参数相同,最后一个参数为回调函数,函数内有一个参数 err(错误),回调函数在文件写入数据成功后执行
c、文件追加写入
同步追加:fs.appendFileSync
第一个参数为写入文件的路径或文件描述符
第二个参数为写入的数据,类型为 String 或 Buffer
第三个参数为 options,默认值为 null,其中有 encoding(编码,默认为 utf8)、 flag(标识位,默认为 a)和 mode(权限位,默认为 0o666),也可直接传入 encoding
异步追加:fs.appendFile
异步追加写入方法 appendFile 与 appendFileSync 的前三个参数相同,最后一个参数为回调函数,函数内有一个参数 err(错误),回调函数在文件追加写入数据成功后执行
d、文件拷贝
同步拷贝:fs.copyFileSync

异步拷贝:fs.copyFile

e、创建目录
同步创建:fs.mkdirSync
同步创建,参数为一个目录的路径,没有返回值,在创建目录的过程中,必须保证传入的路径前面的文件目录都存在,否则会抛出异常
异步创建:fs.mkdir
异步创建,第二个参数为回调函数

 6、Node.js有哪些定时功能?

setTimeout/clearTimeout
setInterval/clearInterval
setImmediate/clearImmediate
process. nextTick

7、对Node.js 的理解?优缺点?应用场景?

7.1、概念:
是一个基于Chrome V8引擎的JavaScript运行环境,让JavaScript 运行在服务端的开发平台。Node. js是一个事件驱动、非阻塞式I/O的模型,轻量而又高效。浏览器是js的前端运行环境,node.js是js的后端运行环境。
7.2、优缺点
优点:
处理高并发场景性能更佳
适合I/O密集型应用,指的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作
缺点:
不适合CPU密集型应用(如复杂的数学计算)
只支持单核CPU,不能充分利用CPU
可靠性低,一旦代码某个环节崩溃,整个系统都崩溃
7.3、适用场景
高并发、实时聊天、实时消息推送、客户端逻辑强大的SPA(单页面应用程序)。
7.4、应用场景
第一大类:用户表单收集系统、后台管理系统、实时交互系统、考试系统、联网软件、高并发量的web应用程序
第二大类:基于web、canvas等多人联网游戏
第三大类:基于web的多人实时聊天客户端、聊天室、图文直播
第四大类:单页面浏览器应用程序
第五大类:操作数据库、为前端和移动端提供基于json的API

8、Node.js与javascript有什么不同

 

 

 9、为什么要用Node.js

(1)简单, Node. js用 JavaScript、JSON进行编码,简单好学。
(2)功能强大,非阻塞式I/O,在较慢的网络环境中,可以分块传输数据,事件驱动,擅长高并发访问。
(3)轻量级, Node. js本身既是代码又是服务器,前后端使用同一语言。
(4)可扩展,可以轻松应对多实例、多服务器架构,同时有海量的第三方应用组件。

10、Node. js 有哪些全局对象?

在浏览器 JavaScript 中,通常window 是全局对象, 而 Nodejs中的全局对象是 global,global全局对象则在全局作用域中,任何全局变量、函数、对象都是该对象的一个属性值 

10.1、真正的全局对象
a、Buffer
可以处理二进制以及非Unicode编码的数据
b、process
进程对象,提供有关当前进程的信息和控制
c、console
最常用的输入内容的方式:console.log/console. info、console.error/console.warning、console.time/console.timeEnd 、console.trace、console .table。
d、clearInterval、setInterval
设置定时器与清除定时器
e、clearTimeout、setTimeout
设置延时器与清除延时器
f、global
全局命名空间对象,process、console、setTimeout等都有放到global中

10.2、模块级别的全局变量
__dirname:
获取当前文件所在的路径,不包括后面的文件名
__filename:
获取当前文件所在的路径和文件名称,包括后面的文件名称
exports:
module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容


module:
对当前模块的引用,通过module.exports 用于指定一个模块所导出的内容,即可以通过 require() 访问的内容
require:
用于引入模块、 JSON、或本地文件。 可以从 node_modules 引入模块。

11、你知道哪些 Node.js核心模块?

EventEmitter :一个实现观察者模式的类

Stream:流

FS:文件流

Net

全局对象

12、什么是 EventEmitter?EventEmitter有哪些典型应用?

12.1、什么是EventEmitter:
EventEmitter是 Node. js中一个实现观察者模式的类,主要功能是订阅和发布消息,Node.js 中任何对象发出的事件都是 EventEmitter 类的实例,所有 EventEmitter 类都可以使用 eventEmitter.on() 函数将事件侦听器附加到事件。然后一旦捕捉到这样的事件,就会同步地逐个调用它的侦听器。
12.2、EventEmitter有哪些典型应用:
(1)在模块间传递消息。
(2)在回调函数内外传递消息。
(3)处理流数据,因为流是在 EventEmitter的基础上实现的。

13、对 Node.js 中的 process 的理解?有哪些常用方法?

13.1、概念:
process 对象是一个全局变量,提供了有关当前 Node.js进程的信息并对其进行控制,作为一个全局变量
13.2、属性:
process.env:环境变量,例如通过 `process.env.NODE_ENV 获取不同环境项目配置信息
process.nextTick:这个在谈及 EventLoop 时经常为会提到
process.pid:获取当前进程id
process.ppid:当前进程对应的父进程
process.cwd():获取当前进程工作目录,
process.platform:获取当前进程运行的操作系统平台
process.uptime():当前进程已运行时间,例如:pm2 守护进程的 uptime 值
进程事件: process.on(‘uncaughtException’,cb) 捕获异常信息、 process.on(‘exit’,cb)进程推出监听
三个标准流: process.stdout 标准输出、 process.stdin 标准输入、 process.stderr 标准错误输出
process.title 指定进程名称,有的时候需要给进程指定一个名称
13.3、方法:
process.cwd()
返回当前 Node进程执行的目录
process.argv
在终端通过 Node 执行命令的时候,通过 process.argv 可以获取传入的命令行参数,返回值是一个数组
process.env
返回一个对象,存储当前环境相关的所有信息,一般很少直接用到。
process.nextTick()
NodeJs是基于事件轮询,在这个过程中,同一时间只会处理一件事情,在这种处理模式下,process.nextTick()就是定义出一个动作,并且让这个动作在下一个事件轮询的时间点上执行

14、Node. js中的异步和同步如何理解?

Node.js是单线程的,异步是通过一次次的循环事件队列来实现的。同步则是阻塞式的IO,这在高并发环境中会是一个很大的性能问题,所以同步一般只在基础框架启动时使用,用来加载配置文件、初始化程序等。

15、通过哪些方法可以进行异步流程的控制?

(1)多层嵌套回调。
(2)为每一个回调写单独的函数,函数里边再回调。
(3)用第三方框架,如 async、 promise等。

16、如何避免回调地狱?

使用Promise
使用aync/await

 

标签:Node,异步,fs,process,js,参数
From: https://www.cnblogs.com/gs-top/p/16865151.html

相关文章

  • Node中文件断点续传原理和方法总结
    GuanBlogCodeismybaby!Mybloghttps://guanqi.xyz!博客园首页新随笔联系订阅管理随笔-35  文章-0  评论-3  阅读- 67699Node......
  • NodeJs断点调试详细说明
    node在运行js的时候,可以传递参数让其运行在调试模式,运行在调试模式后,引擎会向某个端口发送调试相关信息。一、在devTools中调试1.在chrome中接收调试信息在浏览器上打开:ch......
  • 细说nodejs的path模块
    前言path模块是nodejs中用于处理文件/目录路径的一个内置模块,可以看作是一个工具箱,提供诸多方法供我们使用,当然都是和路径处理有关的。同时在前端开发中path模块出现......
  • 用 nodejs 搭建脚手架
    1前言1.1像我们熟悉的vue-cli,taro-cli等脚手架,只需要输入简单的命令taroinitproject,即可快速帮我们生成一个初始项目。在日常开发中,有一个脚手架工具可以用来提高......
  • 理解Nodejs中的进程间通信
    前置知识文件描述符在Linux系统中,一切都看成文件,当进程打开现有文件时,会返回一个文件描述符。文件描述符是操作系统为了管理已经被进程打开的文件所创建的索引,用来指......
  • node.js inspect 浏览器 断点调试技巧与原理
    做前端开发你一定会用到浏览器自带的各种调试工具firebug谷歌的debugtools等,我们太过于熟悉使用这些工具了,以致于在node开发中同样的js文件我们是否也可以用浏览器就行调......
  • 卸载Node及使用nvm管理node
    卸载Node1、搜索控制面板,进入并卸载2、卸载完成,window+r-->cmd-->输入node-v检查是否真的卸载完成了安装nvm1、下载安装包在这个地址下载https://github.......
  • 【node专题】node几种调试方式
    【node专题】node几种调试方式前端工作日2021-11-24223点击上方【前端工作日】关注我哦~node项目调试和我们写web界面的调试基本是一致的,本质都是在某个地方查......
  • nodejs 安装篇
    直接使用ubuntu软件源安装sudoaptupdatesudoaptinstallnodejsnpmnodejs--versionv10.19.0npm-v从nodesource安装nodejs和npm复制代码安装仓库`https:......
  • 升级node最新版本18.x .Error: error:0308010C
    Buildingforproduction...Error:error:0308010C:digitalenveloperoutines::unsupported先执行以下命令:windows:setNODE_OPTIONS=--openssl-legacy-providerlinux......