Тёмный

#8 Бизнес логика или детали реализации? - Vue.js: концепции 

JavaScript.Ninja
Подписаться 55 тыс.
Просмотров 56 тыс.
50% 1

Опубликовано:

 

29 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 132   
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Итак, готовимся к первым практикам! Пусть вас не пугает, что ссылки на Vue.js 2. Вы от этого не пострадаете - мы будем акцентировать внимание на всех различиях: Вам необходимо прочитать и осознать: - раздел "Введение" документации Vue.js 2 ru.vuejs.org/v2/guide/index.html - раздел "Создание проекта" документации Vue-cli. cli.vuejs.org/ru/guide/creating-a-project.html#vue-create Вы должны уметь создавать с помощью vue-cli новый проект и запускать его.
@drewnaumenko2469
@drewnaumenko2469 3 года назад
Знаем умеем. Ждём с нетерпением.
@edward8397
@edward8397 3 года назад
Google translate(built in) to help.
@torodinson5260
@torodinson5260 3 года назад
плагины и пресеты настроек по ссылке на cli тоже учить ?
@elishadeshawn2599
@elishadeshawn2599 3 года назад
Pro tip : you can watch movies at Flixzone. I've been using it for watching lots of of movies during the lockdown.
@artemy5594
@artemy5594 Год назад
я учился на react, а пришел на проект, где с vue2. Смотрю твой канал, надеюсь будет полезно для меня.
@_LEXX_
@_LEXX_ 3 года назад
Уточка знает как ты писал прошлым летом! Уточка придёт за тобой! 🦆
@КостянЕрмаков-е9ю
@КостянЕрмаков-е9ю 3 года назад
Ну не надо, ну пожажда.😭
@ИванЗырянов-к5ъ
@ИванЗырянов-к5ъ 2 года назад
Если честно, то у меня из за этой гребенной пропаганды везде Точка У мерещиться. Потом просмотрев видео понял, что никакого плохого контекста здесь нет. Пора заканчивать с зомбоящиком, то буду зомбоящером
@Brother_raccoon
@Brother_raccoon 3 года назад
Первый раз с таким форматом изложения материала встречаюсь. Спасибо, прям интересно, жду как сериал. Пошел читать документацию.
@IvanIvanov-bn5qm
@IvanIvanov-bn5qm 3 года назад
Это лучшее обьяснение "S", что я слышал! До этого понимал проблему скорее интуитивно. Спасибо!
@glyukoza3
@glyukoza3 3 года назад
Спасибо за понятное объяснение Single Responsibility! Ценно.
@attack1attack
@attack1attack 3 года назад
Очень хорошее и четкое изложение материала. Вы и Тимофей Хирьянов лучшие преподаватели. Спасибо!
@enslit
@enslit 3 года назад
Хоть я не учу пока vue, но очень ценю блоки концепций. Для меня, как для начинающего, такие темы, глобальные, на вес золота. Все везде конкретные технологии и примеры, а у Ильи философия и акцент на понимании. Очень интересно и полезно. Спасибо! 🤝
@OneLegoOne
@OneLegoOne 3 года назад
Это революционный метод онлайн преподавания, где фраза "Мы изучим" вместо "Вы изучите" меняет восприятие в корне. Кайфую.
@maxchernyshov8405
@maxchernyshov8405 3 года назад
кайфанете еще больше, когда вспомните что вью это не реакт xD
@OneLegoOne
@OneLegoOne 3 года назад
@@maxchernyshov8405 кайфую каждый раз, когда заканчиваю проект на реакте и возвращаюсь к вью.
@nickmet12
@nickmet12 3 года назад
Типичное виражение для человека которий писал и преподовал в ВУЗе
@OneLegoOne
@OneLegoOne 3 года назад
@@nickmet12 не преподавал никогда
@_LEXX_
@_LEXX_ 3 года назад
@@nickmet12 согласен, в школах и вузах это часто употребляемое выражение... да и на ютубе каждый второй так выражается...
@vitiok78
@vitiok78 3 года назад
Зачастую бывает так, что суровый бэкендер просто не успевает вам дать API в те сроки, в которые вам бы хотелось. И что делать? Ждать его? Тратить время? Нет. И вот вам нужно будет комментировать все ваши аксиосы и фетчи в компонентах, заменять их на какие-то заглушки, т.е. редактировать множество файлов. А если написать ту самую прокладку между компонентами и API, о которой говорится в видео, то такую заглушку нужно будет сделать только в одном файле, а именно в файле прокладки. И прокладка отдаст вашим компонентам те данные, которые им нужны. Вы подготовите компоненты заранее, бэкендер сообщит, что он уже готов, и вам нужно будет сделать изменения только в одном файле прокладки. А в компонентах не придётся менять ни одной строчки. Все тесты будут работать как и работали. Сплошная экономия времени и нервов
@user-ug1fk8ob3q
@user-ug1fk8ob3q 3 года назад
Отличный пример привели, спасибо.
@mustapha_mond
@mustapha_mond 3 года назад
Согласна, именно так я себе это и представляю
@violentiner
@violentiner 3 года назад
для этого и существует фулл стак, и не какие тайп скрипты в целом не нужны)ты имеешь четкое представление что ты запрашиваешь и что получаешь
@vitiok78
@vitiok78 3 года назад
@@violentiner Для мелких поделок в виде чудо-сайтиков фуллстэк ещё подойдёт, но на проекте, над которым работает несколько людей - это идиотизм
@DreamingDolphing
@DreamingDolphing 3 года назад
Спасибо за объяснение. Теперь я понял зачем из компонентов выносят реализацию бизнес-логики в отдельный модуль. Сколько раз это видел в различных обучающих видео, но мало кто объяснял почему он это делает.
@krkaa8663
@krkaa8663 3 года назад
Эти горе-учителя сами не знают почему они так делают
@SansHAP
@SansHAP 3 года назад
Вот здесь красиво, кратко и доходчиво! Единственное что нужно добавить - такое разделение упрощает тестирование
@City__Walker
@City__Walker 3 года назад
Оно все упрощает, и когда спустя месяц резко задание приходит «поменяй», не пытаешься дня три понять что ты там такого наделал (когда все в кучу)но грешен, заклеван уточкой 😂
@ramilbabayev5067
@ramilbabayev5067 3 года назад
Спасибо за курс. Формат очень удобный и доходчивый.
@jamesdavis4071
@jamesdavis4071 3 года назад
Привет. Посмотрел 8-ое видео по вью. Прочитал введение по вью 2. Вопросов стало еще больше 😆 Еще раз хотел бы поблагодарить всех причастных к созданию курса. Попробвал примеры из введения в связке с vue-сlie 4 и шаблоном для vue 2. Наступил на ряд граблей. Желаю всем нам удачи в этом увлекательном приключении!
@angrof
@angrof 3 года назад
Спасибо, Ваш курс очень помогает.
@Vladimir-bz9tg
@Vladimir-bz9tg 5 месяцев назад
Спасибо за Ваш труд
@dmytroholoborodko8361
@dmytroholoborodko8361 3 года назад
Про уточку доходчиво было, спасибо! :)
@life_on_fire
@life_on_fire 3 года назад
Это наверно более понятная тема нежели предыдущая) спасибо!
@maksime833
@maksime833 2 года назад
8 урок пройден! Спасибо за ваши видео! Иду читать документацию!
@egorlazuka8211
@egorlazuka8211 3 года назад
Спасибо, про утку действительно понятно
@Masimkaify
@Masimkaify 3 года назад
Спасибо за урок и доступное объяснение!) Пора приобретать уточку)))
@ragnnna2416
@ragnnna2416 3 года назад
Ещё одна серия любимого аниме!
@igorkulibaba7287
@igorkulibaba7287 3 года назад
Спасибо меня тоже интересовал этот вопрос!
@nireone95
@nireone95 3 года назад
Man, ty so much for your work! Looking forward for next lessons...
@wwiiktor
@wwiiktor 3 года назад
Обязательно поддержку как патрона, за такой труд. Благодаря вам сэкономил 60к на курсах Владилена, а сэкономил - значит заработал.
@wwiiktor
@wwiiktor 3 года назад
Смеренно жду новые материалы. Вперёд Илья. ))) Жена смотрит на монитор , а там стрим Ильи как раз идёт и спрашивает, очередной : у тебя новый друг , чего на ужин не зовёшь ?:D Вопросы в голове ещё не созрели . Теория впитывается хорошо. Скоро тучи сложности начнут сгущаться))
@ni55an
@ni55an 3 года назад
4:06 мой ответ, когда сильно заволновался на собеседовании 😂
@TheVirtyoz777
@TheVirtyoz777 3 года назад
Большое спасибо !
@jamesdavis4071
@jamesdavis4071 3 года назад
Спасибо! Это просто комметарий для продвижения видео ^_^
@ky3bk449
@ky3bk449 3 года назад
За утку отдельный лайк)
@igormuryy5722
@igormuryy5722 2 года назад
Илья - Профи!!!
@АндрійКирієнко-х2ь
напоминает паттерн компонент-контейнер, где компонент для отображения в'юхи, а контейнер для получения даних, которие потом передают в компонент
@АлександрКостин-о9ь
Уточка, когда слышит "и": OMAE WA MOI SHINDERIU
@ВоваМазур-ф4я
@ВоваМазур-ф4я 3 года назад
спасибо за видео!
@glazzkoff
@glazzkoff 3 года назад
Ахаххаха глаза кровью наливаютс)) Лайк за крутое объяснение 👍
@alexanonymous5823
@alexanonymous5823 3 года назад
огонь спасибо за контент=))
@МаксФеськов-ю9ц
@МаксФеськов-ю9ц 3 года назад
Спасибо за информацию. Будет ли отдельное видео для настройки окружения (VS Code) для Vue?
@VasylBatih
@VasylBatih 3 года назад
Очень хорошо обьясняете, раньше равнялся на Минина, теперь Вы мой фаворит)
@АндрейФедосеев-с9э
7:06 S в SOLID прицип единичной (одной) ответственности. Часто оговариваются в пользу "единой". Как и в DI часто путают inverse и inject )
@jsb7239
@jsb7239 3 года назад
Стало понятнее 👍🏻
@rodigy
@rodigy 3 года назад
Самая большая боль это где отлавливать ошибки и в как их отдавать дальше. И не только на js
@artemgiant
@artemgiant 2 года назад
Хахахаха, метод уточни просто огонь !!!!
@barrettM8
@barrettM8 3 года назад
спасибо!
@alexandermykulych4165
@alexandermykulych4165 3 года назад
Илья, поправьте если неправ. В моей картине мира S это не о том что какие-то знания в одном файле, а о том что эти знания сильно связаны в рамках какой то атомарной сущности (клас, функция, vue-компонет и т.д.). Из видео получается, если я оберну запрос в функцию и вынесу в отдельный файл, то я молодец и проблему решил, но по факту осталась та же ситуация. Что думаете?
@ТвойМаршрут
@ТвойМаршрут 3 года назад
Супер
@denysbondarenko777
@denysbondarenko777 2 года назад
"у уточки глаза кровью наливаются" - порвало, запомню принцип единой ответственности :)
@Eugene.g
@Eugene.g 3 года назад
Получился Ангуляр (и славно)
@alexnosov2066
@alexnosov2066 3 года назад
Уточка топ)
@ПавелВладимиров-ы9д
Утка просто топ DD
@usera8007
@usera8007 3 года назад
Пошел за глазными каплями для уточки
@pilyugin
@pilyugin 3 года назад
Почитал комментарии, не я один такой тупой😂 вот сам принцип SOLID имеет немного разное значение в плане реализации на бэке и на фронте (имею ввиду бэк - не js)... с бэком я разобрался, вроде как хорошо, кроме буквы L, но на фронте это не работает, тут своя атмосфера, как здесь провести инверсию зависимостей? Это компоненты внедряемые в шаблон или что это? Как наследоваться от компонента для его расширения, чтобы не нарушить принцип открыточти и закрытости? Типа создать новый компонент импортировав в него уже существующий компонент, накатить поверх новую локигу и прокинуть нужные данные в исходный компонент? Вот не могу сообразить, надеюсь по ходу курса все станет понятнее)))
@JJ6OUN
@JJ6OUN 3 года назад
Да, да. Вот тоже очень интересно оособенно об O, L, D послушать :)
@Cleannetcode
@Cleannetcode 3 года назад
Вроде бы принцип S не совсем об ответственности файликов, компонентов или классов. Оригинальная статья говорит об ответственности за именения, которые могут потребовать те или иные акторы. С интересом послушаю как вы опишите остальные принципы, может мое понимание не совсем верно)
@JavaScriptNinja
@JavaScriptNinja 3 года назад
У нас на эту тему дискуссия в канале была. Обратите внимание на формулировку в видео - мы слегка коснулись S. Я не давал определения, S в полной версии определения - совсем про другое и гораздо ближе к тому что вы сказали
@KEHU008
@KEHU008 3 года назад
Спасибо за видео и за курс очень круто) Вопрос, нужно ли отделять бизнес логику от компонента? (имеется в виду в отдельные модули). Таки вещи как расчет себестоимости, расчет суммы, или еще какие ни будь задачи, связанные с бизнес логикой? А в самом компоненте вызывать методы (функции), типа getSum, calcPrice и т.д.
@ЕвгенийЕмелин-п8к
@ЕвгенийЕмелин-п8к 3 года назад
если по хорошему, то бизнес-логика и фреймворк должны находиться в разных слоях. Причём бизнес-логика ничего не должна знать про фреймворк. Фреймворки с годами сменяют друг друга, либо сильно меняются их версии, а бизнес логика остаётся) И потом функции бизнес-логики могут использоваться в разных компонентах, так что логично их вынести в другой слой
@catranio
@catranio 3 года назад
А у меня остался вопрос на примере axios. Мы для грамотного получения данных делаем let data = await api.getSomthing(); А уже внутри функции getSomething() дергаем axios, или надо как то по другому изолировать получение данных?
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Да, именно так. В компоненте только просим данные
@Shadzen
@Shadzen 3 года назад
А есть такое же простое объяснение остальных букв из SOLID?
@JavaScriptNinja
@JavaScriptNinja 3 года назад
GRASP и SOLID будут детально объясняться в курсе
@ИгорьВасилевич-э4р
Присоединился, интересно о Солид
@amirych
@amirych 3 года назад
@@JavaScriptNinja Что за курс?
@Алексей-с3я8е
@Алексей-с3я8е 3 года назад
@@amirych ....ЭТОТ? (внезапно)
@deutschc9058
@deutschc9058 3 года назад
Стартую))
@alexanonymous5823
@alexanonymous5823 3 года назад
онь=)) спасибо за видос
@AvtandilSh
@AvtandilSh 3 года назад
В Nuxt есть опция fetch и asyncData для компонента страницы. Эти опции не нарушают принцып single responsibility?
@smith-dev
@smith-dev 3 года назад
так вы там можете дернуть api или диспатч vuex
@AvtandilSh
@AvtandilSh 3 года назад
@@smith-dev но там можно вызвать fetch или axios на прямую. В примерах так и показано. Принцип SR не нарушается?
@aazubakin
@aazubakin 3 года назад
Если конкретно на примере, vuemasters сделали, отдельный файл js и в нем импортировали библиотеку axios и создали инстанс объекта axios.create. Далее в этом же файле создали функцию, которая вызывает данный инстанс и эту функцию уже экспортируем для использования где нам нужно. Это верный подход, solid?
@mustapha_mond
@mustapha_mond 3 года назад
Мне кажется, это часть этого подхода, но хорошо бы иметь еще какой-то промежуточный модуль, который вызывает методы, может быть как-то обрабатывает пришедшие данные, и уже нужный вариант отдает в компонент Vue. Например, таким промежуточным слоем могут быть vuex: мы дергаем данные через actions, сохраняем их через mutations, а в компоненте уже getters отдаем нам непосредственно сами данные.
@jorgen5462
@jorgen5462 3 года назад
Если это не будет отягощать уточку, то можно ссылки и на англ. доку vue-3?
@DarkIllusoire
@DarkIllusoire 3 года назад
Мне кажется написать одно слово vue3 в адресной строке, гораздо быстрее, чем писать комент на ютубе
@alekssjeva951
@alekssjeva951 3 года назад
А мне вот всё же непонятно, зачем нужны все эти извращения с webpack, созданием бандлов, если можно просто подключить фреймворк статически в файл index.html, и писать всю логику в отдельном js-файле? Да, возможно для больших проектов это не катит, но я сужу по небольшим, где кастомная логика на JS обычно не больше 20-30 кб занимает.
@sergeypsiola176
@sergeypsiola176 3 года назад
А зачем тогда отдельный js файл? Надо пряв в хтмл тегом включать!
@xbsxbs22
@xbsxbs22 3 года назад
Забавно слышать про отделение БЛ от реализации в языке, где нет интерфейсов. Кроме этого, интересно узнать, что делать с БЛ, которая находится в условиях SQL запросов? Нахожусь в предвкушении жарких роликов на тему натягивания SOLID на JS. Здесь же каждая буква стреляет))
@daniilthegunner843
@daniilthegunner843 3 года назад
да ептель) что-нибудь надо записывать или нет в таком формате уроков? судя по тому, что из прошлых я ничего не запомнил, то нужно
@krkaa8663
@krkaa8663 3 года назад
Попробуй сделать как я. Просмотрел один раз. Потом второй раз, но с паузой на непонятных моментах, отдельно нагуглить, углубление в понимание термина в общем проделать, а в конце закрепить ещё одним просмотром. Удивительно, но в большинстве случаев хорошо откладывается в мозгах
@vladimirzaguliaev9857
@vladimirzaguliaev9857 3 года назад
Окей, Гугл. Игрушка уточка. Купить.
@irvicon
@irvicon 3 года назад
Vue JS / бесплатный курс --- только я ссылки не вижу? или уже потерли? спасибо / глаз замылился... почему то решил, что они должны быть в описании))
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Закрепленный комментарий не видите? :)
@АртемБястик
@АртемБястик 3 года назад
Немного не понял почему вынесение запросов в отдельный модуль порадует уточку. Ведь наш компонент все еще будет запрашивать данные(хоть и не напрямую, но все же будет) И отображать их.
@Илья-с1л6э
@Илья-с1л6э 3 года назад
вызов абстракного метода getMyPost это не одно и то же с axios.get('/my-posts') Да - компоненты вызывает getMyPost, но ему все равно как это работает внутри.
@stanislavoz5218
@stanislavoz5218 3 года назад
Возможно будет более понятно, если Ваш компонент возьму я. Вы меня не знаете. Я участвую в совершенно другом проекте. Вы не знаете логику моего проекта. Вы не знаете откуда и как конкретно я забираю данные. Обычно я не смог бы этого сделать. Если я смогу это сделать, значит архитектура более-менее. Одно дело поправить конфиг или в худшем случае файлы сервиса\контроллера e.t.c, другое поправить компонент целиком, что по сути означает написать его самому.
@volodymyr_muryn
@volodymyr_muryn 3 года назад
4:08 Призвали мурлока
@Yevhenii_7777
@Yevhenii_7777 3 года назад
Я правильно понял, это типа как в MVC разделение идёт? Для каждого компонента нужно делать отдельный файл, который отвечает за обмен данными?!
@violentiner
@violentiner 3 года назад
MVC это о разделении логики в целом, да.
@get-web
@get-web 3 года назад
MVVM
@АндрейСкрипко-с7р
@АндрейСкрипко-с7р 3 года назад
но как же так, отображение (Vue) - это не бизнес логика. А если вам тот же домен нужно будет перенести с вэба в мобилу?
@germanmalinovsky1719
@germanmalinovsky1719 3 года назад
Да, не бизнес-логика, а представление c логикой этого представления в первую очередь. Бизнес-логика работает с моделью и бизнес-правилами. И то, что назвали "реализация" в этом ролике это инфраструктура.
@kirintsev
@kirintsev 3 года назад
Пошли с уточкой читать доку. Спасибо )
@kusov4748
@kusov4748 3 года назад
4:07 НИВОЗМОЖНЯЯЯ ОРУ
@gritsienkooleg3447
@gritsienkooleg3447 2 года назад
Даа , как раз пришёл спрашивать о вынесении безнес логики, когда один компонент заполнился axios'ами и всеми возможными отображениями.. Так противно смотреть в такой код, трудно держать всё в голове ) Разделяй и влавствуй!
@artyom_ss
@artyom_ss 3 года назад
Поехали, из ждуниоров в мидлы!
@oleksiykurylyuk4696
@oleksiykurylyuk4696 2 года назад
клиентский код это и есть бизнес логика?
@evgeniypp
@evgeniypp 3 года назад
Теоретически, это, конечно, верно. Но, как и во всех курсах, что я видел, говорится "как правильно", но ничего не говорится о том "почему это правильно". "Нужно разделять бизнес-логику и её реализацию". А зачем? Нет ответа. Я пишу среднего размера сайт. Есть ТЗ, есть конкретный срок окончания. После того, как сайт будет готов, возможны какие-либо небольшие правки, но не более того. Вероятность того, что он будет модернизироваться или расширяться, стремится к нулю. Насколько актуально для меня тратить время на то, чтобы делать всё через инъекции, чтобы потом можно было всё переделать или масштабировать? Насколько я понимаю, есть несколько причин, чтобы разделять бизнес-логику и реализацию: 1) упростить каждый конкретный компонент (в ущерб усложнению архитектуры, стоит заметить); 2) добавить возможность заменить внедряемую реализацию на другую; 3) тестирование. Мой проект, во-первых, имхо, недостаточно сложный, чтобы запариваться с абстрагированием получения данных от их отображения. Во-вторых, менять тот же самый axios, например, на что-то другое точно не придется. В-третьих, тестов, malheureusement, не предвидится. Так стоит ли мне тратить время на это или нет? Понятно, что такие нюансы обсуждать с новичками затратно. У учителя математики в школе тоже нет времени объяснять ученику, зачем нужны косинусы и синусы, проще заставить заучить. В итоге все делают что-то, просто чтобы делать что-то. Пример: иммутабельность в React-Redux. 99%-ам пользователей она нафиг не сдалась. Но так правильно, так давайте писать вместо одной строки пять, чтобы было по канону. В конце небольшой философский вопрос) Кто хороший разработчик: кто пишет всегда хороший, универсальный и доступный код или тот, кто пытается максимально эффективно потратить человекочасы и, соответственно, деньги клиента?
@murchenko99
@murchenko99 3 года назад
Просто вынести отдельно файлик с апи запросамм не займет больше времени чем обычно, но зато когда тебе прийдётся вдруг один апи запрос поменять с /get/shop на /get_shop Тебе не прийдётся бегать по всему проекту изменять эту строку, а просто зайти в один файлик со всеми апишками и поменять там
@murchenko99
@murchenko99 3 года назад
По последнему вопросу нужно всегда держать золотую середину) не писать слишком плохо и не упарываться в идеальный код)
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Ответ очень простой. Если какая-то практика не ухудшает время на разработку (а разделение чего-то на два файла не ухудшает время на разработку) или ухудшает незначительно (условные 20%) - мы применяем ее безусловно Разделение бизнес-логики и транспорта -как раз такая практика. Более того (мы еще увидим это) в отдельных сценариях она ускоряет разработку. Почему? Потому что мы можем проверить что слой api работает так как нам надо до начала написания компонентов
@PSMercenary
@PSMercenary 3 года назад
"Вероятность того, что он будет модернизироваться или расширяться, стремится к нулю". Ты этого не знаешь. Меня учили не угадывать вероятность, а создавать гибкие системы и думать о других разработчиках. С обратным я сталкиваюсь часто, когда заложенная кем-то архитектура год-два назад не позволяет быстро реализовать новую фичу и приходиться думать куда и какой костыль вставить. А думать больно.
@AndriiKuftachov
@AndriiKuftachov 3 года назад
Тема сисек не раскрыта. В смысле, сервисов. Вот разве не стоит сделать как в Angular отдельный слой между компонентом и слоем получения (отправки) данных, где поместить логику приложения (не отображения)?
@JavaScriptNinja
@JavaScriptNinja 3 года назад
А видео не про слой сервисов вовсе :) Моя задача дать доступные (даже не абсолютно верные определения). А к слою сервисов мы еще вернемся и в том числе к вечному вопросу "где размещать логику приложения"
@SpiderCat934
@SpiderCat934 3 года назад
Почему же не использовать axios я не понял и что же использовать.
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Смотрите дальше :)
@andTutin
@andTutin 3 года назад
Всё что-ли ?
@JavaScriptNinja
@JavaScriptNinja 3 года назад
Почитайте вкладку "сообщество" канала. Отвлекли, продолжаем :)
Далее
skibidi army returns (skibidi toilet 77)
00:49
Просмотров 2,2 млн
#7 «Теория ограничений» - Vue.js
11:47
#13 Компоненты - Vue.js: концепции
1:07:35