hell0w0rd
@hell0w0rd
Просто разработчик

Подскажите новичку в node.js

Фреймворк
Просмотрел курс learn.javascript.ru/nodejs-screencast, возможно автор еще не рассказал всего до конца, но я так понял, что у express архитектура микро-фреймворка(в мире php во всяком случае). То есть контроллеры лежат в папочке, модели в папочке, вьюхи также.
Есть ли возможность сделать модульность как например в симфони, где каждый модуль отвечает за свою задачу, у него есть свои контроллеры, свои модели и тд.
require/dic
Я правильно понимаю, что require в node.js — это своего рода DIc? То есть как у меня в тестовом проекте — есть папка service, и там лежит логгер и подключение к базе. Туда планирую сконфигурировать роутер и прочие зависимости.
Шаблонизатор
Мне очень нравится twig, хорошо что есть twig.js. На сколько я понимаю я пишу сервер на ноде, а не просто приложение, соответственно я могу хранить данные между запросами без посрединков. twigjs кеширует таким образом данные, или как-то по другому и можно ли их вытащить, для отправки на клиенту? Возможно посоветуете другой js шаблонизатор(не ejs и не jade). С модульностью подобной твигу.
  • Вопрос задан
  • 5097 просмотров
Пригласить эксперта
Ответы на вопрос 2
k12th
@k12th
console.log(`You're pulling my leg, right?`);
1) Можно. Гуглите express sub apps.
2) Модули это модули, к IoC они отношения не имеют. В PHP такого нет, отсюда, видимо, и недопонимание. Частично механизм модулей может помочь в создании IoC/DI.
3) На ноде вы пишете именно приложение, хотя и со встроенным сервером. Данные между запросами естественным образом хранятся в памяти, тупо в переменной. Естественно, при рестарте приложения такие данные пропадут.
Сомнительно, чтобы шаблонизатор кэшировал данные. Обычно они кэшируют скомпилированные шаблоны, а не переданные данные.
Ответ написан
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
Фреймворк
Посмотрите в сторону Impress, для PHP-шника это будет более естественно. Все урлы мапятся на файловую систему, шаблоны и обработчики переопределяются. Созданием каталогов делается роутинг к страницам и к обработчикам API. Можно менять код обработчиков не перезапуская приложения, просто отредактировав файл на диске. Он подгружается в память и кешируется, то же самое происходит с шаблонами. Все без перезапуска, работает в многопоточном (кластерном) режиме. На нем уже десяток проектов работает под нагрузками. Вот статья на Хабре про Impress (написана в те времена, когда он был еще прототипом): Прототип тоталитарного фреймворка для node.js
require/dic
Модульность в Impress специфиеская, обработчики разбиты на отдельные файла, а вот модели и контроллеры можно писать в виде библиотек вот в таком паттерне, как описан тут: Паттерны JavaScript модулей в Impress для node.js и браузеров
Шаблонизатор
В Impress есть очень простой шаблонизатор, возможно, он не такой функциональный, но он очень производительный, в отличие, например, от EJS, который сделан просто безграмотно, ибо использует синхронное чтение шаблонов с диска. Для ноды синхронные операции вообще выбиваются из концепции и уничтожают все преимущества.

Если что, обращайтесь, это разработка моей компании, все оупенсорс, лицензия RUMI. Постепенно и документацию делаем, а примеров полно, хорошими примерами может служить админка к базам данных, выложенная в исходниках вместе с Impress в одном пакете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы