基础API

作者: bby365 | 来源:发表于2018-06-10 12:23 被阅读0次

    常用API

    • path
    • Buffer
    • event
    • fs

    path

    // 规范化路径
    path.normalize(path)  
    
    // 拼接路径
    path.join([...paths])
    path.join('/foo','bar','baz/asdf','qunx','../.')
    
    //绝对路径
    path.resolve([...paths]);
    path.resolve('foo','/bar','baz')
    /*
    返回 :/bar/baz  从右到左第一个绝对路径 文档上的几个例子
    常用  path.resolve('./') 获取当前路径的绝对路径
    */ 
    
    //basename ,extname, dirname
    path.basename('bby/365.js')
    path.extname('.index') // 返回:''
    path.dirname(bby/365/index.html)
    
    //parse, format
    path.parse('/home/user/dir/file.txt') 
    path.format({...})   // 对象 -->路径字符串 ,与path.parse()相反
    
    // sep, delimiter, win32, posix 这些都是属性,不是方法
    path.sep   --> 片段分隔符
    path.delimiter  --> 路径分隔符
    path.win32
    path.posix
    

    _dirname, _filename 总是返回的文件的绝对路径;
    process.cwd() 返回执行node命令所在的文件夹;
    ./ 在 require() 中 相对当前文件所在的文件夹;在其他地方,比如:path.resolve('./') 就和 process.cwd() 一样 是相对node命令所在的文件夹;


    Buffer

    全局变量,不需要require();

    • Buffer 用于处理二进制数据流
    • 实例类似整数数组,大小固定
    • C++ 代码在 V8 堆外分配物理内存
    //实例化 Buffer
    Buffer.alloc(5, 'a','base64') //默认字符编码 'utf8'不需要写
    Buffer.allocUnsafe()
    Buffer.form([1,2,3])
    
    // Buffer 类 静态方法
    /*
    Buffer.bytelength()
    Buffer.isBuffer()
    Buffer.concat()
    */
    
    // 实例 的方法
    /*
    buf.length()
    buf.toString()
    buf.fill()
    buf.equals()
    buf.indexOf()
    buf.copy()
    */
    

    event

    • eventEmitter.on()
    • eventEmitter.once()
    • eventEmitter.emit()
    • eventEmitter.removeListener()
    • eventEmitter.removeAllListeners()
    const EventEmitter = require('events');
    class myEvnet extends EventEmitter{};
    const event1 = new myEvent();
    // 绑定事件
    event1.on('test', () =>{
       console.log('testtest')
    })
    // 触发事件
    event1.emit('test')
    

    eventEmitter.emit() 传入多个参数情况
    eventEmitter.on()绑定事件,可以多次调用;eventEmitter.once()绑定事件,只能调用一次,监听器会被注销


    fs 文件系统

    • fs.readFile()
      对应同步方法:fs.readFileSync()
      4-8 解释了为什么要用异步方法
    // 读取文件
    const fs = require('fs');
    fs.readFile('./index.html', (err, data) =>{
        if(err) throw err;
        console.log(data.toString())
    })
    

    • fs.writeFile()
    const fs = require('fs');
    fs.writeFile('message.txt','hello nodejs adfa','utf8', (err, data) =>{
        if(err) throw err;
        console.log(data)  // undefined 回调函数只有一个err参数
    })
    

    • fs.stat()
    // 获取文件信息
    const fs = require('fs');
    fs.stat('index.html',(err,stats) =>{
        if(err){
            console.log('文件不存在!')
        };
        console.log(stats);
        console.log(stats.isDirectory())
        console.log(stats.isFile())
    })
    

    • fs.rename()
    const fs = require('fs');
    fs.rename('./message.txt','./bby.txt', (err) =>{
        if(err) throw err;
        console.log('done')
    })
    

    • fs.unlink()
    // 删除文件
    const fs = require('fs');
    fs.unlink('bby.txt',(err) =>{
        if(err) throw err;
        console.log('remove')
    })
    

    • fs.readdir()
    // 'path' 以当前文件为基准,不是运行时的相对路径
    const fs = require('fs');
    fs.readdir('../node-test',(err,files) =>{
        if(err) throw err;
        files.map((file) =>{
            console.log(file);
        })
    })
    

    • fs.mkdir()
    // 创建文件夹
    const fs = require('fs');
    fs.mkdir('./bby',(err)=>{
        if(err) throw err;
    })
    

    • fs.rmdir()
    // 删除文件夹
    const fs = require('fs');
    fs.rmdir('./bby',(err)=>{
        if(err) throw err;
    })
    

    • fs.watch()
      监视文件变化,用于本地构建
    // 监视filename 的变化
    const fs = require('fs');
    fs.watch('../node-test',(evnetType,filename) =>{
      console.log(`事件变化类型:${evnetType}`);
      if(filename){
        console.log(`变化的文件是:${filename}`)
      }else{
        console.log('没有提供文件名!');
      }
    })
    

    • fs.createReadStream()
    const fs = require('fs');
    const st = fs.createReadStream('message.txt',{start:3});
    st.pipe(process.stdout)
    

    • fs.createWriteStream()
    const fs = require('fs');
    
    const ws = fs.createWriteStream('bby.txt');
    //每 200 ms 写入一个数字
    const tid = setInterval(function(){
        const num = parseInt(Math.random() * 20);
        if(num < 15){
            ws.write(num + ' ')  // num 要转成 字符串 否则报错
        }else{
            clearInterval(tid);
            ws.end()
        }
    },200)
    // 完成后 ,触发事件
    ws.on('finish',()=>{
        console.log('done!')
    })
    

    相关文章

      网友评论

          本文标题:基础API

          本文链接:https://www.haomeiwen.com/subject/tmdfeftx.html