NodeJS——API使用之内置模块

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/TDCQZD/article/details/82179952

一、path

1、 normalize
path.normalize() 方法会规范化给定的 path,并解析 ‘..’ 和 ‘.’ 片段
2、join
path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径
3、resolve
path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
4、 basename
文件名
5、 extname
扩展名
6、 dirname
相当于__dirname
7、 parse

path.parse() 方法返回一个对象,对象的属性表示 path 的元素
dir <string>   目录结构
root <string>    根目录
base <string>  文件名+扩展名
name <string>    文件名
ext <string>     扩展名

8、 format
path.format() 方法会从一个对象返回一个路径字符串。 与 path.parse() 相反。

代码示例:

const {normalize, join, resolve, basename, extname, dirname, parse, format} = require("path")
// console.log(path)
console.log()
// path.normalize() 方法会规范化给定的 path,并解析 '..' 和 '.' 片段
normalize("/a/b/c../d")
console.log(normalize("/a/b/c/../d"))
// path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径
join("/a/b", "../c/d/../e")
console.log(join("/a/b", "../c/d/../e"))
// path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
resolve("./")
console.log(resolve("./"))
// 文件名
basename("a/b/c/d/e.js")
console.log(basename("a/b/c/d/e.js"))
// 扩展名
extname("a/b/c/d/e.js")
console.log(extname("a/b/c/d/e.js"))
// 相当于__dirname
dirname("a/b/c/d/e.js")
console.log(dirname("a/b/c/d/e.js"))
/*
* path.parse() 方法返回一个对象,对象的属性表示 path 的元素
    dir <string>   目录结构
    root <string>    根目录
    base <string>  文件名+扩展名
    name <string>    文件名
    ext <string>     扩展名

* */
parse("a/b/c/d/e.js")
console.log(parse("a/b/c/d/e.js"))
// path.format() 方法会从一个对象返回一个路径字符串。 与 path.parse() 相反。
format({ root: '', dir: 'a/b/c/d', base: 'e.js', ext: '.js', name: 'e' })
console.log(normalize(format({ root: '', dir: 'a/b/c/d', base: 'e.js', ext: '.js', name: 'e' })))

二、event——NodeJS事件机制

1、基本介绍

大多数 Node.js 核心 API 都采用惯用的异步事件驱动架构,其中某些类型的对象(触发器)会周期性地触发命名事件来调用函数对象(监听器)。
例如,net.Server 对象会在每次有新连接时触发事件;fs.ReadStream 会在文件被打开时触发事件;流对象 会在数据可读时触发事件。
所有能触发事件的对象都是 EventEmitter 类的实例。 这些对象开放了一个 eventEmitter.on() 函数,允许将一个或多个函数绑定到会被对象触发的命名事件上。 事件名称通常是驼峰式的字符串,但也可以使用任何有效的 JavaScript 属性名。当 EventEmitter 对象触发一个事件时,所有绑定在该事件上的函数都被同步地调用。 监听器的返回值会被丢弃。

2、 绑定事件

const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {   // once
  console.log('触发了一个事件!');
});
myEmitter.emit('event');

3、 事件解绑

myEmitter. removeListener(“事件名”,对应的回调)
myEmitter. removeAllListeners(“事件名”)

代码示例:

const EventEmitter =require("events")
// const EventEmitter = require('events');
console.log(EventEmitter)

// 绑定事件
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {   // once
    console.log('触发了一个事件!');
});
myEmitter.on('event1', () => {   // once
    console.log('触发了event1事件!');
});
myEmitter.once('event', () => {   // once
    console.log('触发了一个事件且只触发一次!');
});
setInterval(()=>{
    myEmitter.emit('event');
    myEmitter.emit('event1');
},1000)


// 事件解绑
// myEmitter. removeListener(“事件名”,对应的回调)
// myEmitter. removeAllListeners(“事件名”)
setTimeout(()=>{
    myEmitter.removeAllListeners("event")
    myEmitter.removeListener("event1",() => {   // once
        console.log('触发了event1事件!');
    })
},5000)

setTimeout(()=>{
    myEmitter.removeListener("event1",() => {   // once
        console.log('触发了event1事件!');
    })
},9000)

猜你喜欢

转载自blog.csdn.net/TDCQZD/article/details/82179952