Останні новини

Що таке Node.JS і чому мені це потрібно? [Веб-розробка]

JavaScript - це просто клієнтська мова програмування, яка працює в браузері, вірно? Вже ні. Node.js - це спосіб запуску JavaScript на сервері; але це набагато більше. Якщо ви взагалі цікавитеся веб-розробкою, вам дійсно потрібно трохи дізнатися про Node і про те, чому він робить хвилю в спільноті.

Що таке Node.js?

Node - це інтерфейс до середовища виконання V8 JavaScript - надшвидкий інтерпретатор JavaScript, який працює в браузері Chrome. Як це буває, ви також можете завантажити V8 і вбудувати його у що завгодно; Node робить це для веб-серверів. Зрештою, JavaScript - це всього лише мова - ніщо не говорить про те, що його не можна використовувати ні на сервері, ні в браузері користувача. У типовому стеку LAMP-сервера ви маєте базовий веб-сервер Apache або NGINX, на якому працює PHP. Кожне нове підключення до сервера породжує новий потік, і дуже легко швидко втратити продуктивність або відключити сайт - єдиний спосіб підтримати більше користувачів - додати більше серверів. Це просто погано масштабується. З Node це не так. Apache не може прослуховувати вхідні з "єднання і повертати коди стану HTTP - вам доведеться самостійно обробляти архітектуру головного сервера. На щастя, є модулі, щоб зробити це простіше, але це може все ще бути трохи переважним, коли ви починаєте. Результатом, однак, є високопродуктивний веб-додаток.

JavaScript - це основана на подіях мова, тому все, що відбувається на сервері, викликає неблокуючу подію. Кожне нове з "єднання запускає подію; дані, отримані з форми завантаження, запускають подію отримання даних; запит даних з бази даних викликає подію. На практиці це означає, що сайт Node ніколи не заблокується і може підтримувати десятки тисяч одночасно працюючих користувачів. Node.js відіграє роль сервера - Apache - і інтерпретує код програми, що запускається поверх нього. Як і в Apache, існують різні модулі (бібліотеки), які можуть бути встановлені для додавання функцій і можливостей, таких як сховища даних, підтримка Zip-файлів, логін Facebook або платіжні шлюзи. Звичайно, їх не так багато, як для PHP, але Node все ще знаходиться на ранній стадії, і за цим стоїть сильне співтовариство. Основна концепція Node - це асинхронні функції, тому все працює у фоновому режимі. У більшості мов сценаріїв на боці сервера програма повинна почекати, поки кожна функція завершиться, перш ніж перейти до наступної. За допомогою Node ви вказуєте функції, які повинні запускатися при завершенні чогось іншого, в той час як інша частина вашої програми рухається далі. Це складна тема, яку я не буду вдаватися в подробиці сьогодні, але це одна з тих характеристик, яка визначає Node, тому важливо зрозуміти її. Тим не менш, достатньо чату - ось приклад HTTP-сервера Hello World, щоб дати коротке уявлення про деякі з цих концепцій.

var http = require(""http""); http.createServer(function (request, response) { response.writeHead(200, { 'Content-Type': 'text/plain' }); response.write('Hello World!'); response.end(); }).listen(8080); console.log(""Server running!"");

Давайте спробуємо зламати це. По-перше, ми включаємо модуль http в проект. Потім ми створюємо сервер і передаємо анонімну функцію як параметр - ця функція буде викликатися для кожного нового з'єднання. Він приймає два аргументи - запит, що містить параметри запиту від користувача; і відповідь, яку ми будемо використовувати, щоб відправити речі назад. Потім ми використовуємо об'єкт відповіді, щоб написати користувачеві заголовок з HTTP-кодом відповіді 200 («ок») і типом контенту, написати повідомлення «Hello World!» І завершити відповідь. Нарешті, ми просимо сервер прослуховувати порт 8080 для вхідних запитів і виводити швидке повідомлення на консоль (командний рядок), щоб повідомити нам, що він працює. Якщо ви дійсно хочете спробувати це самі, збережіть наведений вище код як test.js, завантажте установник Node і з командного рядка запустіть -

node test.js

Відкрийте переглядач і перейдіть на localhost: 8080, щоб побачити ваш тестовий додаток! Тепер у вас має бути невелике уявлення про те, як працює вся ця асинхронна річ, поряд з моделями, керованими подіями. Якщо ви новачок у JavaScript, концепція передачі функцій як аргументів іншим функціям, ймовірно, трохи дивна.

Навіщо використовувати Node?

По-перше, для продуктивності і масштабованості. Вузол швидкий. Це досить важлива вимога, коли ви підприємець-початківець, намагаєтеся зробити наступну велику річ і хочете переконатися, що ви можете швидко масштабуватися, справляючись з напливом користувачів у міру зростання вашого сайту. Node також ідеально підходить для надання RESTful API - веб-служби, яка приймає кілька вхідних параметрів і передає небагато даних - просте маніпулювання даними без величезної кількості обчислень. Node може обробляти тисячі таких одночасно, коли PHP просто впаде. Крім переваг у плані продуктивності і масштабованості, є хороший шанс, що ви вже знаєте JavaScript, так навіщо ж вивчати абсолютно нову мову, таку як PHP? І потім - хвилювання вивчення чогось нового і відносно незвіданого. Ви знаєте, коли щось нове приходить і потім стає настільки всюдисущим, що ви шкодуєте, що не дізналися цього раніше, назавжди граючи в наздоганялки? Не роби цього цього разу. Вузол буде великим.

Downsides

Як і більшість нових технологій, розгорнути Node на існуючих хостах не так просто. Якщо у вас є спільний веб-хостинг, ви не можете просто завантажити додаток Node і очікувати, що він буде працювати. VPS і вибрані сервери краще розташовані - ви можете встановити Node на них. Ще простіше використовувати масштабований сервіс, такий як Heroku, на якому можна абсолютно безкоштовно розробляти свій сайт - платити потрібно тільки тоді, коли вам потрібно більше ресурсів. Я навів приклад використання Heroku раніше, коли ми використовували його для створення фангейту Facebook, але його можна використовувати і для Node. З іншого боку, дуже легко встановити Node локально на ПК з Windows, Mac або Linux і відразу почати розробку - просто перейдіть на Download Node. Також важливо зазначити, що Node - це не просто заміна Apache - існуючі веб-програми несумісні, і ви будете ефективно працювати з нуля (хоча існує безліч платформ, які допоможуть вам із загальними функціями). Іншим важливим недоліком вузла є те, що він все ще знаходиться на ранніх стадіях розробки, що означає, що деякі функції можуть змінюватися в міру розвитку. Фактично, якщо ви подивитеся на документацію, вона включає в себе індекс стабільності, який показує, наскільки ризиковано використовувати кожну функцію в даний час.: Ви знаєте - ніколи не було більш захоплюючим часом для веб-розробника. З відкритими веб-сервісами та обміном даними зробити щось дивовижне простіше, ніж будь-коли. Ви думаєте про вивчення Node? Добре. Іди і зроби наступний твіттер! Ви, ймовірно, також захочете отримати гарне уявлення про бібліотеку Javascript. про інтерфейс.