/simplicitjs

Simple and explicit structure for app based on express.js

Primary LanguageJavaScriptMIT LicenseMIT

SimplicitJS

Simple and explicit structure for app based on express.js

Установка

После клонирования репозитория вам понадобиться установить зависимости:

npm install & bower install

Нужно также создать в корне проекта файл .env, примерную структуру которого вы можите увидеть в файле .env.sample Из основных настроек которые должны быть объязательно определены в файле:

  • NODE_ENV - параметр окружения
  • NODE_PORT - порт на котором будет запущено приложение

Остальные настройки могут вам понадобиться в зависимости от используемых вами модулей

Модули

Simplicit построен по принципу модульного приложения, модулем может быть отдельная часть вашего проекта которая отличаеться своим повидением или лайоутом. После клонирования репозитория в директории modules вы сможите увидеть три модуля для примера:

  • front - модуль который имеет лайоут с возможностью указать тему отображения, свой набор контролеров и будет отображаться как основной контент вашего проекта;
  • api - модуль не имеющий лайоута для отображения, со своим набором контролеров;
  • admin - модуль который построен по принципу Single Page App (SPA), может взаимодействовать с модулем api.

Любые части могут вами быть заменены на более подходящие в вашем случае.

Конфигурация используемых вами модулей определяется в одном из файлов находящихся в директории /config/environments/

И может иметь такой вид:

"appModules": { 
  "admin":  "/admin", 
  "api":    "/api", 
  "front":  "/" 
}

Таким образом вы можете настроить набор модулей которые будут отображатся в выбраном окружении

Создание модуля

Для создания модуля вам нужно создать новую директорию в папке modules И в ней создать файл index.js Этот файл будет стартовой точкой вашего модуля. Вы свободны в организации структуры модуля но для работы в составе Simplicit от должен отдавать результат работы express()

Пример index.js модуля:

var express = require('express');
var submodule = express();

submodule.get('/', function(req, res){
    res.send({
        title: "Some text"
    })
});

module.exports = submodule;

Вы так же можете создать модуль с помощу подготовленого класса Module

Пример index.js модуля:

var path = require('path');
var config = require('nconf');
var ModuleClass = require(path.join(config.get('CORE_DIR'), 'Module'));

var Module = new ModuleClass(__dirname);

Module.init();
module.exports = Module.getInstance();

В данном случае в директории вашего модуля должен быть файл конфигурации модуля config.json и дериктория controllers (за исключением модуля с типом "spa")

В файле конфигурации модуля могут быть указаны такие параметры:

  • type - тип модуля, пока мы учитываем такие варианты: standard, spa, api;
  • views - параметр указывающин нужно ли использовать для модуля виды отображения (возможное значение true|false);
  • controllers - объект по типу ключь значение описывает путь и файл контролера котрый будет отвечать на запрос к данному пути;
  • theme - в случае использования views будет указывать на директорию с темой;