2. Що таке NodeJS
JS - на початку створювався як браузерний язик, який має певні обмеження:
- не працює з ОС
- дуже обмежено взаємодіє з файловою системою
NodeJS - це платформа, яка дозволяє використовувати JS для розробки серверних
додатків. Має свій API, який вирішує вищезазначені проблеми. Платформа
написана на С++.
NodeJS перетворює JS на машинний код. Робиться це завдяки движку V8. Движок
працює разом з Libuv (багато-платформова C-бібліотека, що забезпечує підтримку
асинхронний ввід/вивід на основі цикла події). V8 розроблялось та підтримується
Google.
3. Що таке NodeJS
Движок V8 використовується в Google Chrome.
Окрім перетворення JS в машинний код NodeJS займається виділом
пам’яти під об’єкти та “збиранням сміття”.
Libuv забезпечує введення/ виведення на всіх OS (кросплатформенно).
Забезпечує роботу з файловою системою та мережою. Робиться це
асінхронно в циклі подій (Event Loop)
4. Переваги NodeJS
- швидкість, тому що використовується неблокуюче введення та
виведення
- backend + frontend пишемо на одній мові програмування
- має пакетний менеджер (npm), який має десятки тисяч бібліотек
для вирішення любих проблем
- швидке прототипування - можемо створити прототип додатка та
продемонструвати ідею
5. Встановлення NodeJS
- https://nodejs.org/en/ Скачуємо за посиланням (LTS version)
- Разом з NodeJS автоматично скачується npm
- В терміналі/консолі вводимо node -v, щоб перевірити версію
NodeJS
- так само можемо перевірити й версію npm: npm -v
Тепер ви можете запускати ваш JS код в терміналі VS Code ібо іншій IDE:
- В IDE відкрийти папку з вашим JS файлом/-ми
- відкрийте термінал та введіть в ньому node <file>
6. Використання npm. Package.json файл
Керування проектів, які працюють під NodeJS відбувається за допомогою
package.json файла. Package.json це ваша карта проекту. В ньому
прописуються всі залежності (посилання на пекеджі), скріпти (команди по
запуску проекта, тестуванню, форматуванню інше), можуть прописуватись
базові конфігурації бібліотекою, та багато іншої інформації.
Npm використовується і в frontend додатках, написаних на JS (React, Angular,
Vue).
Створюється package.json файл в корні проекту за допомогою команди npm
init
Команда npm init -y дозволить створити package.json з налаштуваннями “за
замовчуванням”
7. Dependencies/Dev dependencies
Всі бібліотекі, які нам потрібні для роботи додатку, і які ми будемо
використовувати через npm прописуються в розділах dependencies/
devdependencies файлу package.json.
В розділі dependencies прописуемо залежності які використовуються і в
продакшені і в розробці.
В розділі devdependencies прописуемо залежності які використовуються і в
тільки в розробці (development).
npm i <packagename> - додаємо залежність до розділу dependencies
npm i <packagename> -D - додаємо залежність до розділу dependencies
8. Scripts
Розділ “scripts” дозволяє прописувати команди/послідовність команд, які
використовуються для швидкого запуску, збірки, тестування додатку.
Приклад:
Перший скрипт запускає файл index.js -> npm run start
Другий скрипт теж запускає файл index.js але в режимі відстеження змін ->
npm run dev
9. Глобальні об’єкти
Це об’єкти, які доступні в любому js файлі NodeJS. Весь перелік об’єктів див. за
посиланням https://nodejs.org/api/globals.html
Часто уживані:
- console
- process
- module
- __dirname
- __filename
- URL
- fetch
- exporst
10. Модулі
NodeJS використовую модульну систему.
Тобто вся вбудована функціональність розбита на окремі пакети чи модулі.
Модуль є блоком коду, який може використовуватися повторно в інших
модулях.
При необхідності ми можемо підключати потрібні нам модулі.
NodeJS має свої вбудовані модулі:
- HTTP/HTTPS
- File system
- OS та інші
Повний перелік вбудованих модулів https://nodejs.org/api/
11. Модулі. Підключення
Для створення та підключення модулів використовується два синтаксіси:
CommonJS, ES6
*smth - об ‘єкт, константа, класс, функція
CommonJS ES6
import const obj = require(path); import smth from path; // for default export
import {smth} from path;
export module.exports = smth; export default smth;
export smth;
12. Модулі. Events
Events вбудований в NodeJS модуль для роботи з подіями.
Усі об’єкти, які генерують події, представляють екземпляри класу
EventEmitter.
За допомогою функції on() зв’язуємо подію, яка передається в якості першого
параметра, з callback функцією, яка передається в якості другого параметра,
та описує реакцію на подію.
Для генерації подій використовується emitter.emit(), в якій передається назва
події, та параметри, від яких залежить подія, якщо такі параметри є.
13. Модулі. Робота з файловою системою
Для роботи з файлами у Node.js призначений модуль fs.
Цей модуль дозволяє створювати, змінювати, видаляти файли.
Працює в асинхронному режимі, аде має аналоги основних методів і для
роботи в синхронному режимі.
- fs.mkdir/fs.mkdirSync - створення папки
- fs.readFile/fs.readFileSync - читання файлу
- fs.writeFile/fs.writeFileSync - запис файлу
- fs.rm/fs.rmSync - видалення файлу/папки
15. Створення та реєстрація пакетів у npm
- реєструємость на https://www.npmjs.com/
- створюємо проект
- генеруємо package.json файл
- обов’язково вказуємо package name (унікальне для npm), версію
- бажано додати git repository, keywords
- логінимось в терміналі за допомогою команди npm login
- публікуємо командою npm publish
- при змінах пекеджу міняємо версію і публікуємо знову
Для більш зручної роботи по створенню та публікації пакетів є бібліотека np
https://www.npmjs.com/package/np