Node.js. Built-in modules
Agenda
- node.js built-in modules
- Url, fetch, http
- FS & path
- os & process
- Event emitter
- timers & utils
Node.js Builtin modules
- 62 модуля
- многие вещи являются ситуативными
- модули можно писать на других языках программирования
- для node.js исключительно - napi(С++)
- можно использовать WASM
URL, fetch
URL - является глобальным объектом
fetch - является глобальной функцией
URL и fetch - часть спецификации HTML5(WHATWG)
URL
модуль по работе со веб адресом

URL
import { URL } from 'node:url'
const myURL_one = new URL('/foo', 'https://example.org/');
// https://example.org/foo
const myURL_two = new URL('https://my-site.com');
// https://my-site.com
new URL('some random string'); // error!
предоставляет 2 класса
- URL
- URLSearchParams
URLSearchParams
import { URL, URLSearchParams } from 'node:url'
const myURL = new URL('https://example.org/?abc=123');
console.log(myURL.searchParams.get('abc'));
// Prints 123
myURL.searchParams.append('abc', 'xyz');
console.log(myURL.href);
// Prints https://example.org/?abc=123&abc=xyz
const params = URLSearchParams({qwe: 'zxc'})
params.toString() // qwe=zxc
- get
- getAll
- set
- append
- delete
- forEach
- toString
- size
Fetch
Позволяет обращаться к удаленным ресурсам
fetch(resource)
fetch(resource, options)
// resource - string or Request instance
// options - object or RequestInit object
Пример
async function main(){
const res = await fetch('https://google.com');
console.log(res.ok) // true
console.log(await res.text()) // '<!doctype html>....'
}
main()
Пример. POST
async function main(){
const res = await fetch('https://jsonplaceholder.typicode.com/posts', {
method: "POST",
headers: {
"Accept": "application/json",
"Content-Type": "application/json"
},
body: JSON.stringify({
name: "some custom name",
})
});
console.log(await res.json())
// {name: "some custom name", id: 102}
}
main()
Response
Свойства
- ok
- status
- statusText
Методы
- text
- json
- blob
FS & path
Модули отвечают за фаиловую систему и правильность путей
path
Модуль node:path предоставляет утилиты для работы с путями к файлам и каталогам.
// CJS
const path = require('node:path')
// esm
import path from 'node:path'
path
import path from 'node:path'
console.log(process.env.PATH);
// Windows: 'C:\Windows\system32;C:\Windows;C:\Program Files\node\'
// Unix: '/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin'
path.delimiter // ; - Windows : - Unix
process.env.PATH.split(path.delimiter)
path.isAbsolute('/foo/bar'); // unix - true
path.isAbsolute('./bar'); // true
path.isAbsolute('C:/foo/..'); // windows - true
path.isAbsolute('bar\\baz'); // windows false
path.resolve('wwwroot', 'static_files/png/', '../gif/image.gif');
// If the current working directory is /home/myself/node,
// this returns '/home/myself/node/wwwroot/static_files/gif/image.gif'
path
Часто используемые функции
- normalize
- join
- parse
- resolve
Часто используемые константы
- delimiter
- sep
FS
предназначен для чтения\записи фаилов
существует асинхронный импорт
import fs from 'node:fs' // sync api
import fsAsync from 'node:fs/promises' // async api
const contentOne = fs.readFileSync('file.txt')
fs.readFile('file.txt', (err, content) => {
if(err) throw err
// work with content
})
const contentTwo = await fs.readFile('file.txt')
FS
Синхронные операции лучше избегать из-за возможности "заморозить" ОС из-за чтения-записи больших фаилов
Синхронные операции имеют суфикс sync
синхронные функции, которые работают на колбеках можно промисифицировать
FS. Частые API
- read(File,Dir)
- stat/exists
- rm(File,Dir)
- writeFile
- appendFile
- mkdir
Timers & utils
Таимеры(планирование) - часть стандарта HTML5.
Node.js таимеры отличаются
timers
import timers from 'node:timers'
import timersAsync from 'node:timers/promises'
import { setTimeout, setInterval } from 'node:timers/promises'
await setTimeout(2000) // wait 2 secпоставляет асинхронное апи
timers
Отличия от браузерного АПИ
- поддержка отмены(abortSignal/AbortController API)
- поддержка Promises
- внутреннее отичие
utils
набор утилит
- Text Encoder/Decoder
- debug
- inspect
- deprecate
- format
- promisify
OS & Process
Модули отвечают за информацию об операционной системы и текущем процессе выполнения
import os from 'node:os'
import process from 'node:process'
process модуль является "глобальным" объектом
OS. Частые API
- arch
- cpus
- env
- uptime
- tmpdir
- homedir
- version
- type
- release
Process.
Объект процесса предоставляет информацию о текущем процессе Node.js и управление им.
Процесс наследуется от события
- warning
- exit
- SIGTERM
Process. Частые API
- env
- cwd()
- chdir()
- pid
- ppid
- argv
- exit()
Events
один из важнейших модулей node.js
на нем построены такие модули как
- process, fs
- net, server, http, https, http2, websocket
- streams
- подпроцессы (cluster, worker,child_process)
- readline, REPL
Concept

Example
import { EventEmitter } from 'node:events'
const myEmitter = new EventEmitter()
myEmitter.on('event 1', () => {
console.log('event fired!!!')
})
setTimeout(() => {
myEmitter.emit('event 1')
})
References
- node.js - url module
- mdn - fetch
- mdn - response
- mdn - headers
- mdn - status codes
- node.js - util
- node.js - timers
- node.js - events
10 - node.js modules
By vitalic gorodkov
10 - node.js modules
- 188