Дорый день. Спасибо большое за очень полезную библиотеку, посмотрев возник вопрос: в каком слое правильно делать данное преобразование? На ум приходит написать map в котором сохранить соответствие интерфейса backend классу frontend, и сделать интерцептор который получив данные будет проверять типы и производить преобразование, таким образом в сервис попадет класс обладающий поведением, очень хотелось бы узнать что думаете , используется ли такое?
Я просто использую при получении pipe map и вызываю преобразование и обратно, так же приходит объект и делаю вызов обратного преобразования. Вариант интерсептора интересный, но более сложный и как бы логика будет не очевидна, для другого разработчика
на каком уровне лучше делать трансформацию? сразу при получении данных с бэкенда? или лучше в селекторе? в случае отдельного селектора мы сможем иметь версию с оригинальными данными
Тут нужно смотреть что нужно вам. Во первых, трансформаций может быть несколько - одна это хранение в БД, вторая это для обработки на бэке, третья то что бы отправляем фронту. Если у вас данные просто отравляются фронту, то можно и при ответе делать трансформацию. У меня в проектах все три варианта, когда я преобразую для работы на бэке, есть когда только при ответе на фронт преобразую.
С моментом очень много чего сделано, а альтернативы рассмотрю в видео, когда буду про момент записывать. В этом видео его применил из-за распространенности и известности. Наверное один из главных недостатков момента это его размер 🤣
Здравствуйте Александр 30 мин ждал кейса на случай валидации типов с бекенда Как например делает yup в реакт формах ну и в ангуляре похоже. А что если на фронт пришли невалидные данные…крошить не ок, обрабатывать хз как
Конечно можно и в конструктор добавить преобразование, а так же функцию обратного преобразования в объект встроить. Изначально всегда так и делал, но может быть получение данных и сам класс в разных библиотеках, или класс это сторонний, поэтому такой пример сделал в видео.
не очень нравится подход с декораторами, все-таки непонятно что с ними будет когда в js завезут нативные и не ясно для чего импорт reflect metadata и почему нельзя без него обойтись вообщем было бы здорово увидеть альтернативу class-transformer которая была бы более легковесной, без декораторов и без необходимости в лишних импортах
Альтернатива только свои функции преобразования. Если посмотреть код библиотеки, он внутри кучу полезного делает, как-то более легковесное трудно сделать. А без декораторов код становится менее декларативным.
Это конечно прикольно. Но как показывает практика проще самому написать преобразование чем использовать такие библиотеки, 1 всегда будет какой-то вредный случай который не получится сделать с этой библиотекой 2 разобраться с такой библиотекой не всегда быстро получается. Каждому новому программисту нужно объяснять что это за зверь или на каждый не стандартный случай лезть в документацию которая не всегда нормальная
Библиотека предельно простая, я использую 4 декоратора и всё. А так да как и сказал все делают первый вариант, только несколько раз ловил ошибки из-за object.assign, а его любят использовать ибо лень.
Вместо value = name + '_1' лучше писать value = `${name}_1` Без наездов - делюсь опытом. Вообще полезно читать статьи вроде "10 новых фишек JS", или "За что мы ненавидим JS". Мои первые code review состояли в том, чтобы взять эти фишки в работу.
Не понял что он делает? То что можно автоматически сгенерировать клиент - у меня есть про это ролик. Тут виде про то что мы получаем одно, а работаем с другим, например свагер не сделает вам moment или расширение как я в видео показал.
Интересный подход, возьму на вооружение. Спасибо за труд!
Всегда пожалуйста 😊
Спасибо, очень полезные знания.
Согласен 😉
Дорый день. Спасибо большое за очень полезную библиотеку, посмотрев возник вопрос: в каком слое правильно делать данное преобразование? На ум приходит написать map в котором сохранить соответствие интерфейса backend классу frontend, и сделать интерцептор который получив данные будет проверять типы и производить преобразование, таким образом в сервис попадет класс обладающий поведением, очень хотелось бы узнать что думаете , используется ли такое?
Я просто использую при получении pipe map и вызываю преобразование и обратно, так же приходит объект и делаю вызов обратного преобразования. Вариант интерсептора интересный, но более сложный и как бы логика будет не очевидна, для другого разработчика
на каком уровне лучше делать трансформацию? сразу при получении данных с бэкенда? или лучше в селекторе? в случае отдельного селектора мы сможем иметь версию с оригинальными данными
Тут нужно смотреть что нужно вам. Во первых, трансформаций может быть несколько - одна это хранение в БД, вторая это для обработки на бэке, третья то что бы отправляем фронту. Если у вас данные просто отравляются фронту, то можно и при ответе делать трансформацию. У меня в проектах все три варианта, когда я преобразую для работы на бэке, есть когда только при ответе на фронт преобразую.
Momentjs разве еще живой? Они на своем же сайте рекомендуют использовать более современные альтернативы. В частности luxon.
С моментом очень много чего сделано, а альтернативы рассмотрю в видео, когда буду про момент записывать. В этом видео его применил из-за распространенности и известности. Наверное один из главных недостатков момента это его размер 🤣
Здравствуйте Александр
30 мин ждал кейса на случай валидации типов с бекенда
Как например делает yup в реакт формах ну и в ангуляре похоже. А что если на фронт пришли невалидные данные…крошить не ок, обрабатывать хз как
По валидации данных есть отдельные библиотеки, об одной из них конечно расскажу.
Был опыт использования date-fns только потому, что он работает с Angular Material.
А чего нельзя взять респонс с бека, и пропустить через класс модели ( new Model) и там сделать все преобразования ?
Конечно можно и в конструктор добавить преобразование, а так же функцию обратного преобразования в объект встроить. Изначально всегда так и делал, но может быть получение данных и сам класс в разных библиотеках, или класс это сторонний, поэтому такой пример сделал в видео.
cool
Thx
не очень нравится подход с декораторами, все-таки непонятно что с ними будет когда в js завезут нативные
и не ясно для чего импорт reflect metadata и почему нельзя без него обойтись
вообщем было бы здорово увидеть альтернативу class-transformer которая была бы более легковесной, без декораторов и без необходимости в лишних импортах
Альтернатива только свои функции преобразования. Если посмотреть код библиотеки, он внутри кучу полезного делает, как-то более легковесное трудно сделать. А без декораторов код становится менее декларативным.
Это конечно прикольно. Но как показывает практика проще самому написать преобразование чем использовать такие библиотеки,
1 всегда будет какой-то вредный случай который не получится сделать с этой библиотекой
2 разобраться с такой библиотекой не всегда быстро получается. Каждому новому программисту нужно объяснять что это за зверь или на каждый не стандартный случай лезть в документацию которая не всегда нормальная
Библиотека предельно простая, я использую 4 декоратора и всё. А так да как и сказал все делают первый вариант, только несколько раз ловил ошибки из-за object.assign, а его любят использовать ибо лень.
Вместо value = name + '_1' лучше писать value = `${name}_1`
Без наездов - делюсь опытом.
Вообще полезно читать статьи вроде "10 новых фишек JS", или "За что мы ненавидим JS". Мои первые code review состояли в том, чтобы взять эти фишки в работу.
Конечно я знаю про строковые литералы и интерпретацию строк 😉
@@Kulibins1 один блогер советовал писать под роликами, чтобы те, кто туда придут через 1-2-10 лет смогли извлечь для себя пользу.
@@VasyaFF полезное дело 👍
Swagger всё это делает.
Не понял что он делает? То что можно автоматически сгенерировать клиент - у меня есть про это ролик. Тут виде про то что мы получаем одно, а работаем с другим, например свагер не сделает вам moment или расширение как я в видео показал.
@@Kulibins1 ну moment он сгенерит, почему нет?
@@mrjekagm приведите пример
Во-первых, moment.js уже 1,5 года не поддерживается, во-вторых - вы размер этого пакета видели?
Я уже в комментах именно на эти вопросы ответил, посмотрите, их тут мало. Все озвученные вопросы я в курсе 😉