URL - является глобальным объектом
fetch - является глобальной функцией
URL и fetch - часть спецификации HTML5(WHATWG)
модуль по работе со веб адресом
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 класса
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
Позволяет обращаться к удаленным ресурсам
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()
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()
Свойства
Методы
Модули отвечают за фаиловую систему и правильность путей
Модуль node:path предоставляет утилиты для работы с путями к файлам и каталогам.
// CJS
const path = require('node:path')
// esm
import path from 'node: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'
Часто используемые функции
Часто используемые константы
предназначен для чтения\записи фаилов
существует асинхронный импорт
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')
Синхронные операции лучше избегать из-за возможности "заморозить" ОС из-за чтения-записи больших фаилов
Синхронные операции имеют суфикс sync
синхронные функции, которые работают на колбеках можно промисифицировать
Таимеры(планирование) - часть стандарта HTML5.
Node.js таимеры отличаются
import timers from 'node:timers'
import timersAsync from 'node:timers/promises'
import { setTimeout, setInterval } from 'node:timers/promises'
await setTimeout(2000) // wait 2 secпоставляет асинхронное апи
Отличия от браузерного АПИ
набор утилит
Модули отвечают за информацию об операционной системы и текущем процессе выполнения
import os from 'node:os'
import process from 'node:process'
process модуль является "глобальным" объектом
Объект процесса предоставляет информацию о текущем процессе Node.js и управление им.
Процесс наследуется от события
один из важнейших модулей node.js
на нем построены такие модули как
import { EventEmitter } from 'node:events'
const myEmitter = new EventEmitter()
myEmitter.on('event 1', () => {
console.log('event fired!!!')
})
setTimeout(() => {
myEmitter.emit('event 1')
})