• 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
  • 相关阅读:
    RabbitMq高级特性-2
    Windows应急响应信息采集工具
    Tomcat 下载安装与配置
    LeetCode 101. 对称二叉树
    docker系列(7) - Dockerfile
    《windows 程序设计》读书笔记 二
    python字符串
    计算机视觉系列-轻松掌握 MMDetection 中常用算法 :Cascade R-CNN(二)
    【JUC】原子操作类及LongAddr源码分析
    “传统文化宣传片+虚拟人动捕设备”前景如何?
  • 原文地址:https://blog.csdn.net/cyj5201314/article/details/127128470