Node.js

Поделись знанием:
Перейти к: навигация, поиск
Node.js
Автор

Ryan Lienhart Dahl

Разработчик

[github.com/joyent/node/blob/master/AUTHORS Node.js Developers]

Первый выпуск

27 мая 2009[1]

Состояние

активное

К:Википедия:Статьи без изображений (тип: не указан)К:Программное обеспечение, разработанное в 2009 году

Node или Node.js — программная платформа, основанная на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API (написанный на C++), подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Node.js применяется преимущественно на сервере, выполняя роль веб-сервера, но есть возможность разрабатывать на Node.js и десктопные оконные приложения (при помощи NW.js, AppJS или Electron для Linux, Windows и Mac OS) и даже программировать микроконтроллеры (например, tessel и espruino). В основе Node.js лежит событийно-ориентированное и асинхронное (или реактивное) программирование с неблокирующим вводом/выводом.





История

В 1996 году в компании Netscape были попытки создания серверного JavaScript (Server-side JavaScript — SSJS)[2][3], однако технология не получила распространения.

Node.js разработал Райан Дал (англ. Ryan Dahl) в 2009 году после двух лет экспериментирования над созданием серверных веб-компонентов. В ходе своих исследований он пришёл к выводу, что вместо традиционной модели параллелизма на основе потоков следует обратиться к событийно-ориентированным системам. Эта модель была выбрана из-за простоты, низких накладных расходов (по сравнению с идеологией «один поток на каждое соединение») и быстродействия. Целью Node является предложить «простой способ построения масштабируемых сетевых серверов».

Разработка Node.js спонсируется компанией Joyent (англ.).

В декабре 2014 года был создан форк io.js.

В мае 2015 года было принято решение о слиянии io.js и Node.js и дальнейшем развитии под эгидой Node.js Foundation.[4]

8 сентября 2015 года вышел Node.js v4.0.0 как результат слияния Node.js v0.12.7 и io.js v3.3.0.[5][6]

Примеры кода

Создание и запуск HTTP-сервера на Node.js, выдающего Hello, world!:

// Загружаем модуль http
var http = require('http');

// Создаем web-сервер с обработчиком запросов
var server = http.createServer(function (req, res) {
    console.log('Начало обработки запроса');
    // Передаем код ответа и http-заголовки
    res.writeHead(200, {
        'Content-Type': 'text/plain; charset=UTF-8'
    });
    res.end('Hello world!');
});

// Запускаем web-сервер
server.listen(2002, "127.0.0.1", function () {
    console.log('Сервер запущен 127.0.0.1:2002/');
});

Другой пример скрипта, создающего TCP-сервер, который прослушивает порт 1337 и выводит на экран всё, что вводит пользователь:

var net = require('net');

var server = net.createServer(function (stream) {
    stream.setEncoding('utf8');

    stream.write('hello\r\n');

    stream.addListener('data', function (data) {
        this.write(data);
    });

    stream.addListener('end', function () {
        this.write('goodbye\r\n');
        this.end();
    });
});

server.listen(1337, 'localhost');

Каркас разработки для web

Express.js, или просто Express, каркас web-приложений для Node.js, реализованный как свободное и открытое программное обеспечение под лицензией MIT. Он спроектирован для создания веб-приложений и API[7]. Де-факто является стандартным каркасом для Node.js. Автор фреймворка, TJ Holowaychuk, описывает его как созданный на основе написанного на языке Ruby каркаса Sinatra, подразумевая, что он минималистичен и включает большое число подключаемых плагинов. Express является backend'ом для программного стека MEAN, вместе с базой данных MongoDB и каркасом AngularJS для frontend'а.


Дополнительные пакеты сторонних разработчиков

В состав Node.js входит собственный установщик пакетов npm. Установка производится при помощи команды:

npm install <packagename>

Все доступные для установки пакеты и их краткое описание:

npm search

Этой же командой можно производить выборочный поиск пакетов.

Недостаток — он не показывает, сколько информации для установки необходимо скачать, а также прогресс установки в процентах. Как правило, размер пакета не будет превышать 10 МБ.

Кроме npm имеется специализированный поисковик пакетов для Node.js node-modules.com/ и каталог пакетов с их рейтингом nodejsmodules.org/.

