Персональный блог Игоря Антонова aka "spider_net"

Изучаем sails.js. Часть 2. Структура проекта


Рубрика: sails.js -> JavaScript -> Программирование
Метки: | | | | |
Просмотров: 6576
Изучаем sails.js. Часть 2. Структура проекта

Продолжаем знакомиться с фреймворком sails.js. В прошлый раз я дал вводную часть и наглядно показал как легко создавать новые проекты с помощью встроенного в sails.js генератора проектов. Сегодня займемся изучением структуры созданного проекта, а затем напишем немного кода.

Структура проекта sails.js

api

Я неспроста начал именно с этой директории. Здесь вы будете работать над серверной частью бизнес-логики. Помните, я говорил, что sails.js применяет архитектурный шаблон MVC? Так вот, в директории api поселились сразу две буквы этой популярной аббревиатуры - “M” и “С”.

Директория api содержит ряд поддиректорий, каждая из которых отвечает за хранение определенных сущностей. Рассмотрим каждую из них.

  • controllers. Название папки говорит само за себя. Здесь будут располагаться контроллеры. Контроллеры содержат код для взаимодействия с моделью и обслуживанию клиентских запросов.
  • models. В моделях мы будем описывать структуры для хранения данных нашего приложения.
  • Policies. Политики (надеюсь, я правильно перевел это слово) чаще всего используются для аутентификации клиентов и установки ограничений на доступ к определенным частям вашего приложения.
  • Responses. В этой директории можно определить логику ответов сервера (404 - страница не найдена, 500 - ошибка сервера и т.д.).
  • Services. Сервисы похожи на действия контроллеров. Их мы должны использовать для задач, не связанных с обработкой пользовательских запросов. Например, если требуются выполнить какой-то алгоритм, то выгодней его описать в виде сервиса, а не действия контроллера. Таким образом, вы сразу решаете проблему повторного использования и не захламляете папку с контроллерами.
  • config

    В этой папке содержатся различные конфигурационные файлы. Если требуется что-то настроить, то это “что-то” надо искать в первую очередь именно здесь. Я я не буду описывать каждый файл. С многими из них мы познакомимся во время грядущей практике.

    views

    В этой директории создаются представления. Из коробки в качестве шаблонизатора применяется EJS (embedded JavaScript). Следовательно, все файлы должны быть с расширением ejs.

    tasks

    По умолчанию sails.js использует Grunt для управления зависимостями. В папке task определяются задачи и настройки Grunt. Об этом поговорим отдельно, т.к. тема интересная.

    assets

    В этой папке принято хранить все клиентские библиотеки, css файлы, изображения и все другие штуки, которые должны быть доступны на клиенте.

    Немного кода и генераторов

    Теперь немного расширим созданное нами в прошлый раз приложение. Попробуем добавить новый контроллер, а заодно познакомимся с генератором контроллеров на практике. Сгенерируем контроллер “page”:

    sails generate controller page

    Команда автоматически создаст нам заготовку PageController.js. В ней мы будем описывать отдельные действия контроллеров. Откроем это файл в редакторе и в module.exports опишем парочку действий. Пока не будем заморачиваться представлениями, а просто возратим пользователю отдельные строки:

    module.exports = {
    	
        about: function(req, res) {
            res.send("Hello, from action 'about'");  
        },
        
        index: function(req, res) {
            res.send("This is index page");
        },
        
    };

    Итак, здесь описаны действия контроллера. А когда они будут выполняться? Когда пользователь будет обращаться к контроллеру: http://localhost:1337/page/about и http://localhost:1337/page/. Логика для подобных вещей стандартная - имя контроллера/метод действия/параметры.

    Попробуйте запустить пример командой “sails lift” и обратится к определенным действиям контроллера. Потом проведите небольшой эксперимент. Обратитесь к несуществующему действию.

    sails.js сгенерировал страницу 404

    В следующей заметке начнем рассматривать процесс создания реального приложения на sails.js. Заходите, дальше будет еще интересней.

    Оставьте комментарий!
    comments powered by HyperComments