成为一个nodejs大神,就需要懂点别人不知道的Node.js技能,比如下面这7个Node.js高级操作
1.使用Promise封装异步操作:
function readFile(filePath) {
return new Promise((resolve, reject) => {
fs.readFile(filePath, (err, data) => {
if (err) {
reject(err)
} else {
resolve(data)
}
})
})
}
2.使用async/await处理异步操作:
async function processFile() {
try {
const data = await readFile('file.txt')
console.log(data.toString())
} catch (err) {
console.error(err)
}
}
3.使用EventEmitter实现事件驱动:
const EventEmitter = require('events')
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter()
myEmitter.on('event', () => {
console.log('触发事件')
})
myEmitter.emit('event')
4.使用child_process模块启动子进程:
const { spawn } = require('child_process')
const ls = spawn('ls', ['-lh', '/usr'])
ls.stdout.on('data', (data) => {
console.log(`输出:${data}`)
})
ls.stderr.on('data', (data) => {
console.error(`错误:${data}`)
})
ls.on('close', (code) => {
console.log(`子进程退出码:${code}`)
})
5. 使用cluster模块实现多进程:
const cluster = require('cluster')
const http = require('http')
const numCPUs = require('os').cpus().length
if (cluster.isMaster) {
console.log(`主进程 ${process.pid} 正在运行`)
// 衍生工作进程
for (let i = 0; i < numCPUs; i++) {
cluster.fork()
}
cluster.on('exit', (worker, code, signal) => {
console.log(`工作进程 ${worker.process.pid} 已退出`)
})
} else {
// 工作进程可以共享任何 TCP 连接
// 在本例子中,共享的是一个 HTTP 服务器
http.createServer((req, res) => {
res.writeHead(200)
res.end('你好世界\n')
}).listen(8000)
console.log(`工作进程 ${process.pid} 已启动`)
}
6.使用TCP套接字实现网络编程:
const net = require('net')
const server = net.createServer((socket) => {
// 新的连接
socket.on('data', (data) => {
socket.write('你好')
})
socket.on('end', () => {
console.log('连接断开')
})
socket.write('欢迎光临\n')
})
server.on('error', (err) => {
throw err
})
server.listen(8124, () => {
console.log('服务器已启动')
})
7.使用WebSocket实现实时通信:
const WebSocket = require('ws')
const wss = new WebSocket.Server({ port: 8080 })
wss.on('connection', (ws) => {
console.log('客户端已连接')
ws.on('message', (message) => {
console.log(`收到消息:${message}`)
ws.send('你好,我已收到你的消息')
})
})
get到了吗?要成为一个Node.js大神,需要不断学习和实践
如果你想学习Node.js,首先要熟悉JavaScript语言和Node.js的基础知识,包括异步编程、事件循环等概念,跟我一起学习吧,从初始Node.js到项目案例,全套学习笔记分享。
Node.js学习目标
◆ 能够知道什么是 Node.js
◆ 能够知道 Node.js 可以做什么
◆ 能够说出 Node.js 中的 JavaScript 的组成部分
◆ 能够使用 fs 模块读写操作文件
◆ 能够使用 path 模块处理路径
◆ 能够使用 http 模块写一个基本的 web 服务器
学习时间规划 8天
day1:初始Node.js
path 路径模块 | http 模块 |
day2 :Node.js模块化
day3、day4:Node.js 初识 Express
day5、day6:Node.js 数据库与身份认证
day7 、day8:大事件项目