
Valerii
04.10.2018
08:13:14

s4b0t
04.10.2018
08:13:41
что за магия с пустой стрелкой в инпуте? <v-proper-select @input"() => {}"/>

ed
04.10.2018
08:14:05

Google

Siarhei
04.10.2018
08:14:08
Ой снова это "а если чтото поменяется". За 10 лет в разработке, я ниразу не видел ситуацию чтоб "чтото" заменилось. И для этого тратить неделю на добавление *лишних* слоев, и потом +20% для создания каждого Экшена, то что надо лезть в отдельные файлы и дописывать *лишние* импорты. В 99% случаев ваш проект или умрет или в погоне замодой будите все переписывать на новый фреймаорк, чем появится причина заменить axios на что либо. Еще раз, добавлять слой который просто удалит одну строчку (с промисом аксиома) и заменит ее на строчку с промисом вашего сервиса не нужно, только добавит лишней работы не зависимо отразмера проекта

Dmitry
04.10.2018
08:14:28

ed
04.10.2018
08:14:32
это обычная стрелочная функция

Valerii
04.10.2018
08:14:39

Hedint
04.10.2018
08:15:14

Dmitry
04.10.2018
08:15:16

Евгений
04.10.2018
08:15:32
кто-то переходил уже на nuxt 2.1.0 ?

Bohdan
04.10.2018
08:16:21
так не нужно статично забивать)
а потом у тебя изменился формат возвращаемых данных, метод используется в тех же 6 формах - зато у тебя урл константой записан, и если он изменится - надо поменять в одном месте

Dmitry
04.10.2018
08:18:00
именно

Bohdan
04.10.2018
08:18:24
Ой снова это "а если чтото поменяется". За 10 лет в разработке, я ниразу не видел ситуацию чтоб "чтото" заменилось. И для этого тратить неделю на добавление *лишних* слоев, и потом +20% для создания каждого Экшена, то что надо лезть в отдельные файлы и дописывать *лишние* импорты. В 99% случаев ваш проект или умрет или в погоне замодой будите все переписывать на новый фреймаорк, чем появится причина заменить axios на что либо. Еще раз, добавлять слой который просто удалит одну строчку (с промисом аксиома) и заменит ее на строчку с промисом вашего сервиса не нужно, только добавит лишней работы не зависимо отразмера проекта
если твоя разработка про "наклепать, сдать, забыть" - возможно
для меня разработка заключается не только в том, чтобы сделать так, чтобы оно работало, а еще и так, чтобы можно было легко отреагировать на изменившиеся требования

Alex
04.10.2018
08:18:26

Dmitry
04.10.2018
08:18:35
Вы так говорите, словно вы только админки разрабатывали с простыми CRUD операциями и 1 АПИ эндпоинтом.

Google

Siarhei
04.10.2018
08:20:24
Это дело конфига а не сервиса отдельного

Bohdan
04.10.2018
08:20:56
изменения бывают разные, и суть абстракций в том, чтобы уменьшить связанность и количество изменений в коде, если изменяются внешние требования

Siarhei
04.10.2018
08:22:18
Спасибо.
В суть абстракции не входит требование для создания *лишних* слоев
Так можно наприлумывапть и 50 и 100 и потом чтоб сделать какую-нибудь мелочь тратить месяц

Dmitry
04.10.2018
08:24:15
Ваш проект растёт, вы обновляетесь на vue3. Изменился vuex, изменились компоненты. С апи слоем вам нужно переписать только новый стор. и освежить вью слой. Без слоя апи вы переписываете всё приложение.

Siarhei
04.10.2018
08:24:58
В вашем случае вы перепмсываете vuex как и в моем

Bohdan
04.10.2018
08:25:10
я не буду переписывать половину приложения - ведь я могу сначала обновить vuex, все проверить, а потом обновить апишку (или как угодно иначе)

Siarhei
04.10.2018
08:25:57
Да, отдельный слой в vuex для апи не нужен, для вас этот слой уже сделан и называется axios

Dmitry
04.10.2018
08:26:20
Ладно, пишите как вам удобно. У нас в компании неоднократно была боль по причинам, которые я описывал выше. Если вам в кайф переписывать всё приложение вместо его частей - то переписывайте.

Siarhei
04.10.2018
08:27:36
Дай бог никогда не пересечься на проекте с "адептом 100 слоев", потому что когда-то человек недопонял про абстракцию

Федоров
04.10.2018
08:27:54
@thatside, иногда проще не заморачиваться над абстракциями, а делать просто, и лаконично, "ужато" и в "рамках"
надо знать меру где нужна абстракция, а где нет

Bohdan
04.10.2018
08:28:27

Федоров
04.10.2018
08:29:00
в данном случае - проще сделать отдельный javascript со списоком всех ссылок и не долбать мозг)
какая тут абстракция

Google

Федоров
04.10.2018
08:29:10
это не интерфейс для подключения плагинов писать

Dmitry
04.10.2018
08:29:11
Это не абстракция даже, это банально DRY

Zikoi5
04.10.2018
08:29:39
Привет всем. Хотел спросить, существует ли защита от двойного клика?

Siarhei
04.10.2018
08:29:44
Да, это большая, потому что уже сделано в аксиос
Нет тут dry

Федоров
04.10.2018
08:30:05
@Zikoi5, да, существует) называется debounce

Zikoi5
04.10.2018
08:30:16
от лодаш который?

Федоров
04.10.2018
08:30:19
если ты про случайное срабатывание
а если про специальный двойной клик

