Node.js
Node.js is a lightweight runtime environment for executing JavaScript outside the browser, for example, on the server or in the command line. WebStorm integrates with Node.js providing assistance in configuring, editing, running, debugging, testing, profiling, and maintaining your applications.
If you need Node.js only as a local runtime for your application or for managing npm packages, running JavaScript linters, build tools, test frameworks, and so on, just install Node.js. If you follow the standard installation procedure, in most cases WebStorm detects Node.js itself.
And even if you have no Node.js on your computer, you can install it when creating a new Node.js application in the Create New Project dialog , refer to Creating a new Node.js application below.
If you want to switch among several Node.js installations, they must be configured as local Node.js interpreters. In most cases, WebStorm detects Node.js installations, configures them as interpreters automatically, and adds them to the list where you can select the relevant one.
To run a Node.js application remotely, configure it as a remote interpreter. For more information, refer to Node.js with Docker, Node.js via SSH, and Node.js with Vagrant.
Before you start
- Make sure you have Node.js on your computer.
- Make sure the Node.js plugin is enabled in the settings. Press Control+Alt+S to open the IDE settings and then select Plugins . Click the Installed tab. In the search field, type Node.js . For more information about plugins, refer to Managing plugins.
Switching between Node.js versions
With WebStorm, you can have several installations of Node.js and switch between them while working on the same project.
- Press Control+Alt+S to open the IDE settings and then select Languages & Frameworks | Node.js .
- Select the required Node.js installation from the Node Interpreter list. If you followed the standard installation procedure, in most cases the required Node.js installation is on the list. If the installation is missing, click and configure it as a local interpreter manually.
Using a system Node.js version
With WebStorm, you can set the default system node alias as your project’s Node.js version. After that, this version will be automatically used by all the tools that require Node.js and in all new run/debug configurations. In particular, this means that you will not have to update the settings for each tool if you install a new Node.js version and make it the default node alias in your system.
This functionality is especially helpful when you are using nvm.
- Press Control+Alt+S to open the IDE settings and then select Languages & Frameworks | Node.js .
- From the Node interpreter list, select node .
- Specify this new Node.js interpreter where applicable, for example, in your run/debug configurations or settings of specific tools.
Configuring a local Node.js interpreter
You may need to configure Node.js installation as an interpreter manually, for example, if Node.js is installed in a non-default location so WebStorm does not detect it automatically.
- Press Control+Alt+S to open the IDE settings and then select Languages & Frameworks | Node.js .
- Click next to the Node Interpreter list.
- In the Node.js Interpreters dialog with a list of all the currently configured interpreters, click on the toolbar and select Add Local from the context menu and choose the installation of Node.js, then click OK . You return to the Node.js Interpreters dialog where the Node interpreter read-only field shows the path to the new interpreter.
- In the Package manager field, choose the package manager (npm, Yarn, or pnpm) for the current project. For more information, refer to Configuring a package manager for a project.
When you click OK , you return to the Node.js page where the Node interpreter field shows the new interpreter.
Using Node.js on Windows Subsystem for Linux
WebStorm lets you run and debug Node.js applications using Node.js on Windows Subsystem for Linux. You can choose Node.js on WSL as the default interpreter for the current project or you can configure and use this Node.js version in a Node.js Run/Debug configuration.
Configure Node.js on WSL as the default project node interpreter
- In the Settings dialog ( Control+Alt+S ), go to Languages & Frameworks | Node.js .
- Click next to the Node Interpreter field, in the Node.js Interpreters dialog that opens, click , and then select Add WSL from the list.

- In the Add WSL Node Interpreter dialog that opens, select the Linux distribution you’re using and specify the path to Node.js.

