前端面经-node.js与express

一、基础概念类

1. 什么是 Node.js?它有什么特点?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使 JavaScript 可以在服务器端运行。它的特点包括单线程、事件驱动、非阻塞 I/O、高效且轻量,适合构建高并发、实时性要求高的网络应用,如聊天应用、实时数据更新系统等。

2. Node.js 的应用场景有哪些?

常见应用场景有 Web 服务器开发(如 Express、Koa 框架构建的 Web 应用)、实时通信应用(如聊天室、在线游戏)、命令行工具开发、微服务架构等。

2.1讲讲koa

node.js后端的每一个路由就是一个接口。
koa2框架结合koa-router中间件,使路由更加简介明了。

koa-router的简单使用

1、安装koa-router
npm install koa-router --save
2、koa-router要实例化使用
3、在入口文件中使用

二、异步编程类

1. 请解释 Node.js 中的异步 I/O 和非阻塞 I/O。

非阻塞 I/O 是指当进行 I/O 操作时,程序不会等待 I/O 操作完成,而是继续执行后续代码。当 I/O 操作完成后,会通过回调等方式通知程序。
异步 I/O 是一种编程模式,它允许程序在进行 I/O 操作时不阻塞主线程的执行。Node.js 通过事件循环和回调函数来实现异步 I/O,提高了程序的性能和并发处理能力。

2. 如何处理 Node.js 中的异步操作?

可以通过以下几种方式处理异步操作:
回调函数:最基本的方式,将后续操作封装在回调函数中,当异步操作完成时调用该回调函数。
Promise:一种更优雅的处理异步操作的方式,避免了回调地狱问题。Promise 有三种状态:pending(进行中)、fulfilled(已成功)、rejected(已失败),可以通过 then 和 catch 方法处理结果。
async/await:基于 Promise 的语法糖,使异步代码看起来更像同步代码,提高了代码的可读性和可维护性。

3.Nodejs进程间通信

在 Node.js 中,进程间通信(Inter-Process Communication,简称 IPC)是指不同进程之间进行数据交换和消息传递的机制。Node.js 提供了多种方式来实现进程间通信:

3.1 使用 child_process 模块进行父子进程通信

child_process 模块是 Node.js 内置的用于创建子进程的模块,它提供了多种创建子进程的方法,如 spawn、exec、fork 等,其中 fork 方法专门用于创建 Node.js 子进程并实现父子进程之间的通信。
父进程代码(parent.js):

const {
    fork } = require('child_process');

// 创建子进程
const child = fork('child.js');

// 向子进程发送消息
child.send('Hello from parent!');

// 监听子进程发送的消息
child.on('message', (message) => {
   
    console.log(`Received from child: ${
     message}`);
});

// 监听子进程退出事件
child.on('exit', (code) => {
   
    console.log(`Child process exited with code ${
     code}`);
});

子进程代码(child.js):

// 监听父进程发送的消息
process.on('message', (message) => {
   
    console.log(`Received from parent: ${
     message}`);
    // 向父进程发送消息
    process.send('Hello from child!');
});

代码解释 在父进程中,使用 fork 方法创建子进程,并通过 child.send() 方法向子进程发送消息。 父进程通过监听
message 事件来接收子进程发送的消息。 子进程通过监听 process.on(‘message’) 事件来接收父进程的消息,并使用
process.send() 方法向父进程发送消息。

3.2.使用 Unix Domain Socket 或 Windows Named Pipe

在不同操作系统中,可以使用 Unix Domain Socket(Unix 系统)或 Windows Named Pipe(Windows 系统)来实现进程间通信。net 模块可以用来创建基于这些机制的服务器和客户端。

3.3 使用消息队列

消息队列是一种常见的进程间通信方式,可以使用第三方库如 amqplib(用于 RabbitMQ)或 kafka-node(用于 Apache Kafka)来实现。

Node进程间通信有4种方式:

  1. 通过stdin/stdout传递json:最直接的方式,适用于能够拿到“子”进程handle的场景,适用于关联进程之间通信,无法跨机器
  2. Node原生IPC支持:最native(地道?)的方式,比上一种“正规”一些,具有同样的局限性
  3. 通过socke
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值