Облачная служба Node.js на базе модуля Express
Библиотека Node.js содержит минимальный набор функций среды выполнения. Поэтому разработчики часто используют сторонние модули для расширения возможностей приложений на базе Node.js. В данном руководстве рассказывается, как с помощью модулей расширить функционал приложения из руководства «Веб-приложение Node.js».
Предполагается, что вы уже ознакомились с руководством «Веб-приложение Node.js».
О чем пойдет речь в данном руководстве:
- Как установить модуль с помощью диспетчера пакетов (npm).
- Как использовать модуль Express.
Снимок экрана готового приложения приведен ниже.
Установка модулей
Модули Node можно установить с помощью диспетчера пакетов. Для этого выполните команду: npm install имя_модуля. Установленные таким способом пакеты хранятся в папке node_modules в том же каталоге, из которого была выполнена команда. Node автоматически ищет модули в каталоге node_modules из папки приложения, поэтому при установке модулей команду npm следует выполнять именно из той папки, где установлено приложение.
Добавьте модуль Express в приложение, созданное с помощью руководства «Веб-приложение Node.js», как описано ниже.
Если эмулятор еще не запущен, откройте Windows Azure PowerShell. Для этого выберите в меню Start пункт All Programs, Windows Azure, щелкните правой кнопкой мыши по Windows Azure PowerShell и выберите Run As Administrator.
Перейдите в каталог с приложением. Например, это может быть C:\node\tasklist\WebRole1.
Установите модуль Express, выполнив следующую команду:
PS C:\node\tasklist\WebRole1> npm install express -g
Примечание. Параметр «-g» устанавливает скаффолдер, чтобы модуль был доступен из любого места. С помощью этой же команды в следующем разделе будет сгенерирован скаффолдер для самого приложения.
Результаты работы команды npm выглядят примерно так, как показано ниже. Вы увидите список модулей и зависимости между ними.
Создание приложения на базе Express
Модуль Express (expressjs.com) –– это веб-платформа для разработки MVC-приложений. Он предоставляет API для обработки HTTP-запросов и поддерживает шаблонизаторы для генерации HTTP-ответов. Кроме того, в его состав входят различные инструменты и дополнения, необходимые MVC-приложениям, в том числе для создания основных скаффолдеров MVC для веб-приложения.
Выполните указанные ниже действия, чтобы заменить существующее приложение созданным с помощью скаффолдера Express.
Чтобы создать веб-приложение Express с помощью скаффолдера, выполните следующую команду:
PS C:\node\tasklist\WebRole1> express
Появится запрос на подтверждение перезаписи приложения. Для продолжения введите y или yes. Модель Express создаст файл app.js и структуру папок для компиляции приложения.
Удалите существующий файл server.js, а затем переименуйте файл app.js в server.js, выполнив приведенную ниже команду. Это необходимо сделать потому, что веб-роль Windows Azure в данном приложении направляет HTTP-запросы в server.js.
PS C:\node\tasklist\WebRole1> del server.js
PS C:\node\tasklist\WebRole1> ren app.js server.js
Просмотрите содержимое папки:
PS C:\node\tasklist\WebRole1> ls
Обратите внимание, что скаффолдер Express уже создал несколько папок и файлов, в том числе файл package.json, который определяет дополнительные зависимости для приложения.
Чтобы установить дополнительные зависимости в файле package.json, введите следующую команду:
PS C:\node\tasklist\WebRole1> npm install
Откройте файл server.js в Блокноте с помощью команды:
PS C:\node\tasklist\WebRole1> notepad server.js
Замените последние две строки кодом, приведенным ниже.
app.listen(process.env.port);
В результате Node будет отслеживать переменную среды PORT, которую предоставляет Windows Azure при публикации в облаке.
Примечание. На момент написания статьи скаффолдер Express иногда создает переносы строк только LF-типа (в стиле Unix). В этом случае откройте файл в редакторе WordPad или Visual Studio и замените переносы LF на CRLF. Сохраните файл server.js.
Запустите приложение в эмуляторе Windows Azure с помощью следующей команды:
PS C:\node\tasklist\WebRole1> Start-AzureEmulator -launch
Изменение внешнего вида
Теперь можно изменить внешний вид, чтобы отображалось сообщение: Welcome to Express in Windows Azure.
Откройте файл index.jade при помощи команды:
PS C:\node\tasklist\WebRole1> notepad views/index.jade
Как было сказано ранее, Jade является новым ядром. Обратите внимание, что при его использовании теги не требуются. Дополнительную информацию о ядре отображения Jade можно найти на веб-сайте https://jade-lang.com.
Измените последнюю строку текста, добавив в нее слова in Windows Azure.
Сохраните файл и закройте Блокнот.
Обновите браузер. Внешний вид страницы изменится.
Создание внешнего вида
В список задач приложения добавьте новый внешний вид Home. Этот внешний вид содержит существующие задачи, позволяет добавлять новые, а также помечать задачи как завершенные. Сейчас в этом внешнем виде имеется только статичный заполнитель.
В окне Windows Azure Powershell введите следующую команду для создания шаблона внешнего вида Home:
PS C:\node\tasklist\WebRole1> notepad views/home.jade
Чтобы создать файл, нажмите Yes. Вставьте приведенные ниже строки в файл home.jade и сохраните изменения.
h1= title
p A work in progress.
Теперь добавьте в файл server.js запись о маршруте для /home, чтобы приложение могло обрабатывать запросы Home. Сначала откройте server.js.
PS C:\node\tasklist\WebRole1> notepad server.js
Добавьте маршрут Home после маршрута по умолчанию, как показано ниже.
app.get('/home', function(req, res){
res.render('home', {
title: 'Home'
});
});
Вызов app.get уведомляет Node о том, что запросы нужно обрабатывать с помощью HTTP GET. Первый параметр функции указывает URL для обработки; в данном случае это /home. Затем выполняется обратный вызов для обработки реального запроса. Первый параметр содержит входящий запрос, а второй параметр — ответ на него. Следующая строка уведомляет Express о том, что нужно обработать файл home.jade (расширение .jade можно опустить), передав его в Home как заголовок.
Откройте приложение hello world для Express в эмуляторе и перейдите к внешнему виду Home, который только что был добавлен.
PS C:\node\tasklist\WebRole1> start https://localhost:81/home
Повторная публикация приложения в Windows Azure
Итак, мы расширили приложение Hello World с помощью модуля Express. Осталось опубликовать его в Windows Azure, обновив развернутую ранее службу. В окне Windows Azure PowerShell вызовите командлет Publish-AzureServiceProject для повторного развертывания размещенной службы в Windows Azure.
PS C:\node\tasklist\WebRole1> Publish-AzureServiceProject -launch
Это приложение уже было развернуто ранее, поэтому Windows Azure выполнит частичное обновление и командлет сработает быстрее, чем при первом развертывании. В случае успешного развертывания появится следующий ответ.
Поскольку, как и раньше, мы использовали ключ –launch, по завершении публикации в Windows Azure автоматически запустится браузер и в его окне отобразится обновленное приложение.
Использование редактора WebMatrix
Для более удобной работы с Node.js, редактирования кода, в том числе jade, работы с Express и автоматической публикации проекта в Windows Azure вы можете воспользоваться бесплатным редактором WebMatrix 2, который поддерживает разработку проектов на базе Node.js.
Загрузите WebMatrix 2 по следующей ссылке https://www.microsoft.com/web/webmatrix/. Узнайте больше о его возможностях из статей:
- Встречайте WebMatrix 2 RC: поддержка Node.js, Jade, EJS, LESS, CoffeeScript и многое другое
- Выпущена предварительная версия WebMatrix 2
- Create and deploy a Node.js application to a Windows Azure Web Site using WebMatrix
Comments
- Anonymous
August 26, 2012
Очень ждал подобного доклада! Спасибо.