Creating a Node.js application
If you have no application yet, you can generate a WebStorm project with Node.js-specific structure from a template or create an empty WebStorm project and configure Node.js in it as described in Starting with an existing Node.js application below.
Create a new Node.js application
- Click Create New Project on the Welcome screen or select File | New | Project from the main menu. The New Project dialog opens.
- In the left-hand pane, choose Node.js to create a basic Node.js application or Express to create an Express application.
- In the right-hand pane, specify the project folder and the Node.js interpreter to use. For more information, refer to Configuring a local Node.js interpreter. If you have only one Node.js on your machine and you followed the standard installation procedure, WebStorm detects your Node.js automatically. Otherwise, choose the relevant interpreter from the list, refer to Configuring a local Node.js interpreter above. If you have no Node.js installed, select Download Node.js .
For Express applications, specify the express -generator in the express-generator field. It is recommended that you use npx that downloads and runs the generator. To do that, select npx —package express-generator express from the express -generator list. Alternatively, open the embedded Terminal ( Alt+F12 ) and type npm install —g express-generator and then select the downloaded generator from the express-generator list.
Select the template language and the Style Sheet language to use. - When you click Create , WebStorm downloads the necessary dependencies and enables code completion for them as well as for the Node.js core APIs. For more information, refer to Configuring node_modules library and Configuring Node.js Core library. For Express , WebStorm creates a run/debug configuration of the type Node.js with default settings and generates a basic Express-specific directory structure. For Node.js , WebStorm just runs the npm init command to generate a package.json file.
Create an empty WebStorm project
- Click Create New Project on the Welcome screen or select File | New | Project from the main menu. The New Project dialog opens.
- In the left-hand pane, choose Empty Project . In the right-hand pane, specify the application folder and click Create .
Starting with an existing Node.js application
If you are going to continue developing an existing Node.js application, open it in WebStorm, configure Node.js in it, and download the required dependencies.
Open the application sources that are already on your machine
- Click Open on the Welcome screen or select File | Open from the main menu. In the dialog that opens, select the folder where your sources are stored.
Check out the application sources from your version control
- Click Get from VCS on the Welcome screen. Alternatively, select File | New | Project from Version Control or Git | Clone… from the main menu. Instead of Git in the main menu, you may see any other Version Control System that is associated with your project. For example, Mercurial or Perforce .
- In the dialog that opens, select your version control system from the list and specify the repository to check out the application sources from. For more information, refer to Check out a project (clone).
Configure Node.js in a project
- In the Settings dialog ( Control+Alt+S ), go to Languages & Frameworks | Node.js .
- In the Node Interpreter field, specify the default Node.js interpreter for the current project. WebStorm automatically uses it every time you select the Project alias from Node Interpreter lists, for example, when creating run/debug configurations. Select a configured interpreter from the list or click and configure a new one in the dialog that opens as described in Configuring a local Node.js interpreter. If you select node , the system Node.js version is used.
- Select the Coding assistance for Node.js checkbox to configure the Node.js Core module sources as a JavaScript library and associate it with your project. As a result, WebStorm provides code completion, reference resolution, validation, and debugging capabilities for fs , path , http , and other parts of Node.js that are compiled into the Node.js binary. When the configuration is completed, WebStorm displays information about the currently configured version.
- If you need code completion for Node.js APIs only in some parts of your project, you can configure that using the Manage scopes link. In the Usage dialog that opens, click the relevant directories and for each of them select the configured Node.js Core library from the list. Learn more from Configuring the scope of a library.
Download the project dependencies
- In the embedded Terminal ( Alt+F12 ) , type: npm install
- Alternatively, select Run ‘npm install’ from the context menu of the package.json file in your project root.
Project security
When you open a project that was created outside WebStorm and was imported into it, WebStorm displays a dialog where you can decide how to handle this project with unfamiliar source code.

