Vue 3 (Composition API) и TypeScript - Фундаментальный курс 2025

Поделиться
HTML-код
  • Опубликовано: 31 янв 2025

Комментарии • 81

  • @nasipsalmakhunov4375
    @nasipsalmakhunov4375 Год назад +10

    Круто, спасибо! Жду еще проектов Vue 3 (Composition API) и TypeScript :D

  • @Chudikfilosof
    @Chudikfilosof Год назад +6

    Очень интересно было делать такой проект. Спасибо за комментарии которые даешь дополнительно, объясняя как работает TS и в принципе логику происходящего, а то мне как новичку пока сложно за всем уследить кто за что отвечает. Очень приятно что не остановился на готовом работающем коде, а показал как можно рефакторить его - это оооочень ценно! То что, как ты сказал "тупил" - в этом есть особая прелесть - показываешь что ты это делаешь в режиме реального времени и ты реальный человек который рассуждает. Павел - ты супер! 🔥

  • @alexeymatveev9031
    @alexeymatveev9031 9 месяцев назад +1

    Это просто вау. Спасибо огромное. Буду ждать других видео.

  • @djbeatlike
    @djbeatlike Год назад

    Отличный ролик и пример для объяснения. За час базу подтянул, спасибо!

  • @fuad2069
    @fuad2069 Год назад +2

    Очень крутой канал, огромное вам спасибо) Желаю удачи с развитием канала!!!

  • @sergeyf4256
    @sergeyf4256 Год назад +2

    Очень крутой контент, подписался. Смог сделать тестовое на vue, хотя не разу его в глаза не видел, но работал на реакте и ангуляре. Не бросай делать ролики, очень хорошо объясняешь.
    Ps немного напрягает мультяшный голос но со временем привык)

  • @aweb_21
    @aweb_21 Год назад +1

    Вот это интересно! Благодарочка, лайк и подписка!
    Ждем больше контента composition api+ts

  • @Ctrl_C.Ctrl_V
    @Ctrl_C.Ctrl_V Год назад

    Спасибо, очень информативное видео! Не останавливайся, у тебя круто получается !)

  • @mysoul1632
    @mysoul1632 Год назад +2

    Топовый курс, продолжай в том же духе, курсы такого уровня на vue еще не встречал, буду следить за новыми видосами, хотелось бы побольше про vue + composition API + Ts, было бы прикольно посмотреть какой нибудь проект в лайв режиме

    • @mysoul1632
      @mysoul1632 Год назад +1

      Или вообще про архитектуру приложений на Vue

    • @mysoul1632
      @mysoul1632 Год назад +1

      Было бы также интересно посмотреть урок про VueX + TypeScript

    • @СергейБобков-б7э
      @СергейБобков-б7э Год назад

      @@mysoul1632 new

  • @Vse-po-Faktu
    @Vse-po-Faktu 4 месяца назад

    Очень классное видео! С комментариями и отличные темы поднимаются.
    Так же, считаю, что оно для тех, кто знает JS и уже разбирал основы VUE и TS. С нуля будет сложно понять о чем речь (сугубо мое мнение) .
    Спасибо 👍

  • @Vladislav1449
    @Vladislav1449 Год назад

    Спасибо большое за такой контент (vue+ts). Очень не хватает видео на данную связку. Жду новых видео!

  • @mr_Fr0xman
    @mr_Fr0xman Год назад

    Шикарная практика! Прошёл на одном дыхании! Не заметил, как время пролетело. В одном видео база, которые многие умудряются растягивать на 20 часов. Топ!

  • @БравлПолковник
    @БравлПолковник Год назад

    Спасибо большое за практику. Очень помогла 🔥🔥🔥
    У кого в конце видео появилась проблема с повторяющимися буквами в ошибках, добавьте return после showNotification():
    window.addEventListener('keydown', ({ key }) => {
    if( isWin.value || isLose.value ) {
    return
    }
    if(letters.value.includes(key)){
    showNotification()
    return
    }

  • @ya_aan
    @ya_aan Год назад +3

    Ждем видео со скрипт setup и подробное объяснение всех действий) И вместо маковых данных предлагаю создать фейковую БД, либо взять какую нибудь апишку

  • @ValiantsinYushkevich
    @ValiantsinYushkevich Год назад +20

    Пара замечаний по ролику
    1. ключ для элементов списка не надо использовать индекс, это прокатывает но это порочная практика для крупных списков или компонентов где несколько динамических списков. Приемлемым тут было формировать ключ по комбинации символ + индекс
    2. проверку символа к регулярке надо выносить в отдельную функцию и вызывать внутри проверки условия if, иначе для каждого раза проверки она пересоздается и сборщик мусора вынужден убивать созданную для прошлой проверки функцию. После рефакторинга применил более удачное решение.
    3. вычисления внутри шаблона делать не желательно, применять тернарники в том числе, если шаблон будет перерисовываться по любым основаниям все эти вычисления будут пересчитаны, это не производительно, поэтому всем им место в компьюетед свойствах
    4. при импортах компонентов лучше использовать абсолютные пути, начинающиеся с @
    5. Выносить функционал как показал автор надо только в 2 случаях, если он используется в разных местах приложения, или размер компонента перевалил за золотой стандарт 300 строк, выносить абы выносить не надо. Достаточно сгрупировать по принципу выполняемой функциональности. Иначе снижается читаемость, приходится проваливаться в use импорты чтобы понять что они делают и соответственно что делает компонент с их участием.
    За применение тайпскрипта автору респект

    • @tatianovnafrutti8982
      @tatianovnafrutti8982 Год назад +5

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

    • @СтепанПалий-д9ж
      @СтепанПалий-д9ж Год назад +1

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

    • @ValiantsinYushkevich
      @ValiantsinYushkevich Год назад

      @@tatianovnafrutti8982 привет, напиши электронную почту свою или телегу

  • @Mr_Enotkin
    @Mr_Enotkin Год назад +5

    Сначала несколько напрягал измененный голос - ну не серьезно как-то! :) Но содержимое все перевешивает! Я прям крайне удивлен. Наконец кто-то смог вырваться из проклятья TODO-листа и сделать что-то нормальное, и креативное! Ну сложность порадовала - не совсем для детского сада. В дальнейшем хотелось бы увидеть постепенное возрастание сложности примеров, пусть это и будет растягиваться на несколько таких видео. А то в русскоязычном сегменте на composition прям совсем голяк.

  • @tuku_mann
    @tuku_mann Год назад

    Супер! Спасибо за интересный контент)

  • @Chudikfilosof
    @Chudikfilosof Год назад +2

    В самом конце видео после рефакторинга уведомления о повторном символе, в App.vue, после showNotification() нужен return. А то без этого повторные символы всё равно можно будет вводить

  • @АлександрДеревков-д2с

    Спасибо! Очень полезное видео!

  • @tatianovnafrutti8982
    @tatianovnafrutti8982 Год назад +1

    Крутой контент спасибо! Изменение голоса правда все портит но всеж.. ) А еще вопрос такой: зачем в ref брать переменную обычную? ту же "василий", почему просто нельзя её задать без реф? и вот такие моменты.. Мне казалось рефы только для ДОМ элементов...

  • @kudkuda9376
    @kudkuda9376 Год назад

    Круто! Спасибо

  • @protonys
    @protonys Год назад +1

    Классно, а чем модулировали голос? :) "Введу букву АШ (ш)" - это круто

  • @Мажорвчате
    @Мажорвчате Год назад

    Thank you very much!

  • @ural-site
    @ural-site 9 месяцев назад

    Урок бомбический, покройте это код тестами или может есть уже уроки про тесты?

  • @ВладимирНетот
    @ВладимирНетот Год назад +1

    Давайте похоливарим. А насколько это правильно управлять методами дочернего компонента извне? Я, конечно, тоже так делал пару раз, но мне лично кажется, что этого стоит избегать при возможности. Что думаете?

  • @johnloye4465
    @johnloye4465 Год назад

    спасибо бро круто)

  • @mgfck
    @mgfck  Год назад +3

    Верстка лежит здесь (папка layout)
    github.com/pavellbor/hangman-vue-ts

  • @romanmed9035
    @romanmed9035 8 месяцев назад

    жаль что при таком голосе на полуторной скорости не посмотреть. и вопрос к автору. а вот подобное но не с vue файлами, а если js и в них старым способом писать активную часть а шаблон в html файлах в теге скрипт?

  • @aktotuttttt
    @aktotuttttt Год назад

    спасибо за видео
    жду еще крутых работ давно небыло
    подскажи если возможно как ты задеплоил на версел? у меня закрашилось при деплое (((

  • @IvanIsayev
    @IvanIsayev 6 месяцев назад

    Еще бы голос не коверкался - вообще хорошо бы было :) А так супер! продолжай!

  • @parmetra
    @parmetra 6 месяцев назад

    Спасибо за ролик! Будут ли ещё новые видео?

    • @mgfck
      @mgfck  6 месяцев назад +1

      @@parmetra да, совсем скоро вернусь

    • @parmetra
      @parmetra 6 месяцев назад

      @@mgfck ура-а! Спасибо! У вас отличный контент по Vue.

  • @АртемАртеменконезабывайвыходит

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

    • @ValiantsinYushkevich
      @ValiantsinYushkevich Год назад +1

      Мультиязычность i18n, мультиселекты не понятный вопрос, мультиформы на вью делаются изи, несколько компонентов внутри формы показываем каждый из них в зависимости от текущего шага, сама форма помнит все состояние. Авторизация , при загрузке приложения проверил если пользователь не авторизован перенаправил на логин, авторизация стандратно запросами на сервер и получением токена. Роли делаются на вью гвардах, самый популярный beforeEach перед переходом на страницу чекает допуски пользователя и мета инфу роута куда собрались ломится если совпадают пропускает переход если не редирект.

    • @tatianovnafrutti8982
      @tatianovnafrutti8982 Год назад

      @@ValiantsinYushkevich Спасибо! Круто

  • @BuddaKun
    @BuddaKun 7 месяцев назад

    Я не специалист, но разве не через emits прокидывать надо? Разве родитель должен иметь доступ к дочерним элементам?

  • @redsm0ke19
    @redsm0ke19 Год назад

    Спасибо за видео, все круто и понятно. А какой шрифт вы используете в редакторе кода ?

    • @mgfck
      @mgfck  Год назад +1

      Привет! Тема встроенная: Dark Modern. Шрифт по умолчанию.

  • @YulVilaya
    @YulVilaya Год назад

    делаю с вами, но везде краснота. подчеркивает даже import {ref} from 'vue' (Cannot find module 'vue'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option)

  • @YellowPanamka
    @YellowPanamka Год назад

    Прикольный проект, спасибо, подскажите сколько вы занимаетесь разработкой уже? Довольно быстро задачи решаете.

    • @mgfck
      @mgfck  Год назад +1

      3 года (1 год на Vue)

    • @boycovclub
      @boycovclub Год назад

      @@mgfck вы молодец) код хорош) (о себе 3 года на nuxt 2). На composition свои приложения пишу схожим образом

  • @phat80
    @phat80 Год назад

    Интересно было бы узнать, почему Vue так и не одолел React по популярности. Помню одно время ему пророчили первое место во фронте. Даже говорили, что с выходом 3й версии он порвет React. Но воз и ныне там. Даже относительно новые библиотеки, типа Svelte, отвоевывают свою долю. А Vue, такое впечатление, только сдает позиции. В чем проблема?

  • @СтепанПалий-д9ж
    @СтепанПалий-д9ж Год назад +1

    давай ещё че нить. по Nuxt, к примеру

  • @ДмитрийВяткин-и3р

    Вместо index === [...].length - 1, можно использовать index === [...].lastIndex

  • @АлександрДеревков-д2с

    Было бы круто увиделть материал по вебсокетам на накст 3 с обьяснениями
    На русскоязычном пространстве ютуба днём с огнём не сыщешь такого материала
    Заранее спасибо!

    • @ValiantsinYushkevich
      @ValiantsinYushkevich Год назад

      Там особо нечего объяснять, создал экземпляр сокета по адресу, подписался на события, ловишь их и как то реагируешь на фронте

  • @YulVilaya
    @YulVilaya Год назад

    по какой - то причине не вводится 1 буква, интересно почему?

  • @KimarTV
    @KimarTV Год назад

    Вот такая ошибка
    error 'defineProps' is not defined
    Почему у вас без import {defineProps} from "vue"; всё работает?

    • @ZaurmagRu
      @ZaurmagRu Год назад

      Импортировать defineProps не обязательно, ровно как и defineEmits. Vue делает это сам под капотом. Чтобы не было ошибки надо ввести комментариий выше вызова, который отключает это предупреждение. Уже не помню точно, но Webstorm например автоматом вставляет.

    • @KimarTV
      @KimarTV Год назад

      @@ZaurmagRu Не понял какой комментарий? У меня не Webstorm ругается. А красный экран в браузере

    • @ZaurmagRu
      @ZaurmagRu Год назад

      @@KimarTV Странно, что в браузере ошибка. По идее не должно быть...

  • @МихаилБакурский
    @МихаилБакурский Год назад +1

    Классно все, понятно, но голос не очень, сбивает с толку немного

  • @vipdeveloper
    @vipdeveloper 10 месяцев назад

    Как ты сделал такой голос?

  • @ЖеняКоленкин-е7п
    @ЖеняКоленкин-е7п 9 месяцев назад

    а баг с тем, что ТС ругается, вернулся в конце видео) не вылечили)

  • @виртуоз_ру
    @виртуоз_ру Год назад

    Благодарю. Подписался.

  • @webgeekstudio975
    @webgeekstudio975 6 месяцев назад

    Все супер! Но зачем голос искажать?

  • @ВладимирНетот
    @ВладимирНетот Год назад +1

    зачем нам correctLetters, если такую же проверку можно было сделать и просто с letters? Лишее computed свойство

    • @Ctrl_C.Ctrl_V
      @Ctrl_C.Ctrl_V Год назад

      Да, можно было. correctLetters используется просто для того чтобы не передавать весь массив, а передать уже отфильтрованный, не более

    • @ВладимирНетот
      @ВладимирНетот Год назад

      @@Ctrl_C.Ctrl_V а в этом же нет смысла. Массив все равно передается по ссылке. А вот лишняя переменная, ещё и вычисляемая, в данном случае избыточна :)

    • @Ctrl_C.Ctrl_V
      @Ctrl_C.Ctrl_V Год назад

      Да всё верно, я и не спорю) Ну мб автор увидит и ответит зачем так сделал))@@ВладимирНетот

  • @residenttwitch1234
    @residenttwitch1234 Год назад

    А VueX будет ?

  • @---Maksim---
    @---Maksim--- Год назад

    Тащить ради 1 урла целую библиотеку не стило, Fetch API более чем достаточного для этого. Win и Lose не стоило тащить в хук, это отдельная часть логики, которая просто использует экспортируемые переменные из хука.

  • @doorin_store
    @doorin_store 12 дней назад

    А что с голосом???

    • @mgfck
      @mgfck  11 дней назад

      Посадил

  • @andreigovorukhin
    @andreigovorukhin Год назад

    Ну какой вайт? вит - ну елки палки

  • @ВладимирНетот
    @ВладимирНетот Год назад

    буква "ш" это у нас вообще-то "ша", а не "аш" 🙃😉

  • @crazymoney2676
    @crazymoney2676 Год назад +1

    Зря голос изменил, дизлайк , не возможно слушать ушами...

  • @sergy9119
    @sergy9119 9 месяцев назад

    А у меня опять какое-то проклятье началось: сразу после выноса GameHeader в отдельный компонент в VSCode ошибка висит:
    Не удалось найти файл объявления модуля "./components/GameHeader.vue". "d:/dev/viselnik/src/components/GameHeader.vue" имеет неявный тип "any".ts(7016)
    У всех все так легко и просто на видео получается, а в жизни сидишь до 3 часов ночи и не понимаешь, что делать надо, и ни гугл, ни чатЖПТ не помогают😄 как исправить-то?