Что такое Sails.js?
Sails.js – это фреймворк, который позволяет быстро собирать пользовательские приложения Node.js корпоративного класса. Он разработан на основе шаблона MVC (Model-View-Controller), как Ruby On Rails, но также поддерживает требования современных приложений: программные интерфейсы с масштабируемой, сервисно-ориентированной архитектурой. Этот фреймворк особенно хорошо подходит для разработки чатов, инструментальных панелей реального времени и многопользовательских игр.
Другими словами, Sails.js позволяет быстро собирать приложения Node.js по шаблону MVC с легко поддерживаемым кодом. Также Sails.js предоставляет различные команды для автоматизации создания моделей и контроллеров, экономя время и силы разработчика. Виды нужно создавать вручную в каталоге /views согласно шаблону /views/:controller/:method.ejs. Также можно использовать различные языки шаблонов, хотя проще и безопаснее пользоваться стандартным языком – EJS.
Sails.js также оборудован различными адаптерами, что позволяет использовать практически любую базу данных и обеспечивает максимальную гибкость, в отличие от многих других фреймворков на основе MVC, которые привязываются к MongoDB.
Кроме того, при развёртывании все файлы проходят процедуру конкатенации и минификации.
Примечание: Код, выделенный красным, нужно отредактировать или самостоятельно ввести. Остальное можно просто скопировать и вставить.
Установка Node.js
Установите зависимости:
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:
sudo apt-get install nodejs
Установка Sails.js
Чтобы установить последний доступный релиз фреймворка, запустите:
sudo npm install sails -g
Флаг –g выполняет глобальную установку, благодаря чему sails можно использовать как инструмент командной строки.
Создание приложения Sails.js
Перейдите в каталог для приложения (в данном случае это /var/www) и запустите:
sails new project-name
Это добавит необходимые файлы и создаст каталог по имени project-name.
Запуск сервера Sails.js
Чтобы просмотреть шаблон приложения, перейдите в каталог проекта, а затем запустите сервер:
cd project-name
sails lift
Это создаст сервер, запущенный на 123.456.78.90:1337. Откройте ссылку, чтобы просмотреть приветственную страницу приложения.
Создание контроллера
Создать контроллер достаточно просто, так как Sails.js самостоятельно выполняет самую сложную часть работы. Чтобы создать контроллер по имени user с методами «index, show, edit, delete», используйте:
sails generate controller user index show edit delete
Это создаст в каталоге api/controllers файл по имени UserController.js, содержимое которого выглядит примерно так (обратите внимание на полезные подсказки и объяснения):
/*---------------------
:: User
-> controller
---------------------*/
var UserController = {
// To trigger this action locally, visit: 'http://localhost:port/user/index'
index: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/index.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/show'
show: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/show.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/edit'
edit: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/edit.ejs
res.view();
},
// To trigger this action locally, visit: 'http://localhost:port/user/delete'
delete: function(req,res) {
// This will render the view: /var/www/sails-test/views/user/delete.ejs
res.view();
},
};
module.exports = UserController;
Создание модели
Создать модель Sails.js так же просто, как контроллер. Не нужно беспокоиться о перемещении баз данных, так как Sails.js выполняет это самостоятельно. Кроме того, можно использовать базу данных по умолчанию, MySQL или многие другие СУБД с помощью адаптеров, которые можно найти в репозитории проекта на GitHub.
При создании модели нужно указать поля, которые будут добавлены в эту модель. Для этого используется формат [name]:[type].
Например, чтобы создать модель по имени user с полями «name, email, password», нужно просто запустить команду:
sails generate model user name:string email:string password:string
Эта команда создаст файл User.js в каталоге api/models. Содержимое файла выглядит примерно так:
/*---------------------
:: User
-> model
---------------------*/
module.exports = {
attributes: {
// Simple attribute:
// name: 'STRING',
// Or for more flexibility:
// phoneNumber: {
// type: 'STRING',
// defaultsTo: '555-555-5555'
// }
name: {
type: 'STRING'
},
email: {
type: 'STRING'
},
password: {
type: 'STRING'
},
}
};
Создание Blueprint-интерфейса
Контроллер и модель можно создать одновременно, создавая Blueprint интерфейс, который позволит просмотреть /user.
sails generate user
Интерфейс Blueprint экономит время, автоматически создавая соединения между моделью и контроллером, позволяя добавлять записи в БД при помощи этого маршрута; например, если перейти по http://localhost/user/create?name=John+Smith, в БД добавится запись John Smith, а на экране появится массив JSON всех записей в этой модели:
{"name":"John Smith","createdAt":"2013-07-10T20:10:01.038Z","updatedAt":"2013-07-10T20:10:01.038Z","id":1}
Каждый созданный таким образом контроллер по умолчанию содержит методы create(), find(), findAll(), update(), and destroy(); скорее всего, позже нужно будет добавить или изменить методы в контроллере, но для начала неплохо.
Данные можно добавить и при помощи POST-запроса со строкой данных JSON, например:
{
name: 'John Smith'
}
Добавление маршрутов
Маршруты можно добавить в config/routes.js; этот файл отлично документирован.
Режим производства
Когда приложение готово к развёртыванию в производство, переместите го с порта 1337 на порт 80. В Sails.js это очень просо.
Откройте config/application.js. Если это единственное приложение на сервере, замените:
port: 1337,
строкой
port: 80,
Если на сервере размещено несколько приложений и вы используете NGINX, отредактируйте файл блока server, добавив в него:
location / {
proxy_pass http://127.0.0.1:1337/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Оставьте Sails.js на порте 1337.
Если на сервере размещено несколько приложений и вы используете Apache, отредактируйте файл виртуального хоста, внеся в него:
ProxyRequests Off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://127.0.0.1:1337
ProxyPassReverse / http://127.0.0.1:1337
Оставьте Sails.js на порте 1337.
Затем замените строку:
environment: 'development'
следующей строкой:
environment: 'production'
Установите forever:
sudo npm install -g forever
Примечание: Forever – это пакет node.js, позволяющий запускать приложения в фоновом режиме.
Затем запустите:
forever start /path/to/app.js
Это запустит процесс в фоновом режиме. Чтобы убедиться, что приложение перешло в фоновый режим, введите:
forever list
Эта команда вернёт список процессов node.js.