Select one of the following options:
- Preview in Safe Mode : in this case, WebStorm opens the project in a preview mode. It means that you can browse the project’s sources but you cannot run tasks and script or run/debug your project. WebStorm displays a notification on top of the editor area, and you can click the Trust project… link and load your project at any time.
- Trust Project : in this case, WebStorm opens and loads a project. That means the project is initialized, project’s plugins are resolved, dependencies are added, and all WebStorm features are available.
- Don’t Open : in this case, WebStorm doesn’t open the project.
Projects created from the Welcome screen or via File | New | Project as described in Creating projects are automatically considered trusted.
Руководство по Node.js для начинающих
Сейчас нет недостатка в обучающих материалах по Node.js, но большинство из них охватывают либо какие-то конкретные варианты использования, либо темы, применимые уже тогда, когда у вас есть работающий Node.js То тут, то там я вижу комментарии вроде «я скачал Node.js, что теперь?». Статья ответит на этот вопрос и объяснит, как начать с самого начала.
Что есть Node.js?
Много путаницы у новичков в Node.js возникает из-за непонимания того, что же на самом деле это такое. И описание на nodejs.org не слишком помогает разобраться.
Важно понять, что Node — это не веб-сервер. Сам по себе он ничего не делает. Это не Apache. Там нет конфиг-файла, в котором указывается путь до HTML-файлов. Если вам нужен HTTP-сервер, вам нужно написать HTTP-сервер (с помощью встроенных библиотек). Node.js — это просто ещё один способ выполнять код на вашем компьютере. Это просто среда для выполнения JavaScript.
Установка Node
Установить Node.js очень просто. Если вы используете Windows или Mac, установочные файлы доступны на странице загрузки.
Я установил Node, что теперь?
Сразу после установки вам становится доступна новая команда node . Её можно использовать двумя разными способами. Первый способ — без аргументов. Откроется интерактивная оболочка (REPL: read-eval-print-loop), где вы можете выполнять обычный JavaScript-код.
$ node > console.log('Hello World'); Hello World undefined

В примере выше я написал console.log(‘Hello World’) в оболочке и нажал Enter. Node.js выполнит этот код, и мы увидим сообщение. undefined после него выводится потому, что оболочка отображает возвращаемое значение каждой команды, а console.log ничего не возвращает.
Кроме того, мы можем передать Node файл с JavaScript для выполнения. Именно так вы и будете практически всегда делать.
console.log('Hello World');
Теперь запустим его в терминале:
$ node hello.js Hello World

В этом примере я переместил console.log в файл, который затем передал команде node в качестве аргумента. Node затем запускает JavaScript из этого файла и выводит Hello World .
Делаем что-нибудь полезное — работа с файлами
Просто выполнять код JavaScript весело и всё такое, но не очень полезно. Вот почему Node.js также включает в себя мощный набор библиотек (модулей) для серьёзных задач. В этом первом примере я собираюсь открыть файл с логами и обработать его.
2013-08-09T13:50:33.166Z A 2 2013-08-09T13:51:33.166Z B 1 2013-08-09T13:52:33.166Z C 6 2013-08-09T13:53:33.166Z B 8 2013-08-09T13:54:33.166Z B 5
Неважно, что означают данные в логах, но по существу каждое сообщение содержит дату, букву и значение. Допустим, я хочу просуммировать значения для каждой буквы.
Сперва нам нужно считать содержимое файла.
// Загрузка модуля fs (файловая система) var fs = require('fs'); // Считывание содержимого файла в память fs.readFile('example_log.txt', function (err, logData) < // Если произошла ошибка, то мы генерируем исключение, // и работа приложения завершается if (err) throw err; // logData имеет тип Buffer, переводим в string var text = logData.toString(); >);
Работать с файлами в Node.js очень просто благодаря встроенному модулю файловой системы fs . Этот модуль содержит функцию readFile, принимающую в качестве аргументов путь до файла и коллбэк. Коллбэк вызовется, когда завершится чтение файла. Данные из файла поступают в виде объекта типа Buffer, по сути представляющего собой массив байтов. Мы можем перевести его в строку с помощью функции toString().
Теперь давайте займёмся обработкой логов. Это вполне себе обычный код JavaScript, поэтому я не буду вдаваться в детали.
// Загрузка модуля fs var fs = require('fs'); // Считывание содержимого файла в память fs.readFile('example_log.txt', function (err, logData) < // Если произошла ошибка, то генерируем исключение, // и работа приложения завершится. if (err) throw err; // logData имеет тип Buffer, переводим в строку var text = logData.toString(); var results = <>; // Разбивка файла по строкам var lines = text.split('\n'); lines.forEach(function(line) < var parts = line.split(' '); var letter = parts[1]; var count = parseInt(parts[2]); if(!results[letter]) < results[letter] = 0; > results[letter] += parseInt(count); >); console.log(results); // >);
Теперь, когда вы передадите этот файл node в качестве аргумента, он выведет результат и завершит работу.
$ node my_parser.js A: 2, B: 14, C: 6 >

