Pull to refresh

Comments 28

Попахивает подтверждением фразы «На javascript каждый должен создать свой фреймворк»
И зачем вы его писали, если уже знакомы с PHP?
Чем-то похоже на Yii, но кое-что почему-то переименовано
Ну для начала, php и nodejs не нужно сравнивать, у них принцип работы совсем разный, просто на nodejs мне не хватало инструментов.

>> Чем-то похоже на Yii, но кое-что почему-то переименовано
С этого фреймворка я брал удобные для меня конструкции и подходы
>> Чем-то похоже на Yii, но кое-что почему-то переименовано
С этого фреймворка я брал удобные для меня конструкции и подходы

Вы точно не первый :) Jii чем-то не подошёл?
Да, я видел, но там автор полностью переносит фреймворк, в yii2 у меня был затык в AR, с вложенными атрибутами (JSONB), для решения этой задачи я использую sequelizejs,
ну и как было уже сказано:
«На javascript каждый должен создать свой фреймворк»
не удержался
контроллеры и экшены, которые нам навязывает expressjs

нет в expressjs никаких контроллеров и экшенов, есть только middleware

Насчет гибкости роутера, как в этом фреймворке можно исключить парсинг кук и работу с сессией например для маршрута «GET /assets/<filePath:.*>»? В expressjs это тривиальная задача.

т.е. если вам нужно будет в середине проекта воткнуть логгер

Не понятно в чем проблема:
router.get('/user/:id',user.getById)

router.get('/user/:id', [loggerBefore, user.getById, loggerAfter])
Ваш пример с логером хорош, но давайте не забывать сколько у вас будет копипаста, особенно если мы говорим о большем проекте, но тут уже больше дело вкуса и удобства.

Что касается отключения обработки сессии и куки, а в чем проблема, и зачем их отключать? если мы говорим про отдачу статики, так даже любую статику нужно отдавать только разрешенным пользователям, в противном случае ее можно один раз отдать и затем закешировать nginx (и тут вообще можно будет забыть про конекты к Вашему приложению)
Вопрос не в том зачем отключать, а в гибкости. Не нравится пример с куками, есть аналогичный по сути пример с cors. Допустим возникла необходимость на конкретный маршрут API, либо на определенный неймспейс отдавать заголовок «Access-Control-Allow-Origin: *», в случае с expressjs вставляем middleware перед любым нужным маршрутом. Если нужно что-то по сложнее чем *, то берем готовый middleware из npm, а в вашем случае, на каждую типовую задачу придется писать свой велосипед.
так кто мешает поставить тот-же behavior который добавит этот заголовок?
внутри экшена вы можете без проблем рулить заголовками.

Ваше замечание справедливо.
как в этом фреймворке можно исключить парсинг кук и работу с сессией

и подумать действительно стоит в эту сторону

Когда-то давно писал middleware для express примерно с таким api:


const group = require('group-middleware');

group(function () {
  router.get('/user/:id',user.getById);
  router.get('...');
})
  .before(auth);
  .after(resultFormatter);

Решает проблему копипасты?

Интерестное решение, а как онорешает кейс:
Имеем 3 роута, перед кадым нужно выполнить миделварину со своими параметрами, затем еще два роута также с общей миделвариной, ну и затем перед всеми тремя еще одну.
Неспорю немного претянутый кейс и тут наверно больше подойдет выражение: «на вкус и цвет все фломастеры разные», но я почему склоняюсь к тому что, контроллер должен решать что и когда запускать, это субьективное мнение
причем тут реакт? реакт это клиент, а тут речь идет про серверный фреймворк

Подучите матчасть господин. React уже и на сервере рендерится.

и еще пади запросы делает в базу? да? и рест апи выдает?
рендеринг не означает что есть полноценный серверный фреймворк для работы с бд например

Вы хотя бы вникните в суть. На ваш комментарий подсказываю шепотом "Redux".

откуда же вы будете данные получать чтобы в редукс положить?

вы даже про nodejs не слышали?

Вы похоже ни разу бэкенд не делали

я хотя бы понимаю о чем говорю, любезнейший

хм… а мне вот кажется, что нет.

"Редукс". Хотя бы правильно произносить научитесь прежде чем вразумлять население. )

Боже, зачем так делать? https://github.com/kalyuk/dok-js/blob/2d283f8a967f36a569debdf6d2ef4898de632bb5/src/base/Application.js#L31

 constructor(config) {
    super(config);
    global.$App = this;
    this.$cache.modules = {};
  }

Если вы про глобальную переменную, то она скоро будет убрана, все компоненты уже начали использовать сервис для получения инстанса приложения, осталось дорефакторить
Еще и в конструкторе вызывать конструктор через super() вообще не комильфо.
super вызывается для того чтобы код, который был написан в конструкторе родителя, так же отработал, если вы знаете более элегантный способ вызова, дайте пример кода, или вы все также
я хотя бы понимаю о чем говорю, любезнейший

сотрясаете воздух без живых примеров и обоснований?
UFO just landed and posted this here
Спасибо, нужно будет подумать в эту сторону, это еще очень сырое решение, ради подобных комментариев я и разместил статью, чтобы услышать критику и пожелания
Sign up to leave a comment.

Articles