1. fs 内置模块

2021-11-30
3 min read
Featured Image

fs - file system

  • node 内置的一个模块
  • 里面存放的都是操作文件相关的方法
  • 使用的时候不需要自己定义,但是需要导入
const fs = require('fs')
  • readFile()

    • 异步读取文件
    • 语法: readFile( 路径, 格式, 回调函数)
      • 路径:要读取的文件路径
      • 格式:读取文件是默认 buffer 格式的文件
        • 可以选填 utf8
      • 回调函数:读取成功后执行的回调函数
    fs.readFile('./a.txt','utf8', function(err,data) {
        if(err) return console.log(err)
        console.log('Loading finished')
        console.log(data)
    })
    
  • readFileSync()

    • 同步读取文件
      • 无法吸收错误 遇到错误直接报错
    • 语法: readFileSync( 路径, 格式)
    • 返回值: 就是读取到的 value
    
    const res = fs.readFileSync('./a.txt','utf8')
    
  • writeFile()

    • 异步写入文件
    • 语法: writeFile(路径, 内容, 回调函数)
      • 路径: 如果路径存在, 直接写入, 如果路径不存在, 创建一个文件写入
      • 内容: 你要写入文件内的内容
      • 会点函数: 必须写
    • 注意: 完全覆盖式的写入
    fs.writeFile('./a.txt', 'hello world', ()=>{
        console.log('写入内容完成')
    })
    
  • writeFileSync()

    • 同步写入
    • 语法: writeFileSync(路径, 内容)
    fs.writeFileSync('./b.txt','你好 世界')
    

path 内置模块

  • 操作和路径相关的内容

  • 一个内置模块,直接导入就可以使用

  • extname()

    • 专门获取一个路径中的后缀名
    • 语法: path.extname(‘文件名’)
    const path = require('path')
    const res = path.extname('abc.html')
    console.log(res) // .html
    
  • isAbsolute()

    • 判定是不是绝对路径
    • 语法:path.isAbsolute(‘路径地址’)
    //路径表示方法
    test.js 同级目录下
    ./test.js 同级目录下
    ../test.js 上一级目录下
    /test.js 根目录下的 哪一个盘
    
    const res = path.isAbsolute('/test')
    console.log(res)// true
    
    • 相对路径和绝对路径
      • 从根目录触发叫绝对路径
      • 和当前目录有关系的路径, 叫做相对路径
  • join()

    • 多个参数直接拼成相对路径
    • 语法: path.join(‘address1’, ‘address2’, ‘address3’)
    const res = path.join('/a','/b','/c'.'./d')
    console.log(res) // /a/b/c/d 
    const res = path.join('/a','/b','/c'.'./d','../e')
    console.log(res) // /a/b/c/e 
    // ../ 
    
  • resolve()

    • 多个参数直接拼成绝对路径
    • 语法: path.resolve(‘address1’, ‘address2’, ‘address3’)
    const res = path.resolve('./a')
    console.log(res) // D:\Blog\Notes\JavaScript\a
    
    const res = path.resolve('./a','b') //D:\Blog\Notes\JavaScript\a\b
    const res = path.resolve('./a','b','../c') // D:\Blog\Notes\JavaScript\a\c
    const res = path.resolve('./a','b','../c','/d') // D:\d
    
  • parse()

    • 解析一个路径, 成为一个对象
    • 语法: path.parse()
    • 返回值: 一个对象, 里面包含地址的所有信息
    const res = path.parse( 'D:\Blog\Notes\JavaScript\a\c\a.js')
    console.log(res) 
    {
     root:'E:/',
        dir:'D:\Blog\Notes\JavaScript\a\c',
        base:'a.js',
        ext:'js',
        name:'a'
    
    }
    

url 内置模块

  • 专门操作 url 地址的模块

  • 直接引入使用

  • parse()

    • 解析 url 地址
    • 语法: url.parse(url地址[, 是否解析query]) 默认false
    • 返回值: 一个对象, 包含整个 url 地址的所有信息
    const url = require('url')
    
    const str = 'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc'
    
    const res = url.parse(str)
    // res
    {
        protocol: 'https:',
        slashes:'true',
        host: 'www.immigration.govt.nz:8080',
        port:'8080',
        hostname:'www.immigration.govt.nz',
        hash:'#abc',
        search:'?a=100&b=200&c=300',
        query:'a=100&b=200&c=300',
        pathname='a/b/c',    
        path:'/a/b/c?a=200&b=300&c=300',
        href:'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc'   
    }
    
    const res = url.parse(str)
    //res
    {
        protocol: 'https:',
        slashes:'true',
        host: 'www.immigration.govt.nz:8080',
        port:'8080',
        hostname:'www.immigration.govt.nz',
        hash:'#abc',
        search:'?a=100&b=200&c=300',
        query:{a:'100',b:'200',c:'300'},
        pathname='a/b/c',    
        path:'/a/b/c?a=200&b=300&c=300',
        href:'https://www.immigration.govt.nz/a/b/c?a=200&b=300&c=300#abc'   
    }
    

http 内置模块

  • 专门进行 http 服务的协议

  • 也是一个内置模块, 直接导入使用

  • createServer()

    • 专门用来创建 http 服务的方法
    • 语法: http.createServer(函数)
    • 返回值: 一个 http 服务
  • listen()

    • 监听某一个端口使用的方法
    • 语法: 服务.listen(端口号, 回调函数)
  • 当监听端口号完毕的时候

    • 再 cmd 里面运行起来这段代码
    • cmd 窗口就因为这段代码变成了一个服务器
    • 此时客户端请求 localhost:8080 的时候
    • 每一个请求都会触发一次 createServer 的参数函数
    • 这个函数接收两个参数
      • request: 本次请求的所有请求信息
        • 服务器解析完请求报文后组装的内容
        • 需要从请求报文里获取什么信息
        • 直接再 request 里面找
      • response: 将来组装成响应报文的东西
        • 想要再响应报文里添加什么
        • 就往这个response 里面的指定位置添加
    const http = require('http')
    const server = http.createServer(function (req,res){
    
        console.log(req.url) // 请求的path
        // localhost:8080/a/b/c 输出 /a/b/c
        //localhost:8080/index.html 输出 index.html
        res.end('hello world') // 响应体 解析 url 并 返回对应的 响应体
    })
    server.listen(8080, ()=> console.log('server running at port 8080!'))
    
Avatar
Aaron Fan My research interests include machine learning, signal processing, web development and robotics.