跟我一起学7个别人不会的Node.js技能

成为一个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

初识Node-什么是Node.js02.初识Node-什么是Node.js是黑马程序员Node.js全套入门教程,nodejs新教程含es6模块化+npm+express+webpack+promise等_Nodejs实战案例详解的第3集视频,该合集共计96集,视频收藏或关注UP主,及时了解更多相关视频内容。https://www.bilibili.com/video/BV1a34y167AZ?p=3&vd_source=d15cfe2763f6aa65b562d3221bcfc7c4配套笔记:

          path 路径模块           http 模块

day2 :Node.js模块化 

 day3、day4:Node.js 初识 Express

day5、day6:Node.js 数据库与身份认证

day7 、day8:大事件项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值