Я часто использую Node.js для таких задач. Это простая и мощная альтернатива bash-скриптам.
Асинхронные коллбэки
Как вы могли видеть в предыдущем примере, типичным шаблоном в Node.js является использование асинхронных коллбэков. По сути вы говорите ему что-то сделать, и когда оно будет готово, вызвать вашу функцию (коллбэк). Всё потому, что Node.js однопоточный. Пока вы ждёте вызова коллбэка, Node.js может отвлечься и заняться другими делами, а не блокировать поток в ожидании завершения обработки запроса.
Это особенно важно для веб-серверов. Доступ к базам данных в современных веб-приложениях — обычное дело. Пока вы ждёте ответа от базы, Node.js может обработать ещё запросы. Это позволяет вам обрабатывать тысячи одновременных соединений с очень маленькими затратами, сравнимыми с созданием отдельного потока для каждого соединения.
Делаем что-нибудь полезное — HTTP-сервер
Как я уже говорил ранее, Node.js не делает ничего «из коробки». Один из встроенных модулей позволяет без особых усилий создать простой HTTP-сервер, указанный в примере на сайте Node.js.
var http = require('http'); http.createServer(function (req, res) < res.writeHead(200, 'Content-Type': 'text/plain'>); res.end('Hello World\n'); >).listen(8080); console.log('Server running on port 8080.');
Когда я говорю, «простой», это значит «простой». Это не навороченный HTTP-сервер. Он не работает с HTML или изображениями. Фактически, что бы вы ни запросили, он вернёт Hello World . Тем не менее, можете запустить его, зайти на http://localhost:8080 в браузере и увидеть этот текст.
$ node my_web_server.js
Возможно, вы заметите небольшую разницу: ваше приложение не завершает работу. Так происходит потому, что вы создали сервер, и теперь он будет продолжать работать и отвечать на запросы до тех пор, пока вы не убьёте node сами.
Если вы хотите превратить это приложение в полноценный веб-сервер, то вам придется потрудиться. Вам нужно будет проверять, что запрошено, читать соответствующие файлы и отсылать назад контент. Впрочем, есть и хорошая новость: другие уже сделали эту тяжкую работу за вас.
Делаем что-нибудь полезное — Express
Express — это фреймворк, делающий создание большинства сайтов очень простым. Первое, что вам нужно будет сделать — установить его. Вместе с командой node у вас появилась команда npm . Этот инструмент даёт вам доступ к колоссальному количеству модулей, созданных сообществом, и Express как раз один из них.
$ cd /my/app/location $ npm install express
Установленный модуль расположится в папке node_modules внутри каталога с вашим приложением. Оттуда вы сможете подключать его так же, как любой встроенный модуль. Давайте создадим с помощью Express простой сервер, отдающий статику.
var express = require('express'), app = express(); app.use(express.static(__dirname + '/public')); app.listen(8080);
$ node my_static_file_server.js
Теперь у вас есть довольно мощный сервер для статического контента. Всё, что вы сложите в папку /public , может быть запрошено из браузера и будет отображено. HTML, изображения, почти всё, что душе угодно. Например, если вы положите изображение с именем my_image.png в эту папку, его можно будет запросить по адресу http://localhost:8080/my_image.png . Разумеется, у Express намного больше возможностей, но их вы можете открыть для себя, продолжив изучение самостоятельно.
NPM
Мы уже немного ознакомились с npm в предыдущем разделе, но я хотел бы подчеркнуть важность этого инструмента в контексте разработки на Node.js. Вам доступны тысячи модулей, решающих практически все типичные задачи, с которыми вы, возможно, столкнётесь. Не забывайте проверить существующие модули перед тем, как изобретать велосипед. Для приложения на Node.js нормально иметь массу зависимостей.
В предыдущем примере мы установили Express вручную. Если у вашего проекта много зависимостей, то устанавливать их таким образом не очень удобно, поэтому npm использует файлы package.json .
< "name" : "MyStaticServer", "version" : "0.0.1", "dependencies" : < "express" : "3.3.x" > >
Файл package.json содержит общие сведения о вашем приложении. Он может содержать множество настроек, но выше указан необходимый минимум. Секция dependencies описывает имя и версию модулей, которые вы хотите установить. В данном случае подойдёт любая версия Express 3.3. Вы можете перечислить в этой секции столько зависимостей, сколько захотите.
Теперь вместо установки зависимостей по одной мы можем установить все сразу командой:
$ npm install
При запуске этой команды npm будет искать package.json в текущей директории, и если найдёт, то установит каждую указанную в нём зависимость.
Организация кода
Итак, до этого момента мы работали только с одним файлом, что не очень хорошо с точки зрения поддержки кода. В большинстве приложений вы будете распределять код между несколькими файлами. На данный момент какого-либо стандарта или рекомендуемой структуры файлов не существует. Это не Rails. Здесь нет концепта «представления идут сюда, а контроллеры — сюда». Можете делать так, как захотите.
Давайте проведем рефакторинг скрипта, обрабатывающего логи. Его будет легче поддерживать и тестировать, если мы выделим логику парсера в отдельный файл.
// Конструктор парсера var Parser = function( ) < >; // Обрабатывает переданный текст Parser.prototype.parse = function(text) < var results = <>; // Разбивает текст на строки var lines = text.split('\n'); lines.forEach(function(line) < var parts = line.split(' '); var letter = parts[1]; var count = parseInt(parts[2]); if(!results[letter]) < results[letter] = 0; > results[letter] += parseInt(count); >); return results; >; // Выносит конструктор парсера в модуль module.exports = Parser;
Я создал новый файл, содержащий логику для парсинга. Это просто JavaScript, и существует множество способов инкапсуляции этого кода. Я предпочитаю заводить новый объект, потому что так легче проводить юнит-тестирование.
Важная часть в этом коде — строка с module.exports . Она объясняет Node.js, что вы выносите из этого файла. В данном случае я выношу конструктор, чтобы пользователи могли создавать экземпляры моего объекта Parser . Вы сможете выносить то, что сами захотите.
Давайте теперь посмотрим, как импортировать этот файл и использовать новый объект Parser .
// Подключение нового файла parser.js var Parser = require('./parser'); // Загрузка модуля fs var fs = require('fs'); // Считывание содержимого файла в память fs.readFile('example_log.txt', function (err, logData) < // Если произошла ошибка, то генерируем исключение, // и работа приложения завершается. if (err) throw err; // logData имеет тип Buffer, переводим в строку var text = logData.toString(); // Создаём экземпляр Parser var parser = new Parser(); // вызываем функцию парсинга console.log(parser.parse(text)); // >);
Файлы подключаются точно так же, как и модули, за исключением того, что вместо имени модуля нужно писать путь. Расширение .js подразумевается по умолчанию, так что можете опустить его, если хотите.
Так как я вынес в модуль конструктор, то он и вернётся выражением require . Теперь я могу создавать экземпляры Parser и использовать их.
Итог
Надеюсь, это пособие поможет заполнить пробел между скачиванием Node.js и разработкой вашего первого маленького приложения. Node.js — это чрезвычайно мощная и гибкая технология для широкого спектра задач.
Я хочу, чтобы вы запомнили, что в Node.js всё зависит исключительно от вашего воображения. Встроенные библиотеки достаточно тщательно продуманы, чтобы вписываться в любую картину. Используйте их вместе с модулями, доступными в npm, и вы удивитесь, как быстро сможете разрабатывать сложные приложения.

