Sergey
export default ({ db }) => {}
Artsyom
Внедрение зависимостей. Пишем классы, которые принимают зависимости через сеттеры или конструкторы. И завязываются не на реализации, а интерфейсы(ну хотя бы в тс)
Artsyom
export default ({ db }) => {}
А где тут ди?
Sergey
так это он
Artsyom
Можно функции
Artsyom
У функций тоже есть интерфейс
Artsyom
так это он
Не вижу, объяснишь?
Sergey
ну что у моего модуля есть зависимость — db он не импортит явно а получит извне
Nurik
без di досточно сложно добиться чистых функций. Чтобы тестить и чтобы без сайдэффектов.
Sergey
Не вижу, объяснишь?
что выше написано, это функция
Artsyom
А, все! Вторую строку не понял
Дима
Это как фабрика, которую регулярно используют в качестве термина для обычных функций в языках без first class citizen функций
Artsyom
Теперь понял)
Artsyom
Ну да, это норм. Но неужели функций хватает?
Sergey
да
Sergey
открою небольшой секрет
Sergey
есть языки, в которых кроме функций нет ничего
Дима
Ну да, это норм. Но неужели функций хватает?
У тебя не забирают слово класс, тебе предлагают альтернативу)
Дима
Плюс в di входят довольно далёкие друг от друга вещи
Anton
Чет я так и не въехал в ({db}) => Типа есть какой нить di.js в корне и он экспортит все, что может понадобиться, а в конкретном месте мы делаем import {db} from 'di'
Artsyom
Т.е. мы возводим в абсолют то, что для простоты интерфейсы должен быть как можно меньше и оставляем один метод и избавляемся от слова класс))
Sergey
Чет я так и не въехал в ({db}) => Типа есть какой нить di.js в корне и он экспортит все, что может понадобиться, а в конкретном месте мы делаем import {db} from 'di'
он просто импортит все что есть в директории а затем вызывает каждую функцию с получившимся объектом
Anton
ааа все, понял
Artsyom
А, вот даже как
Artsyom
он просто импортит все что есть в директории а затем вызывает каждую функцию с получившимся объектом
Проблемы будут, когда у тебя появится ещё один db. В каком-то модуле придется писать { db1 }
Sergey
но решение другое
Artsyom
Это уже просто сервис локатор, а не ди
Sergey
хах
Cenator 🐈
какая из орм лучше - wetland или knex?
Cenator 🐈
для постгреса менно
Sergey
sequelize
Cenator 🐈
ээ
Cenator 🐈
слышал что он неоч
Sergey
knex вообще дно
Nurik
какая из орм лучше - wetland или knex?
knex это просто query builder. wetland реализация датамаппера.
Sergey
учитывая "популярность" wetland
Sergey
и sequelize
Sergey
можно сделать вывод
Sergey
что лучше поддерживается и стабильнее
Cenator 🐈
океееей
Artsyom
wetland прям typeorm напомнил
Sergey
если бы typeorm реально было юзать в жс то да
Artsyom
Да вроде можно же
Artsyom
Но не очень удобно )
Sergey
а декораторы?
Artsyom
А бэйбл?
Sergey
лол
Sergey
декораторы в далеком стейдже
Cenator 🐈
тс)
Sergey
да и прекомпилить ноду это прям не але
Artsyom
А в чем проблема?
Sergey
боль
Artsyom
Почему клиент можно, а сервер нельзя?
Sergey
потому что разница огромная
SleepWalker
Ребята, я так понимаю все пишут строго на es6?
Sergey
в ноде?
Artsyom
es2018, попрошу
Так для него как раз бейбл и нужен
Cenator 🐈
Так для него как раз бейбл и нужен
все что есть в спеке сразу попадает в ноду
Deleted
sequelize
просмотрел getting started это code first подход? схему БД через SQL описывать вообще не надо?
arthur
ага
🤔 что это
SleepWalker
es2018, попрошу
) а почему именно esx?
Cenator 🐈
Sergey
🤔 что это
раст же
Artsyom
раст же
Так говоришь, будто все его должны знать )
Sergey
было бы очень полезно
Nurik
писать api на расте ? Но зачем ? Proof-of-concept или потому что на go так тоже можно ?
SleepWalker
эээ что?
Ну es2018 ...
Sergey
Anonymous
пасаны, а вот если используешь passport-jwt (не используешь сессии) , то passport.initialize() не нужен?