Node.js - це програмна платформа, яка робить JavaScript мовою загального призначення. Її також називають середовищем виконання JS. Вона вміє зв'язуватися із зовнішніми бібліотеками, викликати команди з коду і виконувати роль веб-сервера. Якщо пояснювати простіше, цей інструмент додає до повністю фронтендової мови бекендову частину, даючи змогу створювати за її допомогою не лише вебсайти, а й повноцінні додатки, без задіяння браузера.
Як і JavaScript, Node запускається у V8. Це середовище виконання, що переводить написане веб-розробником у машинний код - набір прямих інструкцій для комп'ютера, які не потребують інтерпретації. Таким чином низькорівневий код стає швидким і зручним для розпізнавання машиною. Нижче ми розглянемо плюси та мінуси Node js.
Чому саме Node js?
Плюси Node js можна перераховувати досить довго, але найбільш значущий - неблокуюча модель введення-виведення. Ця система керована подіями і працює асинхронно, вибудовуючи чергу за пріоритетністю. Коли до сервера одночасно підключаються тисячі людей, їй легше впоратися з навантаженням, оскільки немає потреби створювати окремий потік для кожного підключення. Грамотний розподіл ресурсів допомагає витримати більшу кількість з'єднань. Тому така модель ідеальна для того, щоб створити чат-бота або використовувати її в онлайн-грі
Інші переваги
-
Можливість застосовувати одну мову на клієнті та сервері. Якщо програміст прокачався в JavaScript, йому буде легше вивчити "надбудову", ніж кардинально відмінну технологію.
Загальний код. Коду, який використовується і на клієнті, і на серверному боці, небагато, але він присутній. Головне - розуміти, що часто об'єкти з однаковими назвами можуть виконувати абсолютно різні функції в браузері і на бекенді.
Розроблявся спеціально для web. Вільно взаємодіє з найбільш популярними базами даних, допомагає отримати низькорівневий доступ (http, udp, https, tcp). -
Швидкість. Створення робочого прототипу, що справляється з навантаженням, не забере багато часу. Перший етап, коли програміст формує кістяк майбутнього продукту, проходить дуже швидко. Якщо архітектура добре продумана, то надалі труднощів із тим, щоб розширювати сайт на Node JS теж не з'явиться.
Велике і бадьоре ком'юніті. Оскільки код відкритий, веб-розробники можуть писати різні модулі та пакети і ділитися ними. Найчастіше, модулі добре комбінуються. -
Синтаксис JavaScript. Так, доведеться вивчити нові інструменти, але буде багато звичного. Це забезпечує відносну простоту і доступність.
Вбудована бібліотека. З кожним оновленням вона розширюється, але навіть у першій версії були досить широкі можливості.
Постійний розвиток екосистеми. Кількість готових модулів і зовнішніх бібліотек безперервно зростає, чому сприяє використання npm.
Движок V8. Він економно витрачає пам'ять, непогано оптимізований, дає функціонал з профілювання процесора і пам'яті. - Технологія стрімко покращується, над цим працюють тисячі програмістів по всьому світу. Процес координує фонд Node. Складно недооцінити роль ком'юніті, адже це допомога зі складнощами, велика кількість навчальних матеріалів, оперативно знайдені помилки у функціонуванні системи, можливість обговорити ідеї або знайти команду. З "живою" спільнотою розвиток технології відбувається набагато швидше, і все завдяки відкритому коду. Популярність і переваги Node js не залишилися непоміченими, його вже обрали такі компанії, як Google, Ebay/PayPal, Netflix, Microsoft, Uber, Linkedin, Yahoo, Walmart та інші.
Що можна написати на Node.js?
Завдяки цьому інструменту можна створити як програму для вебу, так і для Linux, OS X і Windows. Використовуючи бібліотеки, можна також сформувати API. Додаються шляхи синхронізації мобільного з комп'ютером - під час написання тексту на телефоні, його буде видно в інтернеті та на ПК/ноутбуці. На відміну від звичайного браузерного JavaScript, Node вміє взаємодіяти з глобальними об'єктами, включно з document і window, при створенні додатків для Windows. Це відкриває шлях до вінчестера і файлової системи користувача. Крім цього, в поле доступу потрапляють бібліотеки і програмні рішення, які вже є на комп'ютері.
Відомі проекти, написані на Node
- Mozilla. Розробники браузера говорять про те, що Node сильно спростив роботу, як мінімум, з двох причин. Перша - використання однієї мови для бекенда і фронтенда, а друга - обсяг пам'яті, необхідної для функціонування системи.
- Paypal. Система Ілона Маска, Макса Левчина, Пітера Тіля, Ю Пана, Кена Гавері і Люка Носека, що дає змогу працювати з платежами, без обміну фінансовою інформацією. За даними за 2018 рік, на сайті налічувалося 227 мільйонів активних акаунтів. Створення додатку зайняло вдвічі менше часу, ніж на
- Java. Також скоротилися обсяги конструкцій і зменшилася кількість файлів. Програмісти, які працюють над Paypal заявляють, що Node допоміг налагодити зв'язок між браузером і сервером завдяки тому, що обидві сторони написані однією мовою.
- eBay. 170 мільйонів користувачів оцінили зрозумілий, спритний і добре організований додаток. Творці прагнули до створення якомога більш чуйної веб-платформи - інтерактивної та здатної взаємодіяти з відвідувачами в режимі реального часу. Вони виконали не тільки це, а й налагодили взаємодію сервісів, інформація з яких нонстопом оновлюється на сторінках сайту.
- Shutterstock. Ресурс з великою кількістю взаємодії між продавцями і покупцями. Вона дозволяє виставляти свої ілюстрації, музику, векторні зображення, відео. З іншого боку, люди можуть придбати готовий об'єкт за кілька центів за стандартним доступом або за кілька десятків/сотень доларів за розширеним.
- Walmart. Найбільша світова мережа роздрібної торгівлі почала продавати товари і через інтернет. Для цього було створено додаток з асинхронним введенням/виведенням, що заощадило супермаркетам масу ресурсів.
Варто зазначити, що в деяких випадках використання цієї платформи - не найкраще рішення. Наприклад, для програм з об'ємними обчислювальними процесами.
Доцільно застосовувати її для веб-ресурсів, що вимагають насиченого обміну даними з користувачами. Усе тому, що основні переваги зачіпають саме цю сферу. Так, поки Node JS додаток чекає відповіді від бази даних сервера, він обробляє інші запити, що дає змогу працювати в хорошому темпі з тисячами з'єднань.