Що означає «I/O» у контексті Node.js?
У контексті Node.js термін I/O означає Input/Output - тобто введення й виведення даних. Це загальне позначення будь-яких операцій, пов'язаних із взаємодією програми із зовнішнім світом:
- читання й запис файлів (через
fs), - запити до бази даних,
- мережеві запити (HTTP, TCP, WebSocket тощо),
- операції з консоллю чи користувачем.
Основна ідея:
Node.js побудований навколо неблокуючого (асинхронного) I/O. Це означає, що коли програма виконує, наприклад, читання файлу чи HTTP-запит, вона не чекає, поки операція завершиться - натомість:
- Запускає операцію (наприклад, читання файлу);
- Передає керування далі;
- Коли операція завершиться, викликається callback, Promise чи async/await, щоб обробити результат.
Приклад:
const fs = require('fs');
// Асинхронне (неблокуюче) читання файлу:
fs.readFile('data.txt', 'utf8', (err, data) => {
if (err) throw err;
console.log(data);
});
console.log('Цей лог виведеться раніше, ніж вміст файлу');Тут Node.js не чекає завершення читання файлу, а продовжує виконувати код далі - це приклад асинхронного I/O.
Чому це важливо:
- Не блокує потік виконання.
- Дозволяє Node.js обслуговувати тисячі одночасних запитів.
- Основа високої продуктивності при роботі з мережею й файлами.
Підсумок:
I/O (Input/Output) у Node.js - це операції введення-виведення (файли, мережа, база даних тощо), реалізовані асинхронно й неблокуюче, щоб ефективно використовувати однопоточну архітектуру.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.