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 будет указывать на директорию с темой;