Geddy.JS: простейший фреймворк Node.js

Geddy.JS – это полноценный открытый MVC-фреймворк, основанный на методологии ruby on rails, с интеграцией socket.io и встроенным модулем авторизации passportjs. Для создания надёжных приложений в реальном времени Geddy.JS требуется всего несколько команд. В целом же фреймворк предоставляет довольно большой набор команд, которые работают через интерфейс командной строки и позволяют автоматизировать большинство рутинных задач, например, создание модели, контроллера, вида и даже настройку аутентификации интеграцию socket.io. Таким образом Geddy позволят разработчику сосредоточиться на основной логике приложения.

Кроме того, Geddy поддерживает широкий диапазон шаблонизаторов; стандартным шаблонизатором является EJS.

Geddy.JS использует встроенный модуль кластеризации Node.js для работы с многоядерными процессорами. Таким образом, Node.js приложение получается довольно простым, но автоматически использует несколько ядер.

1: Подготовка системы

Для начала установите Node.js и npm.

sudo apt-get install python-software-properties python g++ make

В Ubuntu 12.10 и более старых системах нужно также запустить:

sudo apt-get install software-properties-common

Добавьте репозиторий PPA, рекомендуемый разработчиками Node.js.

sudo add-apt-repository ppa:chris-lea/node.js

Обновите список пакетов системы:

sudo apt-get update

Установите Node.js и npm:

sudo apt-get install nodejs

2: Установка Geddy.js

Чтобы установить фреймворк глобально, используйте:

sudo npm install -g geddy

3: Структура Geddy.js

Каждое приложение Geddy.js основано на принципе MVC и помещается отдельный каталог; также требуются отдельные файлы для моделей, контроллеров и видов.

Генераторы Geddy.js

Генераторы Geddy.js – это доступные списки команд, которые позволяют облегчить процесс разработки.

Команда geddy gen используется для создания нового приложения, модели и контроллера, а также может выполнять множество других рутинных задач разработки.

geddy gen app your_app

Эта команда создаст новое приложение по имени your_app и поместит его в одноимённый каталог в рабочем каталоге.

geddy gen resource profile name:string

Эта команда создаст ресурс (модель+контроллер+маршрут) по имени profile, содержащий модель типа string. Если тип не был указан, тип string будет установлен автоматически. Все необходимые атрибуты можно внести в команду или позже добавить их вручную в файл модели (app/models/profile.js).

geddy gen secret

Эта команда удаляет существующие и создаёт новые secret приложения. Session Secret используется для вычисления хэша, потому без secret вам будет отказано в доступе к сессии; это предотвращает захват сессии. У этой команды нет аргументов.

geddy gen controller

Эта команда создаёт контроллер, вид и маршрут к контроллеру.

geddy gen model notes title:default content:string

Данная команда создаёт модель о свойствами title и content. При отображении модели используется свойство default. Чтобы свойством по умолчанию сделать тип integer, нужно использовать title:int:default. В Geddy свойство ID всегда создается автоматически и является свойством по умолчанию, если не указано другое. Этот ID совпадает с соответствующим документом MongoDB.

geddy gen scaffold personal_detail name:string

Эта команда выполняет scaffold ресурса и по имени personal_detail и создаёт его макет, в котором можно добавлять, просматривать и удалять отдельные записи при помощи браузера.

Во время scaffolding-а есть возможность задать шаблонизатор для видов. Можно использовать шаблонизаторы swig, jade, handle or mustache; стандартным шаблонизатором является EJS. Например:

geddy gen scaffold personal_detail --jade

Создание приложения со встроенной авторизацией чрез Facebook

Выполните scaffold тестового приложения:

geddy gen app Edupi

Перейдите в каталог приложения:

cd Edupi

Выполните scaffold авторизации на основе passport.js для нового приложения.

Примечание: Не стоит выполнять scaffold для ранее созданных приложений, поскольку это может повлиять на их код.

geddy auth

Откройте developers.facebook.com и получите Secret key для приложения. Это делается следующим образом:

  • Кликните Apps.
  • Выберите Create new App в верхнем правом углу (для этого нужно зарегистрироваться).
  • Заполните появившуюся форму и нажмите Continue.
  • Выберите Website with Facebook Login и введите url или IP сервера. Можно указать IP виртуального сервера (http://192.168.1.2:80/), но если вы просто хотите протестировать работу приложения на локальной машине, введите http://localhost:4000/.
  • На этой же странице запишите App ID и App Secret, а затем нажмите Save Changes.

Примечание: Ни при каких обстоятельствах не раскрывайте App ID и App Secret.

Вернитесь в каталог приложения и откройте файл config/secrets.json.

{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}

Директива successRedirect – это путь, который вернётся пользователю в случае успешной авторизации. Директива failureRedirect задаёт url-адрес, по которому будет переадресован пользователь в случае ввода некорректных учётных данных. К примеру, строка:

"successRedirect": "http://localhost:4000/login/"

вернёт ошибку. В случае изменения маршрутов можно изменить значения этих директив.

Внесите в файл AppId как значение clientID и App Secret как значение Client Secret.

{
"passport": {
"successRedirect": "/",
"failureRedirect": "/login",
"twitter": {
"consumerKey": "XXXXXX",
"consumerSecret": "XXXXXX"
},
"facebook": {
"clientID": "670657392948407",
"clientSecret": "1beefd26e84f7e7adb4eb8a371c41af8"
},
"yammer": {
"clientID": "XXXXXX",
"clientSecret": "XXXXXX"
}
}
}

Сохраните и закройте файл. Запустите сервер:

geddy app

Теперь в приложение встроена авторизация через аккаунт facebook. Во время авторизации в сессию пользователя будут добавлены userId (ID пользователя в mongodb) и authtype (вданном случае это facebook).

Проверьте эти переменные в контроллерах.

Настройка HTTPS

Фреймворк Geddy поддерживает HTTPS через SSL/TLS или SPDY. Чтобы включить эту поддержку, просто добавьте данные сертификата в файл конфигураций. Опции key и cert  являются обязательными, остальные параметры, доступные для HTTPS и модуля spdy, являются опциональными.

Чтобы добавить SSL/TLS, просто внесите в конфигурационный файл следующее:

// ...
, ssl: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...

Чтобы включить поддержку SPDY, добавьте:

// ...
, spdy: {
key: 'config/key.pem',
cert: 'config/cert.pem'
}
// ...

Предполагается, что key.pem и cert.pem находятся в конфигурационном каталоге. Остальное фреймворк обрабатывает самостоятельно.

Режим производства

Создайте файл по имени app.js со следующим содержимым:

var geddy = require('geddy');
geddy.start({
environment: 'production'
});

Используйте Forever, чтобы запустить приложение в фоновом режиме. Чтобы установить Forever:

sudo npm install forever -g

Чтобы запустить приложение, перейдите в каталог, в котором находится app.js и выполните:

forver start app.js

Теперь в случае возникновения ошибки приложение восстановится автоматически.

Tags: , , , , ,

Добавить комментарий