Node.js для початківців: опис, керівництво, особливості

342 0 Новини високих технологій

Node.js — це середовище виконання javascript, вбудована у версію движка JS V8 від Chrome. Платформа Node.js для початківців використовує керовану подіями, не блокує модель вводу-виводу, яка робить її легкою і ефективною. Пакетна екосистема Node.js є найбільшою екосистемою бібліотек з відкритим вихідним кодом в світі. Проект підтримується Фондом Node.js. Внески, політика і випуски контролюються в рамках моделі відкритого управління.

Node.js для початківців: визначення

Node.js — це платформа розробки з відкритим вихідним кодом для виконання коду javascript на стороні сервера. Node корисний для розробки додатків, яким потрібна постійне з'єднання з браузера з сервером. Часто використовується для додатків реального часу, таких як чат, новинні стрічки і push-повідомлення.
Node.js для початківців: опис, керівництво, особливості



Node.js призначений для роботи на виділеному сервері HTTP і для використання одного потоку з одним процесом за одну одиницю часу. Початок роботи Node.js засноване на подіях і виконується асинхронно. Код, побудований на даній платформі, не відповідає традиційній моделі прийому, обробки, відправки, очікування та одержання. Замість цього Node обробляє вхідні запити в стеку постійних подій, відправляє невеликі запити один за іншим і не отримують відповідей. Книги Node.JS для початківців містять багато даних щодо переходу від основних моделей, які запускають більш великі, складні процеси і одночасно запускають декілька потоків. Кожен з них чекає свого відповідного відповіді, перш ніж рухатися далі.


Початок Node.js — javascript