Zikoi5
04.10.2018
08:30:43

Siarhei
04.10.2018
08:30:45
Ты пишешь axios.Get(something), axios.Post(somethingelse) где ты повторяешь сам себя?

Dmitry
04.10.2018
08:30:53
да что вы говорите?
есть 2 действия, для 1го нужны данные 1го. Вы дважды 1 и тот-же запрос будете описывать в экшенах?
а потом апи сменилось (а это будет уже завтра). И вы переписывайте в 2х местах
Абстракция, тут нет dry
)

Федоров
04.10.2018
08:31:21
миксины используйте и не делайте мозг)
сделайте общий метод да и все
сделал миксин - переписываешь в одном месте

Dmitry
04.10.2018
08:31:51
Ну так я о том же.

Google

Siarhei
04.10.2018
08:32:06
Я буду делать либо в методе в then второй метод либо параметрами в экшен сувать какой экшен выполнить после первого

Dmitry
04.10.2018
08:32:15
А мне говорят что это ок всё писать используя тупо аксиос в экшенах, потому что иначе лишняя абстракция, сложно, страшно.
с каких пор банально функция это абстракция и сложно, страшно?)

Siarhei
04.10.2018
08:32:30
Совсем не то говорите

Evgeny
04.10.2018
08:33:25
блин
ты свой голый аксиос потом еще хер протестируешь

Siarhei
04.10.2018
08:33:37
Абстракция (лишний слой) это дорого, и надо добавлять только где нужно, а не где попало. Каждый слой +20% к цене разработки. Для аксиом не нужен слой, если используете его в вуекс

Evgeny
04.10.2018
08:34:44
лично у меня, если говорить упрощенно есть функция создания апи, куда передается некий http клиет с методами get post и тд и который потом возвращает объект с методами апи

Admin
ERROR: S client not available

Siarhei
04.10.2018
08:34:54

Evgeny
04.10.2018
08:34:55
и такую кострукцию очень легко простестировать

Hedint
04.10.2018
08:34:57
Обертка над получением данных - это полезная и простая штука, которая может использоваться почти в любых ситуациях и решает кучу возможных кейсов.
- помогает держать наши actions чистыми
- облегчает тестирование
- может внутри себя разруливать кэширование и авторизацию
- может внутри себя chain'ить запросы (в json-rpc, например)
- может переиспользоваться в других местах/проектах
- "ой, мы поменяли API, теперь перепиши 10 actions" - теперь не про вас, вы переписываете в одном месте
- устраняет жесткую зависимость (axios), мы в любой момент можем её выкинуть/заменить на другую и пользователь нашей обертки (наш коллега) не заметит никакой разницы


Dmitry
04.10.2018
08:35:53
Так, опять всё понапутали с сервисами. Никто не переизобретает аксиос. Я говорю о том, что не стоит использовать голый аксиос в экшенах, потому что будет ситуация: меняется роут - менять все экшены зависящие от этого роута.
Для B нужны данные А но не нужна мутация. - пишите код дважды.
меняется роут - переписываете в 5 местах, вместо 1го.
и так далее и эта сложность и зависимости будут только расти

Siarhei
04.10.2018
08:35:55
это все за вас уже сделал аксиосю

Dmitry
04.10.2018
08:36:14
Вы нас не слышите.

Siarhei
04.10.2018
08:36:21
и вы меня)

Федоров
04.10.2018
08:36:23
кароче он имеет ввиду, у него изолированная логика, типа клиентская библеотка для собственного API
а axios это просто "транспорт"
с этой точки зрения даже очень правильно

Siarhei
04.10.2018
08:37:00
в таком случае вы создаете слой, только потому что недоверяете, или не умеете пользоваться аксиос на 100%

Google

Evgeny
04.10.2018
08:37:29
вот астрактный пример
export default ({ http }) => ({
getUser: () => http.get('/user')
});
.....
const api = acreateApi(context);
api.getUser()
И на тестах мне просто можно передать свой http обект и посомтреть какие там данные уходят и это просто

Dmitry
04.10.2018
08:37:30
даже в примере хакерньюс для чайников апи слой вынесен из экшенов.

Федоров
04.10.2018
08:38:02
если использовать axios напрямую нарушается принцип "черного ящика")

Dmitry
04.10.2018
08:38:19

Evgeny
04.10.2018
08:38:39
по опыту это самое нормальное решение
приложению вообще пофигу как там этот getUser реализован
хоть 150 методов

Roman
04.10.2018
08:39:02

Dmitry
04.10.2018
08:39:35
Оставь, человек писал простые проекты
и еще меньше поддерживал старые

Roman
04.10.2018
08:39:44
Ну ок

Hedint
04.10.2018
08:39:46

Siarhei
04.10.2018
08:39:54
и потом в 5 экшенах вместо аксиос.гет(чтото), написать аписервис.гетчто-то? сомнительно

Evgeny
04.10.2018
08:39:58
я уже не говорю про тесты, мне не нужно тестировать axios, мне нужно тестировать мой код

Siarhei
04.10.2018
08:40:19
мокаешь аксиос и тстируешь свой код.

Roman
04.10.2018
08:40:34
Кул стори

Evgeny
04.10.2018
08:40:55
если для вас это не очевидно, то я не буду дальше рассуждать на тему, пишите так как подсказывает вам ваш опыт

Siarhei
04.10.2018
08:40:57
сколько раз за последний год у вас менялась логика?

Roman
04.10.2018
08:41:06
Много