Как бы это странно не звучало, но компания Microsoft официально представила расширение Node.js Tools для Visual Studio!
Расширение NTVS предназначено для установки в Visual Studio версии 2012 и 2013. Проект имеет довольно занимательную историю своего появления. Несколько node.js энтузиастов практически одновременно начали разработку своих собственных расширений на базе проекта PTVS с целью создания расширения Node.js Tools для Visual Studio. В то же самое время команда разработчиков PTVS также выполняла работу по интеграции с node.js, попутно объединяя усилия сторонних разработчиков, что в итоге и привело к формированию сообщества проекта. Основные усилия при создании NTVS были приложены командой PTVS при содействии Барта Рида из Red Gate, разработавшего GUI для npm, и Дмитрия Третьякова из Clickberry, выполнившего работы по усовершенствованию отладчика и исправлению дефектов.
С самого начала NTVS является проектом с открытым исходным кодом, принимающий вклад со стороны сообщества. Расширение предоставляет возможности удобного редактирования кода, intellisense, профилирование, npm, локальную и удалённую откладку приложений (на машинах под управлением Windows/MacOS/Linux), а также публикации в Azure Веб-сайты и Облачные службы.
Но гораздо интересней посмотреть на всё это в действии, так что не упускайте момент — загружайте и экспериментируйте! Только обратите внимание, что некоторые функции могут работать непривычным образом, поскольку проект всё ещё находится в состоянии альфа версии.
NTVS использует возможности профилирования движка V8, а также возможности просмотра отчётов Visual Studio для удобного выявления критических к производительности частей приложения.
Примечание: Затрудняетесь с выбором в диалоге New Project? Visual Studio упорядочивает шаблоны в зависимости от языка, так что шаблоны проектов node.js находятся в разделе JavaScript. Также в этом диалоге могут находиться проекты Python и Django, iOS и Android на C#, TypeScript, VB, F# и многие другие.
Одна из впечатляющих функций — это то, что node.js не меняет привычный подход к разработке проектов в Visual Studio во многом благодаря продуманной архитектуре и дизайну последней. Вы просто видите node.js проект, который запускается при помощи node.exe, использует обычный отладчик и профилировщик V8. Но при всём при этом крайне приятно, что NTVS предоставляет данные профилировщика V8 в привычном средстве просмотра отчётов Visual Studio. Не нужно изобретать колесо — просто используйте уже готовый инструмент.
Исследуем блог Ghost при помощи Node.js Tools для Visual Studio
Рассмотрим работу расширения на следующем примере.
- Перейдём на страницу загрузки http://nodejs.org и установим node.js.
- Затем загрузим Ghost https://ghost.org/download/ и извлечём содержимое архива.
- Загрузим и установим Node.js Tools для Visual Studio.
- Опционально: установим Web Essentials для удобства работы с веб проектами в Visual Studio.
В окне Visual Studio перейдём в File | New Project, выделим категорию JavaScript и нажмём «From Existing Node.js code».
Укажем в окне NTVS путь к папке Ghost.
Затем укажем в NTVS, что стартовым является файл index.js, нажмём Next и сохраним проект, нажав Finish.
Всё готово — мы получили проект Ghost в Visual Studio.
Примечание: поскольку установлено расширение Web Essentials мы видим удобный редактор markdown разметки.
Сейчас вы можете нажать F5 для отладки или Ctrl-F5 для запуска без отладки. Обратите внимание, что в свойствах проекта может быть изменён путь и порт отладки node.js, а также стартовый файл.
На следующем изображении вы можете увидеть Ghost, запущенный локально. Кроме того, вы видите путь к запущенному процессу node, файл ghost.js и окно браузера.
После установки NTVS становится доступен Intellisense с подробной информацией о большинстве модулей node.js.
Отладка
NTVS включает полноценную отладку node.js приложения. В список функций входит пошаговая отладка, точки останова, остановка при возникновении исключений, а также окна Locals, Watch, Immediate и Call Stack.
Вы можете управлять исключениями как и в любом другом языке Visual Studio. На следующем изображении приведён список исключений node.js совместно с другими типами исключений в управляемом и неуправляемом коде.
Отладка приложений выполняется традиционным для node.js способом, за исключением того, что Visual Studio подключается к отладчику через отдельный сокет (не забывайте, что вы можете выполнять удалённую отладку node.js приложений, запущенных на Linux или Mac). Все остальные приёмы отладки выполняются посредством обычных элементов управления Visual Studio.
На следующем изображении запечатлён процесс отладки Ghost. Обратите внимание на окна Call Stack, Locals и Watch. Во время отладки вы можете просматривать необходимые переменные и выполнять шаги как в обычном веб приложения.
NPM для Visual Studio
Для удобства работы с npm в NTVS использовано множество средств, включающих в том числе и слежение за файловой системой проекта. Таким образом, вы можете запустить npm как из командной строки, так и из окна Immediate и Visual Studio отследит изменения.
Кроме того, вы можете воспользоваться диалогом NPM Package Management и выполнять поиск по репозиторию и установку пакетов.
И непосредственно процесс установки пакета…
Физическое представление папки node_modules и самих модулей в Solution Explorer выглядит как иерархия узлов.
Примечание: мне нравится этот подход. У него есть потенциал и он очень схож с отображением ссылок в .NET проектах, что упрощает понимание проекта в целом.
Также здесь есть и другие интересные компоненты. Например, интерактивное окно REPL, традиционный для веб приложений мастер публикации, знакомый разработчикам ASP.NET. Вы можете публиковать приложения node.js непосредственно в Azure как при помощи Git, так и посредством мастера публикации Visual Studio.
Кроме того, вы можете выполнять удалённую отладку экземпляров node, запущенных на других машинах, запущенных с параметрами удалённой отладки приложений.
node.exe RemoteDebug.js -machineport 5860 script.js
В очередной раз стоит отметить, что удалённая отладка приложений в Visual Studio доступна для node.js, запущенного на любой серверной ОС.
Заключение
Я испытываю восторг от того, как развивается Visual Studio (за довольно короткое время) и превращается в удобное средство для разработки проектов на множестве языков.
Node.js Tools для Visual Studio — проект с открытым исходным кодом, распространяющийся по лицензии Apache. Команда NTVS с нетерпением ждёт вклада сообщества в виде замечаний, предложений и отчётов об ошибках. Пока доступна альфа версия, но со временем NTVS станет ещё лучше. Установите и проверьте его. Большое спасибо всем участникам!
Автор: dtretyakov