다음을 통해 공유


Облачная служба 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
    Очень ждал подобного доклада! Спасибо.