• nodejs文档(一)


    nrm使用方法

    npm的包源默认是官方源,在海外下载速度较慢,使用nrm可以快捷的切换包源
    npm i nrm -g 全局安装nrm
    nrm ls 查看可选的源
    nrm use taobao 切换到淘宝源
    nrm test 测试源的响应时间

    nodejs中实现ES6模块化规范

    在项目的package.json文件内添加配置项"type": “module”,即可试用ES6模块化

    http模块用法
    • 创建服务器
    http.createServer((req, res) => {
      res.write('hello http')
      res.write('see you http')
      res.end()
    }).listen(3000, () => {
      console.log('server start')
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 获取请求url
      req.url 返回的是不url的path,不包含域名端口等
    event模块用法

    用于实现发布订阅模式

    const EventEmitter = require('events')
    
    const event = new EventEmitter()
    
    event.on('play', (data) => {
      console.log('play event has emitting', data)
    })
    
    event.emit('play', [200])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    fs文件操作模块
    • 创建目录
    const fs = require('fs')
    
    fs.mkdir('./avatar', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 重命名目录
    const fs = require('fs')
    
    fs.rename('./avatar', './avatar2', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 删除目录 (空目录)
    const fs = require('fs')
    
    fs.rmdir('./avatar2', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 创建文件 (有则重写,无则新建)
    const fs = require('fs')
    
    fs.writeFile('./avatar/zhaoji.txt', 'hello fs', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 追加文件内容
    const fs = require('fs')
    
    fs.appendFile('./avatar/zhaoji.txt', '\nmy name is zhaoji', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 读取文件内容
    const fs = require('fs')
    
    fs.readFile('./avatar/zhaoji.txt', (err, data) => {
      console.log(data.toString())
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 删除文件
    const fs = require('fs')
    
    fs.unlink('./avatar/zhaoji.txt', (err) => {
      console.log(err)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 读取一个目录 (只能读取一层)
    const fs = require('fs')
    
    fs.readdir('./avatar', (err, data) => {
      console.log(data)
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 读取文件或目录的详细信息
    const fs = require('fs')
    
    fs.stat('./avatar/1.txt', (err, data) => {
      console.log(data.isFile())
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意:操作方法后面加Sync即为对应的同步操作方法
    require(‘fs’).promises导入的是promsie版本的fs,可以使用then方法进行文件操作

    stream流模块

    用于实现大文件的分片读写,减小内存占用,特别适用于大文件复制

    • 流模块读文件
    const fs = require('fs')
    
    const rs = fs.createReadStream('./avatar/1.txt', 'utf-8')
    
    rs.on('data', chunk => {
      console.log('chunk-', chunk)
    })
    
    rs.on('end', () => {
      console.log('end')
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 流模块写文件
    const fs = require('fs')
    
    const ws = fs.createWriteStream('./avatar/1.txt', 'utf-8')
    
    ws.write('1111111111111111')
    ws.write('2222222222222222')
    ws.write('3333333333333333')
    
    ws.end()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 流模块复制大文件
    const fs = require('fs')
    
    const ws = fs.createWriteStream('./avatar/1.txt', 'utf-8')
    
    const rs = fs.createReadStream('./avatar/dir/2.txt', 'utf-8')
    
    rs.pipe(ws)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    zlib模块

    用于实现gzip压缩和解压缩文件

    const fs = require('fs')
    
    const ws = fs.createWriteStream('./avatar/1.txt', 'utf-8')
    
    const rs = fs.createReadStream('./avatar/dir/2.txt', 'utf-8')
    
    const gzip = require('zlib').createGzip()
    
    rs.pipe(gzip).pipe(ws)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    crypto模块

    用于提供通用加密和哈希算法,nodejs底层使用c++实现,通过crypto模块暴露为js接口
    MD5是一种常用哈希算法,用于给任意数据一个签名,这个签名一般是一个十六进制字符串
    注意md5无法反推原始数据

    const crypto = require('crypto')
    
    const hash = crypto.createHash('md5')
    
    hash.update('hello md5')
    
    console.log(hash.digest('hex'))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Linux 文件系统
    [MATLAB学习]:Matlab生成滑动平均滤波算法文件并移植到STM32单片机上运行——基于CubeMX
    hot100-哈希
    排查问题的方法论(适用于任何多方合作中产生的问题排查)
    附加:信息脱敏;
    两年独立开发经验程序员告诉我们赚钱的经验(听听真正赚到钱的高手做法)
    计算机毕业设计Java的大学宿舍管理系统(源码+系统+mysql数据库+lw文档)
    【Kafka从成神到升仙系列 三】你真的了解 Kafka 的元数据嘛
    机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法
    数组去重复(偶然遇到这个问题,以此记录)
  • 原文地址:https://blog.csdn.net/cyj5201314/article/details/127128470