Облачная служба Node.js на базе модуля Express

Библиотека Node.js содержит минимальный набор функций среды выполнения. Поэтому разработчики часто используют сторонние модули для расширения возможностей приложений на базе Node.js. В данном руководстве рассказывается, как с помощью модулей расширить функционал приложения из руководства «Веб-приложение Node.js».

Предполагается, что вы уже ознакомились с руководством «Веб-приложение Node.js».

О чем пойдет речь в данном руководстве:

  • Как установить модуль с помощью диспетчера пакетов (npm).
  • Как использовать модуль Express.

Снимок экрана готового приложения приведен ниже.

clip_image002

Установка модулей

Модули 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 выглядят примерно так, как показано ниже. Вы увидите список модулей и зависимости между ними.

clip_image004

Создание приложения на базе Express

Модуль Express (expressjs.com) –– это веб-платформа для разработки MVC-приложений. Он предоставляет API для обработки HTTP-запросов и поддерживает шаблонизаторы для генерации HTTP-ответов. Кроме того, в его состав входят различные инструменты и дополнения, необходимые MVC-приложениям, в том числе для создания основных скаффолдеров MVC для веб-приложения.

Выполните указанные ниже действия, чтобы заменить существующее приложение созданным с помощью скаффолдера Express.

Чтобы создать веб-приложение Express с помощью скаффолдера, выполните следующую команду:

PS C:\node\tasklist\WebRole1> express

Появится запрос на подтверждение перезаписи приложения. Для продолжения введите y или yes. Модель Express создаст файл app.js и структуру папок для компиляции приложения.

clip_image006

Удалите существующий файл 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

clip_image008

Обратите внимание, что скаффолдер Express уже создал несколько папок и файлов, в том числе файл package.json, который определяет дополнительные зависимости для приложения.

Чтобы установить дополнительные зависимости в файле package.json, введите следующую команду:

PS C:\node\tasklist\WebRole1> npm install

clip_image010

Откройте файл server.js в Блокноте с помощью команды:

PS C:\node\tasklist\WebRole1> notepad server.js

Замените последние две строки кодом, приведенным ниже.

app.listen(process.env.port);

clip_image012

В результате Node будет отслеживать переменную среды PORT, которую предоставляет Windows Azure при публикации в облаке.

Примечание. На момент написания статьи скаффолдер Express иногда создает переносы строк только LF-типа (в стиле Unix). В этом случае откройте файл в редакторе WordPad или Visual Studio и замените переносы LF на CRLF. Сохраните файл server.js.

Запустите приложение в эмуляторе Windows Azure с помощью следующей команды:

PS C:\node\tasklist\WebRole1> Start-AzureEmulator -launch

clip_image014

Изменение внешнего вида

Теперь можно изменить внешний вид, чтобы отображалось сообщение: Welcome to Express in Windows Azure.

Откройте файл index.jade при помощи команды:

PS C:\node\tasklist\WebRole1> notepad views/index.jade

clip_image016

Как было сказано ранее, Jade является новым ядром. Обратите внимание, что при его использовании теги не требуются. Дополнительную информацию о ядре отображения Jade можно найти на веб-сайте https://jade-lang.com.

Измените последнюю строку текста, добавив в нее слова in Windows Azure.

clip_image018

Сохраните файл и закройте Блокнот.

Обновите браузер. Внешний вид страницы изменится.

clip_image020

Создание внешнего вида

В список задач приложения добавьте новый внешний вид 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 после маршрута по умолчанию, как показано ниже.

clip_image022

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

clip_image024

Повторная публикация приложения в Windows Azure

Итак, мы расширили приложение Hello World с помощью модуля Express. Осталось опубликовать его в Windows Azure, обновив развернутую ранее службу. В окне Windows Azure PowerShell вызовите командлет Publish-AzureServiceProject для повторного развертывания размещенной службы в Windows Azure.

PS C:\node\tasklist\WebRole1> Publish-AzureServiceProject -launch

Это приложение уже было развернуто ранее, поэтому Windows Azure выполнит частичное обновление и командлет сработает быстрее, чем при первом развертывании. В случае успешного развертывания появится следующий ответ.

clip_image026

Поскольку, как и раньше, мы использовали ключ –launch, по завершении публикации в Windows Azure автоматически запустится браузер и в его окне отобразится обновленное приложение.

clip_image002[1]

Использование редактора WebMatrix

Для более удобной работы с Node.js, редактирования кода, в том числе jade, работы с Express и автоматической публикации проекта в Windows Azure вы можете воспользоваться бесплатным редактором WebMatrix 2, который поддерживает разработку проектов на базе Node.js.

select express template

webmatrix ide

webmatrix viewing index.jade

publish preview

Загрузите WebMatrix 2 по следующей ссылке https://www.microsoft.com/web/webmatrix/. Узнайте больше о его возможностях из статей:

Comments

  • Anonymous
    August 26, 2012
    Очень ждал подобного доклада! Спасибо.