Инструменты и IDE

  • [c9.io/ Cloud9] (облачный сервис с открытым исходным кодом[8])
  • JetBrains WebStorm/PhpStorm или IntelliJ IDEA (коммерческие продукты, есть бесплатная версия Community Edition)
  • Microsoft WebMatrix (бесплатный) или Visual Studio (коммерческий продукт, есть бесплатная версия Community Edition), [code.visualstudio.com Visual Studio Code] (бесплатный)
  • NetBeans с [plugins.netbeans.org/plugin/36653/nodejs Node.js плагином]
  • Nodeclipse (Nodeclipse-1 Eclipse plugin, Eclipse Node.js IDE, известный также как Enide)
  • [testcafe.devexpress.com/ TestCafé]
  • [lighttable.com/ Lighttable]
  • [atom.io/ Atom]

Nide

Релиз проекта Nide был представлен 16 января 2012 года, в его рамках развивается интегрированная среда разработки приложений для платформы Node.js. IDE Nide построена с использованием веб-технологий и может быть запущена как локальное приложение или как удалённый сервис, работающий через веб-браузер. В комплект также входит утилита nide, позволяющая выполнять типовые действия над проектами и NPM-пакетами из командной строки.

Код проекта распространяется под лицензией MIT. Nide может быть запущен на любых платформах, на которых работает Node.js, однако сборка с обособленным приложением пока доступна только для Mac OS X[9].

Напишите отзыв о статье "Node.js"

Примечания

  1. [github.com/nodejs/node-v0.x-archive/tags?after=v0.0.4 Tags · nodejs/node-v0.x-archive · GitHub]. GitHub.
  2. [developer.mozilla.org/en-US/docs/Archive/Web/Server-Side_JavaScript Server-Side JavaScript - Archive of obsolete content | MDN]
  3. [www.opennet.ru/docs/RUS/servguide14/contents.html Серверный JavaScript 1.4. Руководство по Использованию.]
  4. [habrahabr.ru/post/258047/ io.js объединяется с NodeJS].
  5. [geektimes.ru/post/262144/ Node.js + Io.js = Node.js 4.0.0].
  6. [habrahabr.ru/post/266499/ Вышла в свет новая версия Node.js v4.0.0].
  7. [expressjs.com Express.js home page].
  8. [github.com/ajaxorg/cloud9/ GitHub - ajaxorg/cloud9: Replaced by Cloud9 V3!]. GitHub.
  9. [www.opennet.ru/opennews/art.shtml?num=32824 Релиз Nide 0.2, интегрированной среды разработки для Node.js]. opennet.ru (16 января 2012). Проверено 7 мая 2013. [www.webcitation.org/6GXqVUtBL Архивировано из первоисточника 12 мая 2013].

Ссылки

  • [nodejs.org/ Официальный веб-сайт]
  • [node-center.ru/ Официальный русскоязычный веб-сайт]
  • [github.com/nodejs/node Репозиторий исходного кода]
  • [groups.google.com/group/nodejs Форум на Google groups]
  • [learn.javascript.ru/nodejs-screencast Скринкаст Node.JS от А до Я]
  • [habrahabr.ru/post/266499/ Вышла в свет новая версия Node.js v4.0.0]

Литература

  • Итан Браун. Веб-разработка с применением Node и Express. Полноценное использование стека JavaScript. = Web Development with Node and Express / Итан Браун;. — Санкт-Петербург: Питер, 2017. — 336 с. — ISBN 978-1-491-94930-6.


Отрывок, характеризующий Node.js