Оригинальная статья: AN ABSOLUTE BEGINNER’S GUIDE TO NODE.JS Статью вычитывали: a1ip, rtretyakov, A, smolnikov, Vladimir Starkov, visitorFM, Igor Deryabin
© 2013 Frontender Magazine
AWS SDK для JavaScript
Разрабатывайте и развертывайте приложения с помощью AWS SDK для JavaScript. SDK обеспечивает первоклассную поддержку TypeScript и упрощает вызовы сервисов AWS, используя идиоматические API JavaScript для создания приложений на Node.js и интернет-приложений, в том числе для мобильных устройств.
Разработка серверных приложений
Разрабатывайте современные серверные интернет-приложения с помощью Node, модулей Node, и HTTP-сервера Node. Обращайтесь к сервисам AWS напрямую из приложений RESTful с помощью платформ Node.js.
Разработка интернет-приложений
Разрабатывайте современные интерфейсы приложений и обращайтесь к сервисам AWS напрямую из кода JavaScript, который выполняется в браузере.
Разработка мобильных приложений

Разрабатывайте современные мобильные приложения с помощью React Native и обращайтесь к сервисам AWS напрямую с мобильных устройств на базе iOS и Android.
Как это работает
AWS SDK для JavaScript упрощает использование сервисов AWS, предоставляя упорядоченный набор библиотек, с которыми знакомы разработчики JavaScript. Он учитывает такие особенности жизненного цикла API, как управление учетными данными, повторные попытки, упаковку, сериализацию и десериализацию данных. AWS SDK для JavaScript также поддерживает более высокий уровень абстракций для упрощения разработки. Перейдите на GitHub, чтобы посмотреть библиотеки JavaScript с открытым исходным кодом, ориентированные на AWS.
AWS SDK для JavaScript поддерживает три среды выполнения: JavaScript для браузера, Node.js для сервера, React Native для разработки приложений для мобильных устройств. Также он поддерживает сочетание сред выполнения: пакет для клиента сервиса можно запускать в браузере, на базе Node.js и React-Native без изменения кода.
Основные возможности
Первоклассная поддержка TypeScript
Наш JavaScript SDK полностью написан на TypeScript, а затем скомпилирован в JavaScript. Это позволяет вам пользоваться преимуществами TypeScript, например статической проверкой типов, поддержкой классов и модулей. Также можно использовать новые возможности ES6, ES7 и т. п., не беспокоясь об обратной совместимости. Готовый код, создаваемый компилятором, будет обратно совместим с ES5 и сможет хорошо работать с браузерами более ранних версий. Подробную информацию см. в Блоге для разработчиков AWS JavaScript.
Стек промежуточного ПО
В AWS SDK для JavaScript включен стек промежуточного ПО, который позволяет настроить поведение SDK путем изменения промежуточного ПО. Вы можете добавить пользовательские асинхронные действия в AWS SDK для JavaScript и (или) удалить стандартные. Эти действия сериализуют входные параметры, преобразуя их в данные, которые передаются по кабелю, и десериализуют данные ответа, трансформируя их в объекты JavaScript. Эти действия реализуются с помощью функций, известных как промежуточное программное обеспечении и исполняемых в определенном порядке. Подробную информацию см. в Блоге для разработчиков AWS JavaScript.
Модульная архитектура
Уменьшите размер пакета приложений и повысьте производительность приложений, импортируя только те пакеты, которые необходимы для вашего приложения. AWS SDK для Javascript имеет модульную архитектуру: для каждого сервиса публикуется отдельный пакет. Эти пакеты публикуются в NPM в разделе @aws-sdk/, чтобы было легко определить, какие пакеты входят в официальный выпуск AWS SDK для JavaScript. Подробную информацию см. в Блоге для разработчиков AWS JavaScript.
Как работать с node js

МЕРОПРИЯТИЯ
YADRO X MOSCOW USER GROUP C++ MEETUP
Комментарии
Популярные По порядку
Не удалось загрузить комментарии.
ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ
Подборка материалов по HTML и CSS
В этой подборке представлены актуальные книги и видеоматериалы по HTML, CSS и верстке в целом для начинающих и продвинутых веб-разработчиков.
15 прекрасных плагинов для Sublime Text
Встречайте список первой необходимости – 15 самых нужных плагинов для Sublime, которые сильно упростят жизнь разработчику.
Изучение JavaScript с нуля
Рассказ программиста о том, как добиться успехов в изучении JavaScript.
