node基本内置模块

233 阅读4分钟

os -- 模块提供了与操作系统相关的实用方法和属性。 可以使用以下方式访问它:const os = require('os');

  1. os.EOL 行尾标记换行符 windows 上为(\r\n) POSIX 上是 (\n)
  2. os.arch() 返回为其编译 Node.js 二进制文件的操作系统 CPU 架构返回值arm arm64 ia32 mips mipsel ppc ppc64 s390 s390x x32 x64
  3. os.cpus() 返回包含有关每个逻辑 CPU 内核的信息的对象数组。 os.cpus().length 可以获得核数
[{
  model: '11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz',
  speed: 2419,  // 单位M
  times: {
    user: 1143859,    // 在用户模式下花费的毫秒数
    nice: 0,          // 在良好模式下花费的毫秒数 (只有POSIX上 为有效值)
    sys: 1260828,     // 在系统模式下花费的毫秒数
    idle: 127359062,  // 在系统模式下花费的毫秒数
    irq: 301093       // 在中断请求下花费的毫秒数
  }...]
  1. os.freemen() 整数形式返回空闲系统的内存量 单位字节 转为g os.freemen()/ 2 ** (10 * 3)
  2. os.homedir() 返回当前主目录下的字符串路径 在 POSIX 上,它使用 $HOME 环境变量(如果已定义)。 否则,它使用有效的 UID 来查找用户的主目录。

在 Windows 上,它使用 USERPROFILE 环境变量(如果已定义)。 否则,它使用当前用户的配置文件目录的路径。

  1. os.hostname 返回主机名
  2. os.tmpdir() 返回操作系统默认的临时目录

path 用于处理文件 和目录 路径的实用工具(const path = require('path'))

  1. path.basename('C:\temp\myfile.html')
  • windows上 返回myfile.html
  • POSIX上 返回C:\temp\myfile.html
  • 当使用windows路径的时候想要 任何操作系统都一致的话可以使用path.win32.basename
  • 当使用POSIX路径的时候想要 任何操作系统都一致的话可以使用path.posix.basename
  • path.basename('C:\temp\myfile.html','.html')可以接受第二个参数 可选的文件扩展名 只有在一致情况下 才会忽略,上面 返回myfile 而如果是path.win32.basename('C:\temp\myfile.HTML','.html')在windows上不分大小写,指的是一个文件,但是path将其视为有大小写的后缀,此时返回myfile.HTML
  1. path.sep 当前系统下的分隔符 windows \ POSIX上 / (内部分割)
  2. path.delimiter 当前系统下的路径界定符 windows ; POSIX上 : (内部分割)
  3. path.dirname('C:\temp\myfile.html') 返回路径下的目录 返回C:\temp
  4. path.extname('C:\temp\myfile.html') 返回当前文件后缀 返回.html
  5. path.join([...paths])参数为路径片段
    • eg: path.join('/foo', 'bar', 'baz/asdf', 'quux', '..') 返回 /foo/bar/baz/asdf
  6. path.relative(from,to) to路径相对于from的相对路径
    • eg:
    • POSIX: path.relative('/data/orandea/test/aaa', '/data/orandea/impl/bbb'); 返回../../impl/bbb
    • windows:path.relative('C:\orandea\test\aaa', 'C:\orandea\impl\bbb'); 返回..\..\impl\bbb
  7. path.resolve([...paths]) 参数为路径 或者路径片段序列 如果不传参数 ,返回前工作目录的绝对路径,如果代码片段未组成绝对路径,则会加上当前工作目录的绝对路径;给定的路径序列从右到左处理,每个后续的 path 会被追加到前面,直到构建绝对路径;例如;path.resolve('/foo', '/bar', 'baz')将返回/bar/baz 因为'/bar' + '/' + 'baz'是绝对路径baz不是绝对路径;如果path.resolve('baz', 'foo') 第一个参数为baz 则会自动加上当前工作目录,如果当前工作目录是home 则返回 home/baz/foo/bar

url 网址 提供用于网址处理和解析的实用工具。 可以使用以下方式访问它: const url = require("url")

  const myUrl = new url.URL("https://mbd.baidu.com:8080/newspage?n_type=-1&p_from=-1")
  
  // 或者 const myUrl =  `url.parse(urlString[, parseQueryString[, slashesDenoteHost]])`
  
  URL {
href: 'https://mbd.baidu.com:8080/newspage?n_type=-1&p_from=-1',
origin: 'https://mbd.baidu.com:8080',
protocol: 'https:', 
username: '',
password: '',
host: 'mbd.baidu.com:8080',
hostname: 'mbd.baidu.com',
port: '8080',
pathname: '/newspage',
search: '?n_type=-1&p_from=-1',
searchParams: URLSearchParams { 'n_type' => '-1', 'p_from' => '-1' }, // 类似map结构,但不是map
hash: ''
}

可以直接 url.format(myUrl) 将对象地址转为字符串地址 可以直接 new url.URLSearchParams('n_type=-1&p_from=-1') 获取参数对象 判断参数是否有存在用has方法url.searchParams.has('a') 返回布尔 获取值 用geturl.searchParams.get('a')

util 工具包 模块支持 Node.js 内部 API 的需求。 许多实用工具对应用程序和模块开发者也很有用。 要访问它:const util = require('util');

util.callbackify(original) 高级函数 将promise形式转为callback形式

采用 async 函数(或返回 Promise 的函数)并返回遵循错误优先回调风格的函数,即将 (err, value) => ... 回调作为最后一个参数。 在回调中,第一个参数将是拒绝原因(如果 Promise 已解决,则为 null),第二个参数将是已解决的值

const util = require('util')
async function fn(timer = 1000) {
  await setTimeout(() => {

  },timer)
  return 'hello world' + timer;
}

const callbackFunction = util.callbackify(fn);

callbackFunction(500,(err,value) => {
  console.log(value)
}

// 打印 hello world500

util.promisify(original) 将回调函数转为promise

const util = require('util');
const fs = require('fs');

const stat = util.promisify(fs.stat);
stat('.').then((stats) => {
  // 使用 `stats` 做些事情
}).catch((error) => {
  // 处理错误。
});

util.inherits(constructor, superConstructor)

不鼓励使用 util.inherits()。 请使用 ES6 class 和 extends 关键字来获得语言级别的继承支持

util.isDeepStrictEqual(val1, val2) 判断两个数据是否完全一致 包括属性的数据类型