Князь остановился. Он заметил впечатление, произведенное этими словами на дочь. Она опустила голову и собиралась плакать.
– Ну, ну, шучу, шучу, – сказал он. – Помни одно, княжна: я держусь тех правил, что девица имеет полное право выбирать. И даю тебе свободу. Помни одно: от твоего решения зависит счастье жизни твоей. Обо мне нечего говорить.
– Да я не знаю… mon pere.
– Нечего говорить! Ему велят, он не только на тебе, на ком хочешь женится; а ты свободна выбирать… Поди к себе, обдумай и через час приди ко мне и при нем скажи: да или нет. Я знаю, ты станешь молиться. Ну, пожалуй, молись. Только лучше подумай. Ступай. Да или нет, да или нет, да или нет! – кричал он еще в то время, как княжна, как в тумане, шатаясь, уже вышла из кабинета.
Судьба ее решилась и решилась счастливо. Но что отец сказал о m lle Bourienne, – этот намек был ужасен. Неправда, положим, но всё таки это было ужасно, она не могла не думать об этом. Она шла прямо перед собой через зимний сад, ничего не видя и не слыша, как вдруг знакомый шопот m lle Bourienne разбудил ее. Она подняла глаза и в двух шагах от себя увидала Анатоля, который обнимал француженку и что то шептал ей. Анатоль с страшным выражением на красивом лице оглянулся на княжну Марью и не выпустил в первую секунду талию m lle Bourienne, которая не видала ее.
«Кто тут? Зачем? Подождите!» как будто говорило лицо Анатоля. Княжна Марья молча глядела на них. Она не могла понять этого. Наконец, m lle Bourienne вскрикнула и убежала, а Анатоль с веселой улыбкой поклонился княжне Марье, как будто приглашая ее посмеяться над этим странным случаем, и, пожав плечами, прошел в дверь, ведшую на его половину.
Через час Тихон пришел звать княжну Марью. Он звал ее к князю и прибавил, что и князь Василий Сергеич там. Княжна, в то время как пришел Тихон, сидела на диване в своей комнате и держала в своих объятиях плачущую m lla Bourienne. Княжна Марья тихо гладила ее по голове. Прекрасные глаза княжны, со всем своим прежним спокойствием и лучистостью, смотрели с нежной любовью и сожалением на хорошенькое личико m lle Bourienne.
– Non, princesse, je suis perdue pour toujours dans votre coeur, [Нет, княжна, я навсегда утратила ваше расположение,] – говорила m lle Bourienne.
– Pourquoi? Je vous aime plus, que jamais, – говорила княжна Марья, – et je tacherai de faire tout ce qui est en mon pouvoir pour votre bonheur. [Почему же? Я вас люблю больше, чем когда либо, и постараюсь сделать для вашего счастия всё, что в моей власти.]
– Mais vous me meprisez, vous si pure, vous ne comprendrez jamais cet egarement de la passion. Ah, ce n'est que ma pauvre mere… [Но вы так чисты, вы презираете меня; вы никогда не поймете этого увлечения страсти. Ах, моя бедная мать…]
– Je comprends tout, [Я всё понимаю,] – отвечала княжна Марья, грустно улыбаясь. – Успокойтесь, мой друг. Я пойду к отцу, – сказала она и вышла.
Князь Василий, загнув высоко ногу, с табакеркой в руках и как бы расчувствованный донельзя, как бы сам сожалея и смеясь над своей чувствительностью, сидел с улыбкой умиления на лице, когда вошла княжна Марья. Он поспешно поднес щепоть табаку к носу.
– Ah, ma bonne, ma bonne, [Ах, милая, милая.] – сказал он, вставая и взяв ее за обе руки. Он вздохнул и прибавил: – Le sort de mon fils est en vos mains. Decidez, ma bonne, ma chere, ma douee Marieie qui j'ai toujours aimee, comme ma fille. [Судьба моего сына в ваших руках. Решите, моя милая, моя дорогая, моя кроткая Мари, которую я всегда любил, как дочь.]
Он отошел. Действительная слеза показалась на его глазах.
– Фр… фр… – фыркал князь Николай Андреич.
– Князь от имени своего воспитанника… сына, тебе делает пропозицию. Хочешь ли ты или нет быть женою князя Анатоля Курагина? Ты говори: да или нет! – закричал он, – а потом я удерживаю за собой право сказать и свое мнение. Да, мое мнение и только свое мнение, – прибавил князь Николай Андреич, обращаясь к князю Василью и отвечая на его умоляющее выражение. – Да или нет?
– Мое желание, mon pere, никогда не покидать вас, никогда не разделять своей жизни с вашей. Я не хочу выходить замуж, – сказала она решительно, взглянув своими прекрасными глазами на князя Василья и на отца.
– Вздор, глупости! Вздор, вздор, вздор! – нахмурившись, закричал князь Николай Андреич, взял дочь за руку, пригнул к себе и не поцеловал, но только пригнув свой лоб к ее лбу, дотронулся до нее и так сжал руку, которую он держал, что она поморщилась и вскрикнула.
Князь Василий встал.
– Ma chere, je vous dirai, que c'est un moment que je n'oublrai jamais, jamais; mais, ma bonne, est ce que vous ne nous donnerez pas un peu d'esperance de toucher ce coeur si bon, si genereux. Dites, que peut etre… L'avenir est si grand. Dites: peut etre. [Моя милая, я вам скажу, что эту минуту я никогда не забуду, но, моя добрейшая, дайте нам хоть малую надежду возможности тронуть это сердце, столь доброе и великодушное. Скажите: может быть… Будущность так велика. Скажите: может быть.]
– Князь, то, что я сказала, есть всё, что есть в моем сердце. Я благодарю за честь, но никогда не буду женой вашего сына.
– Ну, и кончено, мой милый. Очень рад тебя видеть, очень рад тебя видеть. Поди к себе, княжна, поди, – говорил старый князь. – Очень, очень рад тебя видеть, – повторял он, обнимая князя Василья.
«Мое призвание другое, – думала про себя княжна Марья, мое призвание – быть счастливой другим счастием, счастием любви и самопожертвования. И что бы мне это ни стоило, я сделаю счастие бедной Ame. Она так страстно его любит. Она так страстно раскаивается. Я все сделаю, чтобы устроить ее брак с ним. Ежели он не богат, я дам ей средства, я попрошу отца, я попрошу Андрея. Я так буду счастлива, когда она будет его женою. Она так несчастлива, чужая, одинокая, без помощи! И Боже мой, как страстно она любит, ежели она так могла забыть себя. Может быть, и я сделала бы то же!…» думала княжна Марья.