Node базується на javascript, у зв'язку з чим розуміння роботи даної платформи неможливо без екскурсу в JS. Уроки для початківців Node.js містять багато вступної інформації про мову програмування, на якому була заснована ця платформа. javascript — це інтерпретується в microsoft мова програмування або скриптів з Netscape. Він схожий на можливості Microsoft Visual Basic, Sun Tcl, Perl від UNIX і REXX від IBM. Мови сценаріїв javascript простіше і швидше кодувати, ніж більш структуровані і скомпільовані, такі як C і C ++. Мови скриптів зазвичай займають більше часу, ніж компилируемые, але вони дуже корисні для коротких програм. javascript використовується в розробці веб-сайту для виконання таких завдань, як автоматична зміна форматированной дати на веб-сторінці. Це причина, по якій пов'язана сторінка буде відображатися у спливаючому вікні. При зміні тексту або графічного зображення javascript використовує ті ж ідеї, що і в Java (скомпільований об'єктно-орієнтоване програмування, похідне від C ++).
Node.js для початківців: опис, керівництво, особливості

Характерні особливості JS

javascript зазвичай використовується у веб-розробці. Він був спочатку розроблений Netscape як засіб для додавання динамічних та інтерактивних елементів на веб-сайти. Хоча javascript залежить від Java, синтаксис більше схожий на C і заснований на ECMAScript — мовою сценаріїв, розроблений Sun Microsystems. javascript — це мова сценаріїв на стороні клієнта. Це означає, що вихідний код обробляється веб-браузером клієнта, а не веб-сервером. Функції можуть запускатися після завантаження веб-сторінки без зв'язку з сервером. Наприклад, функція javascript може перевіряти веб-форму перед відправкою, щоб переконатися, що всі необхідні поля заповнені. Код може видати повідомлення про помилку, перш ніж яка-небудь інформація буде фактично передана на сервер.
Подібно серверним скриптовою мовам, таким як PHP і ASP код javascript може бути вставлений в будь-якому місці HTML-сторінки у веб. Проте в HTML відображається тільки висновок серверного коду, а код javascript залишається повністю видимим в джерелі веб-сторінки. Його також можна знайти в окремому файлі .JS, який можна переглянути у браузері.

Зразки коду

Нижче наведено приклад базової функції javascript, яка додає два числа. Функція викликається з параметрами 7 і 11. Якщо наведений нижче код був включений в HTML веб-сторінки, він відобразив текст «18» в полі попередження. javascript функції можна викликати в тегах Популярність додатків javascript стрімко зростає в останні кілька років, а Node.js безумовно сприяє цьому зростанню. Якщо ми подивимося на статистичні дані, то побачимо, що в світі більше пакетів Node, ніж аналогічних даних Ruby. Другий фактор: пакети Node ростуть швидше, ніж Ruby, Python і Java. Що робить більш популярним, ніж Rails і інші альтернативи Node.JS? З чого почати вивчення? Node сам по собі є асинхронної платформою, заснованої на події, побудованої на базі движка javascript Chrome і призначеної для створення масштабованих мережевих додатків. Іншими словами, Node.js — це javascript плюс C/C ++ в сукупності з файловою системою, запуском HTTP або TCP-серверів. Node однопоточен і використовує модель паралелізму, засновану на циклі подій. Він не блокує процеси і не змушує програму чекати, але реєструє зворотній дзвінок і дозволяє додатком продовжити роботу. Це означає, що платформа може обробляти паралельні операції без декількох потоків виконання і ефективно масштабується. Між послідовними мовами і Node.js існують великі відмінності:
  • Node дозволяє виконувати інші завдання, очікуючи повідомлення, коли відповідь буде доступний;
  • додаток не буферизує дані в пам'ять, а замість цього виводить його фрагментарно.
  • Хоча існують інші системи циклів подій (наприклад, бібліотека EventMachine в Ruby або Twisted на Python), між ними і Node існує значна різниця. В Node.JS всі бібліотеки були розроблені з нуля, щоб бути неблокируемыми, чого не можна сказати про інших.
    Node.js для початківців: опис, керівництво, особливості

    Варіанти використання

    Node ідеально підходить для додатків з прив'язкою до введення-висновку, але не настільки хороший для додатків з важким процесором. Чудовим прикладом є програми для роботи в режимі реального часу (DIRT), односторінкові, API JSON і програми для потокової передачі даних.

    Офіційний менеджер пакетів Node (NPM)

    Node зобов'язаний великою частиною свого успіху менеджера пакетів, який поставляється разом з ним. Переваги цього інструменту:
  • він встановлює залежності додатків локально, а не глобально;
  • одночасно він обробляє декілька версій одного і того ж модуля;
  • ви можете вказати tarballs або git repositories як залежностей;
  • дуже легко опублікувати власний модуль в реєстрі NPM.
  • Установка Node.js

    Для початківців існують офіційні інсталятори для Node в Windows і OS X, також представлена можливість установки через диспетчер пакетів. Для тестування коду користувача з різними версіями вузлів використовується NVM (менеджер версій Node). З цим інструментом ви можете використовувати кілька версій сайту, встановлених в системі, і легко перемикатися між ними. В наступних кількох рядках ми побачимо, як встановити NVM в систему Ubuntu.
    Node.js для початківців: опис, керівництво, особливості
    По-перше, ми повинні переконатися, що наша система має компілятор C ++: $ sudo apt-get update $ sudo apt-get install build-essential libssl-dev Після ми можемо скопіювати і вставити однорядковий інсталятор для NVM в термінал: $ curl https://raw.githubusercontent.com/creationix/nvm/v0131/install.sh | hit NVM повинен бути правильно встановлений, тому ми виходимо з системи і авторізуємось, щоб переконатися, що все коректно. Вводимо команду: $ nvm Якщо при введенні не виникає помилки, це означає, що все в порядку. Тепер ми можемо перейти до фактичного встановлення Node і NPM. Результат у командному рядку має виглядати наступним чином: $ nvm install v01031 ################################################## ################ 1000% Тепер обидва вузла і npm повинні бути доступні в терміналі: $ node -v & & & npm -v v01031 1423 Тепер необхідно налаштувати запуск Node.JS за замовчуванням за допомогою команди у терміналі: $ nvm alias default 01031 Ми можемо встановити інші версії Node так само, як і раніше, а перемикатися між ними за допомогою команди nvm use: $ nvm install v0810 Якщо ви не знаєте, які версії встановлені у вашій системі, просто введіть nvm-list. Це інструмент покаже вам повний список, а також поточні та версії, наприклад: list $ nvm v063 v0612 v0614 v0619 v077 v078 v079 v086 v0811 v0103 v01012 v01015 v01021 v01024 v0119 струм: v01024 default -> v01024
    Node.js для початківців: опис, керівництво, особливості

    Модулі

    У підручнику Node.JS для початківців Java або Python пропонується використання функції імпорту для завантаження інших бібліотек, в той час як застосування PHP і Ruby цього не вимагає. Node реалізує інтерфейс CommonJS для модулів. Також ви можете завантажувати інші варіанти, використовуючи ключове слово require. Наприклад, нам можуть знадобитися деякі власні модулі: var http = require ('http'); var dns = require ('dns'); Ми також можемо викликати відносні файли: var myFile = require ('./myFile'); //download myFile.js Щоб встановити модулі з числа NPM, виконайте пошук їх на веб-сайті або в Github. Синтаксис для установки модуля локально досить простий: # where express === ім'я модуля $ npm install express

    Зворотні виклики

    В асинхронному програмуванні ми не повертаємо значення, коли виконуються функції, але замість цього використовуємо спосіб продовження проходження (CPS). За допомогою цього стилю асинхронна функція викликає зворотний виклик (функція, зазвичай передається як останній аргумент) для продовження програми після її завершення. Нижче наведено приклад пошуку IPv4-адрес для домену: var dns = require ('dns'); dns.resolve4 ('www.google.com', function (err, addresses) { if (err) throw err; console.log ('addresses:' + JSON.stringify (addresses)); }); Ми передали зворотний виклик (вбудовану анонімну функцію) в якості другого аргументу асинхронної dns.resolve4. Як тільки функція async буде готова, він викличе зворотний виклик, продовживши виконання програми.

    Події

    У керівництві для початківців Node.JS представлений стандартний шаблон зворотного виклику, який добре працює для випадків використання, коли ми хочемо отримувати повідомлення при завершенні функції асинхронизации. Проте є ситуації, що вимагають повідомлення про різні події, які відбуваються одночасно. Давайте розглянемо це на прикладі коду з IRC-клієнтом: var irc = require ('irc'); var client = new irc.Client ('irc.freenode.net', 'myIrcBot', { каналів:['# sample-channel'] }); client.on ('error', function (message) { console.error ('error:', message); }); client.on ('connect', function () { console.log («підключений до сервера irc»); }); client.on ('message', function (from, to, message) { console.log (from + '=>' + to + ':' + message); }); client.on ('pm', function (from, message) { console.log (from + '=> ME: + message); }).
    Node.js для початківців: опис, керівництво, особливості
    У наведеному вище прикладі ми маємо справу з трьома типами подій:
  • подія підключення видається, коли клієнт успішно підключився до IRC-сервера;
  • подія помилки запускається в разі виникнення помилки;
  • повідомлення та події pm обрані для вхідних повідомлень.
  • Вищезазначені події роблять цю ситуацію ідеальною для використання шаблону EventEmitter. Шаблон EventEmitter дозволяє розробникам випускати подія, на яку споживачі можуть підписатися, якщо вони в цьому зацікавлені. Цей шаблон може бути знайомий з браузером, де він використовується для приєднання обробників подій. Node має клас EventEmitter в ядрі, який ми можемо використовувати для створення власних об'єктів EventEmitter. Спробуємо створити клас MemoryWatcher, який успадковує EventEmitter і генерує два типи подій:
  • даних з регулярним інтервалом, яке представляє використання пам'яті в байтах;
  • подія помилки, якщо пам'ять перевищує певний межа.
  • Отже, Node - це не веб-сервер, а один із способів створити код на комп'ютері. Він є середовищем для виконання javascript.