Особенности использования Sails для начинающих (Часть 2)
СинопсисВ этой статье собраны полезные для новичков советы по использованию различных возможностей MVC фреймворка SailsJS. Эти советы могут быть полезны новичкам тем, что открывают некоторые «секреты» которые могут им быть незнакомы — из-за этого многие пишут множество костылей и велосипедов, это может заставить погаснуть их энтузиазм в изучении этого полезного инструмента только потому что их основные силы будут направлены на обычную рутину которую можно запросто обойти с помощью простых и удобных методов. Интересно?
Выгрузка файлов на сервер в SailsJS В Sails с версии 0.10 по-умолчанию встроена новая удобная опция — выгрузки файлов на сервер с помощью простых и удобных средств, привычных каждому, кто хоть раз пользовался этим фреймворком. Мы все привыкли — что принять данные запроса GET или POST можно просто использовав метод запроса param () var page = req.param ('page'); // атрибут 'page' принимает значения переданного запроса Но у этого метода есть изъян — он принимает лишь строку. А нам необходимо работать с файлами, что же можно сделать? Для этого в Sails есть метод запроса file () req.file ('file'); // атрибут file — значение файлового запроса Далее в обработку вступает созданная командой Sails библиотека Skipper (Шкипер), которая имеет простое и легко запонимающееся API. Сейчас приведу код простого контроллера, а потом подробнее опишу как использовать API. module.exports = { index: function (req, res){ res.view (); }, upload: function (req, res) { req.file ('file').upload ({ dirname: 'uploads/', }, function (err, files) { if (err) return res.serverError (err);
return res.json ({ message: files.length + ' Выгрузка файл (ов) завершена!', files: files }); }); } }; Индексный атрибут — простое отображение страницы. Дальше выгрузка — которая запрашивает файл (ы), отправляемые запросом. Метод upload () принимает 2 агрумента — объект опций, и коллбек функция с данными — ошибка, и файлы. В нашем случае после загрузки на сервер нам отвечают json с данным о количестве и размере файлов. Отправляются файлы как запросом из формы, так и как AJAX —, но с указанием необходимой мета-информации. В простейшем виде представление формы выглядит так:
Опции В объекте опций который мы передали может содержать 2 значения: dirname (Строка) Путь к папке куда загружать файлы. (по-умолчанию это ».tmp/uploads)saveAs (колбек) Функция для определения логики формирования имен загружаемых файлов, в ином случае если не указано — когда появляется файл с именем идентичным старому: файл перезаписывается. Базовый аргумент — объект file. Функция должна возвращать имя файла. Пример: function (file) { return Math.random () + file.name; } Дополнительно Также кроме этого в качестве метода для гибкости можно использовать дополнительные возможности: req.file ('file') // Если Ошибка .on ('error', function onError () { … }) // Если Успешно выполнено .on ('finish', function onSuccess () { … }) // Параметры .pipe (receiving) Страница библиотеки Skipper на GitHub.Sails.log — логирование в sails Когда при разработке нужно обозначить какие-либо моменты в консоли — стандартная команда console.log () будет не так эффективна как sails.log — встроенная в sails система ведения логов в консоли. Это небольшие «сахарные» возможности которые позволяют выделять цветом ваши сообщения в консоли — и к какому виду сообщений они принадлежат. Это полезно когда выполняется множество логируемых действий — и непонятно какое из них к чему принадлежит: К ошибке или информационному сообщению, а может вообще просто как пустая информация. Для sails.log есть 6 методов определения. Вот они: sails.log.error ('Ошибка'); // Выводит сообщение отмеченное красным как error: sails.log.warn ('Предупреждение'); // Выводит сообщение отмеченное желтым как warn: sails.log.debug ('Отладочное сообщение'); // Выводит сообщение отмеченное синим как debug: sails.log.info ('Информация'); // Выводит сообщение отмеченное зеленым как info:
// Низко приоритетные уровни журнала: sails.log.verbose ('Подробное описание'); // Подробное описание чего либо (маловажная информация) sails.log.silly ('Бесполезная информация '); // Абсолютно не нужное в логах В заключение На этом завершим вторую часть нашего экскурса в возможности Sails, и их практическом использовании. В следующей статье будут рассмотрены такие вопросы как «Unit тестирование частей приложения Sails с помощью Mocha» и другие полезные моменты использования фреймворка SailsJS.