Долго Ростовы не имели известий о Николушке; только в середине зимы графу было передано письмо, на адресе которого он узнал руку сына. Получив письмо, граф испуганно и поспешно, стараясь не быть замеченным, на цыпочках пробежал в свой кабинет, заперся и стал читать. Анна Михайловна, узнав (как она и всё знала, что делалось в доме) о получении письма, тихим шагом вошла к графу и застала его с письмом в руках рыдающим и вместе смеющимся. Анна Михайловна, несмотря на поправившиеся дела, продолжала жить у Ростовых.
– Mon bon ami? – вопросительно грустно и с готовностью всякого участия произнесла Анна Михайловна.
Граф зарыдал еще больше. «Николушка… письмо… ранен… бы… был… ma сhere… ранен… голубчик мой… графинюшка… в офицеры произведен… слава Богу… Графинюшке как сказать?…»
Анна Михайловна подсела к нему, отерла своим платком слезы с его глаз, с письма, закапанного ими, и свои слезы, прочла письмо, успокоила графа и решила, что до обеда и до чаю она приготовит графиню, а после чаю объявит всё, коли Бог ей поможет.
Всё время обеда Анна Михайловна говорила о слухах войны, о Николушке; спросила два раза, когда получено было последнее письмо от него, хотя знала это и прежде, и заметила, что очень легко, может быть, и нынче получится письмо. Всякий раз как при этих намеках графиня начинала беспокоиться и тревожно взглядывать то на графа, то на Анну Михайловну, Анна Михайловна самым незаметным образом сводила разговор на незначительные предметы. Наташа, из всего семейства более всех одаренная способностью чувствовать оттенки интонаций, взглядов и выражений лиц, с начала обеда насторожила уши и знала, что что нибудь есть между ее отцом и Анной Михайловной и что нибудь касающееся брата, и что Анна Михайловна приготавливает. Несмотря на всю свою смелость (Наташа знала, как чувствительна была ее мать ко всему, что касалось известий о Николушке), она не решилась за обедом сделать вопроса и от беспокойства за обедом ничего не ела и вертелась на стуле, не слушая замечаний своей гувернантки. После обеда она стремглав бросилась догонять Анну Михайловну и в диванной с разбега бросилась ей на шею.