#2 Реактивность - Vue.js: концепции

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ก.ย. 2024
  • Что мы вкладываем в понятие "реактивность"? И почему React не реактивен, а Vue.js реактивен
    А реактивен ли Angular? ;)
    Вопросы? Пожелания? Мысли о курсе? Присоединяйтесь к телеграм-каналу нашего сообщества t.me/vuejs_club
    ---
    Видео создано благодаря подписчикам проекта на нашем Patreon.
    Хотите получать контент на 3 месяца раньше остальных? Присоединяйтесь! / javascriptninja

ความคิดเห็น • 115

  • @TimurShemsedinov
    @TimurShemsedinov 3 ปีที่แล้ว +159

    Ссылку на этот курс я завтра же запостаю в свои каналы, очень полезно даже тем, кто на реакте или ангуляре пишет, для понимания полной картины.

    • @pluto2656
      @pluto2656 3 ปีที่แล้ว +14

      Вы с Ильёй лучшие из лучших

  • @andrejsleiskans4704
    @andrejsleiskans4704 3 ปีที่แล้ว +61

    По мне так очень правильно, что начинаешь с объяснения концепций. Просто показывать написания кода, без объяснения концепций, действительно тупиковый путь. Потом выходит что пишу то не знаю что! Спасибо тебе!

  • @AlexanderGrinvald
    @AlexanderGrinvald 3 ปีที่แล้ว +22

    Давно не встречал такого качественного контента по вью и особенно такого грамотного преподавателя, спасибо огромное.

  • @eurorock5912
    @eurorock5912 3 ปีที่แล้ว +14

    Эх, жаль, что Илья не создал ничего такого классного про Ангуляр!)) Спасибо, Илья за правильный подход в обучении, а не "сразу в бой"!!!

    • @ob1chyk
      @ob1chyk 3 ปีที่แล้ว +1

      100%. Тоже бы про ангуляр хотел)

    • @goga8204
      @goga8204 3 ปีที่แล้ว +1

      Он не осилит angular.

  • @jasonborn4373
    @jasonborn4373 ปีที่แล้ว

    Благодаря этому человеку я понял, что я задаю себе правильные вопросы, а в его курсе получаю на них ответы! Это Amazing! Спасибо!

  • @deutschc9058
    @deutschc9058 3 ปีที่แล้ว +5

    В картинках)) замечательная идея. Вы делаете большое дело.

  • @mihunt3r929
    @mihunt3r929 2 ปีที่แล้ว +1

    Огромное Вам спасибо за курс. В разы лучше объясняете чем большинство платных курсов

  • @БалаиМихеева
    @БалаиМихеева ปีที่แล้ว

    Я просто хочу сказать спасибо. Я НИКОГДА не могла учиться по видео, всегда для меня это мучение. Но ты делаешь этот визуальный контент так увлекательно и так понятно рассказываешь, что видео пролетают незаметно, и, главное, всё понятно. Еще лучше то, что я как раз хорошо умею работать с React, но сейчас по работе мне нужно научиться работать на Vue. И эти аналогии в твоих видео для меня - просто сказка. Спасибо тебе огромное!

  • @romandemin8601
    @romandemin8601 3 ปีที่แล้ว +8

    Спасибо за толковые разъяснения.

  • @user-ug1fk8ob3q
    @user-ug1fk8ob3q 3 ปีที่แล้ว +5

    Спасибо! Интересная информация, особенно новичкам, те кто не работал со старыми технологиями трудно оценить всю прелесть реактивности, фактически Vue и React можно сравнить как Rust и C++ в принципах управления памятью, где первый берёт эту задачу на себя, автоматизируя процесс, но жестко декларирующий условия, в то время как второй подразумевает ручное управление памятью.

    • @isfland
      @isfland 3 ปีที่แล้ว +2

      React отлично справляется с автоматической синхронизацией данных и интерфейса, просто через другой механизм.
      В данном контексте было бы уместней сравнить Vue с jQuery. В последней действительно необходимо вручную управлять DOM'ом, отсутствует синхронизация данных и представления.

  • @javascript-dzen
    @javascript-dzen 11 หลายเดือนก่อน +1

    Интересно с тобой подискутировать на эту тему.
    Ты говоришь: ‘реактивность - это способность обновить интерфейс при изменении данных’. При этом реакт не является реактивным потому что мы меняем данные через специальную функцию setState.
    С моей точки зрения важно не то как ты меняешь данные, а то от чего ты избавляешься: а избавляешься от необходимости вручную вызывать методы которые перерисовывают интерфейс.
    И ангуляр и реакт и вью добавляют как раз этот уровень абстракции почему мы их и юзаем.

  • @pepapigbro2938
    @pepapigbro2938 2 ปีที่แล้ว

    Это лучший канал из тех, что я встречал

  • @paddledabble6652
    @paddledabble6652 3 ปีที่แล้ว +2

    дуже дякую, матеріал супер корисний!

  • @shlxng1787
    @shlxng1787 3 ปีที่แล้ว +1

    Обьясняет как боженька просто))

  • @antonbarkalov6098
    @antonbarkalov6098 3 ปีที่แล้ว +1

    Поддержу комментом и лайком. Спасибо за труды Илья

  • @Vladimir-bz9tg
    @Vladimir-bz9tg 3 หลายเดือนก่อน

    Спасибо за Ваш труд

  • @DeniusZZR
    @DeniusZZR 2 ปีที่แล้ว

    Автор хороооош!!! Подача - диаманд. Очень! Молодец!

  • @yehorkarpenko6787
    @yehorkarpenko6787 2 ปีที่แล้ว

    Очень качественный контент, ты мастер объяснений !

  • @СергейРыжков-ч4е
    @СергейРыжков-ч4е 3 ปีที่แล้ว +1

    кратко и по делу. Спасибо.

  • @artemzlobin4054
    @artemzlobin4054 3 ปีที่แล้ว +1

    Первое что приходит в голову - производительность и непротиворечивость. Если на странице дофига данных, то эффективнее их в один заход перерендерить, а не каждый блочок по-отдельности рендерить.

  • @eugene5008
    @eugene5008 ปีที่แล้ว

    А нормально рассказываете, что так мало просмотров

  • @theoty-js
    @theoty-js 2 ปีที่แล้ว

    очень познавательно! Vue framework , frontend

  • @managerproject6729
    @managerproject6729 3 ปีที่แล้ว +1

    погружение началось)

  • @АнтонПетров-й8э
    @АнтонПетров-й8э 3 หลายเดือนก่อน

    В мире бекенда всё прекрасно! Пошли пацаны в бекенд! 😁😁

  • @la_lumiere7571
    @la_lumiere7571 3 ปีที่แล้ว

    Очень интересно, подача класс!

  • @EvgenichTalagaev
    @EvgenichTalagaev ปีที่แล้ว

    Спасибо за информацию.

  • @seredniy
    @seredniy 3 ปีที่แล้ว

    Молодец! Спасибо за труд!)

  • @iwannabekoshka
    @iwannabekoshka 3 ปีที่แล้ว +5

    Испытал наслаждение от того, что Vue сам по себе реактивный

  • @alexandrv7277
    @alexandrv7277 2 ปีที่แล้ว

    Большое спасибо!

  • @slknnk
    @slknnk 3 ปีที่แล้ว

    Спасибо. Очень доходчиво.

  • @jsb7239
    @jsb7239 3 ปีที่แล้ว

    Огонь 🔥 подача.

  • @esergey12
    @esergey12 3 ปีที่แล้ว +1

    Реактивность - способность фреймворка реагировать на изменения данных.

  • @alexanonymous5823
    @alexanonymous5823 3 ปีที่แล้ว

    спасибо за видео=)) лайк однозначно=))

  • @АлексейБобриков-п5р
    @АлексейБобриков-п5р 3 ปีที่แล้ว

    Есть одно но, нельзя присваивать напрямую например элемент массива (arr[1] = 2, реактивность не отработает). Т.е. нужно об этом тоже не забыть сказать. Т.к. не все может vue отследить, не потому что он плох, а потому что просто такая среда разработки

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว

      Нельзя во Vue2

    • @АлексейБобриков-п5р
      @АлексейБобриков-п5р 3 ปีที่แล้ว

      @@JavaScriptNinja Спасибо, обязательно попробую в 3 vue. Если правда, это вообще огонь!

  • @html_boss
    @html_boss 3 ปีที่แล้ว

    Лучший 🔥

  • @КонстантинМетелёв-ь7я
    @КонстантинМетелёв-ь7я 4 หลายเดือนก่อน

    super

  • @Sputnik134
    @Sputnik134 ปีที่แล้ว

    Спасибо!

  • @ИмяФамилия-э4ф7в
    @ИмяФамилия-э4ф7в 3 ปีที่แล้ว +1

    Илья из видео#0: "Плохо, когда программист может решать задачи как ему вздумается, это приводит к росту объёма специфического, "проектного", кода"
    Илья из видео #2: " Во Vue можно менять данные как угодно, и это круто".

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว

      Да, здесь нет противоречия, потому что возможность менять данные присваиваниями - конструктивная возможность языка. Вью просто "стоит в сторонке" не отсвечивая. Грубо говоря нам при изменении данных не надо думать что есть кто-то ещё (вью)

    • @ИмяФамилия-э4ф7в
      @ИмяФамилия-э4ф7в 3 ปีที่แล้ว

      @@JavaScriptNinja я о другом. Может просто прозвучало так, что в реакте - фу, надо всякий setState вызывать, а во Vue - круто, можно данные менять как угодно. И я указал на то, что это противоречит одной из задач, которую должен решать фреймворк (из видео #0): уменьшать количество специфичного кода, решая типичные задачи стандартными методами. Ведь сразу можно накидать десяток паттернов, как "правильно" менять данные во Vue.

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว

      @@ИмяФамилия-э4ф7в они будут того же уровня как и в реакте :) там тоже с десяток

  • @pavelviktorovich3976
    @pavelviktorovich3976 3 ปีที่แล้ว +5

    У меня просьба добавлять в сравнение ангуляр

    • @aleksandrmatyka3118
      @aleksandrmatyka3118 3 ปีที่แล้ว +1

      просто ангуляр сложнее добавлять в качестве примере с вью) было бы слишком затратно, да и возможно Илья плотно не работал с ангуляром

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว

      Илья достаточно плотно работал с Ангуляром во времена Ангуляр 4, с тех пор концептуально ничего не поменялось

    • @aleksandrmatyka3118
      @aleksandrmatyka3118 3 ปีที่แล้ว

      @@JavaScriptNinja Я так понял Илья работал со всеми фреймворками) приношу свои извинения)

  • @vrabosh
    @vrabosh หลายเดือนก่อน

    Мне почемуто всегда думалось, что реакт это оптимизированная работа с dom и различными обновлениями для рендеринга.
    Никогда не читал про реакт, но по названию почемуто так себе это представлял.

    • @astkh4381
      @astkh4381 หลายเดือนก่อน

      Ну так и есть

  • @dron9257
    @dron9257 ปีที่แล้ว

    В світі бекенду усе просто у них є код і він працює, усе історія закінчена. :)

  • @ВладиславБатькович-ф4с
    @ВладиславБатькович-ф4с 3 ปีที่แล้ว +1

    Подскажите, пожалуйста, где можно прочитать про механизм транспайлинга Proxy в Vue для старых браузеров?

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +2

      Его нету и не будет

  • @shutterradio
    @shutterradio 3 ปีที่แล้ว +2

    Супер! ну реакт теперь для меня мертв) Если раньше я себе думал "блин если закроют проект то можно будет свичнуться на реакт", то теперь я свичнусь в фирму где смогу спокойно писать на вью))

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +1

      Я не очень люблю такой радикализм :)

    • @shutterradio
      @shutterradio 3 ปีที่แล้ว +1

      @@JavaScriptNinja да, я просто в состоянии аффекта))

    • @goga8204
      @goga8204 3 ปีที่แล้ว

      @@olezhonnv3215 скорее умрешь ты, чем TS. TS - единственное в экосистеме js, что не стыдно использовать.

  • @heyjoe5920
    @heyjoe5920 3 ปีที่แล้ว +3

    Казалось бы, reactивность стоит ожидать от реакта. Там какая-то своя реактивность или ее там нет?

    • @grommaks
      @grommaks 3 ปีที่แล้ว +2

      Своя не реактивность, на этом канале можно 7уроков по реакт посмотреть, там Илья и его коллеги все рассказал, очень интересные уроки, рекомендую 🤓

    • @heyjoe5920
      @heyjoe5920 3 ปีที่แล้ว +3

      @@grommaks спасибо, обязательно посмотрю

    • @volodymyrklimov2560
      @volodymyrklimov2560 3 ปีที่แล้ว +3

      Нет, реакт не реактивный, в нем всегда необходимо явно самостоятельно вызывать изменение состояния)

    • @sovaz1997
      @sovaz1997 3 ปีที่แล้ว

      @@volodymyrklimov2560 в голом реакте если только

    • @egamegadriveaaa
      @egamegadriveaaa 3 ปีที่แล้ว +1

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

  • @ibrahimoglu
    @ibrahimoglu 2 ปีที่แล้ว

    👍

  • @ms77grz
    @ms77grz 2 ปีที่แล้ว +1

    Вау

  • @ИванКурочкин-с9м
    @ИванКурочкин-с9м 3 ปีที่แล้ว

    Сударь, а где третья часть? 4ая есть, 2ая есть

  • @volodymyrkorniienko8670
    @volodymyrkorniienko8670 3 ปีที่แล้ว +1

    Плюсы в сторону vue.js всегда звучат для меня скорее как большие минусы. Уж лучше только setState , чем компонент на vue.js , принимающий данные "в любые щели". Vue.js больше багов плодить помогает , чем задачи решать

    • @AlbertMaximov
      @AlbertMaximov 3 ปีที่แล้ว +1

      У любого компонента Vue можно задать типы его свойств и предсказуемо с ними работать

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว

      Понимаю вашу точку зрения, но не разделяю её. Баги Вью и Реакта отличны и различны :)

    • @goga8204
      @goga8204 3 ปีที่แล้ว

      Согласен. Вообще, экосистема js - это один сплошной баг, так как большинство библиотек написаны необразованными школьниками и вкатывальщиками. Из-за этого энтропия системы всегда выше, чем на любом другом языке.

  • @SilentCamp
    @SilentCamp 3 ปีที่แล้ว +1

    setState...... Так вот откуда эта дичь во Flutter.
    Реакт вообще не знаю, а вью знаю основы и понимаю удобство. Но начав изучать flutter, вообще не понял прикола, ну зачем во первых создавать динамический виджет, а потом еще обновлять его путем setState....
    Даже в каком нибудь c# и то просто и логично. В любое время просто пишешь text1.text = '12345'; И все обновляется, без каких либо дополнительных вызовов.

  • @dmitryvlasov3801
    @dmitryvlasov3801 3 ปีที่แล้ว +8

    Так react не реактивный?

    • @grommaks
      @grommaks 3 ปีที่แล้ว +2

      Получается что так) на этом канале плейлист по реакту имеет пояснение почему не реактивен

  • @amoschenko
    @amoschenko 3 ปีที่แล้ว

    Проблема обновления ui при изменении данных это проблема для приложения на js в браузере? Я правильно понял мысль ? Значит язык и среда выполнения прежде всего основные препятствия. На десктопных приложениях нет же таких проблем.

    • @eamarc
      @eamarc 3 ปีที่แล้ว

      Нет, не правильно понял - все не так. Проблем здесь никаких нет, есть особенности. В переводе на десктопные приложения будет выглядеть примерно так: можно получить такую реактивность из коробки пользуясь gui библиотеками (qt,gtk, wxwidgets), а можно вручную на голом winapi делать синхронизацию данных модели и ui компонента. Это примерно как коробки передач на автомобилях сравнивать.

    • @kalobyte
      @kalobyte 3 ปีที่แล้ว +1

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

  • @Artem-pe3sb
    @Artem-pe3sb 3 ปีที่แล้ว

    Забавно. Я в бэкэнде всегда под реактивностью понимал, что это неблокирующее потоки ядро, построенное на асинхронных callback- функциях. Тем самым позволяющее обрабатывать большое количество параллельных запросов малым количеством потоков (threads).
    Есть тут какая-то аналогия с реактивностью в UI? Или у меня неверное понимание?

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +1

      Я бы это назвал асинхронностью, а не реактивностью

    • @kalobyte
      @kalobyte 3 ปีที่แล้ว +1

      внезапно это не так
      что называют в вебе реактивностью - это как бы термин чисто вебовский
      скажем мигать 3мя светодиодами на контроллере с разной частотой и промежутками - это асинхронность
      используется системный таймер и от него делаются производные таймеры софтового уровня, которые и вызывают коллбеки с миганием светодиодов
      казалось бы очевидная вещь в мире системного софта, но в вебе это подается как очень крутая штука
      не так давно я нашел фреймворк на пхп, который называется реакт пхп
      случайно нашел, т.к. искал библиотеку пхп для работы с модбас (такой вот я извращенец)
      и она таки есть и есть пример использования ее совместно с реактом или каким-то подобным фреймворком
      оказывается на 7м пхп уже можно писать такие скрипты, которые запускаются из консоли и работают как постоянное приложение-демон
      а ведь пхп это одноразово исполняемый файл
      так вот, суть такова, что там тоже есть суперцикл бесконечный и в нем есть 2 функции как в яваскрипте, которые реализуют софтовые таймеры и вызывают коллбеки
      все это завернуто в красивые обертки и называется фреймворком
      я когда понял это, то у меня случился истерический хохот

  • @КонстантинРоман-н7п
    @КонстантинРоман-н7п 3 ปีที่แล้ว +3

    На скорости 1.5 смотреть можно

    • @kinoperdel
      @kinoperdel 3 ปีที่แล้ว

      под еду тож норм заходит

    • @oltools--2351
      @oltools--2351 3 ปีที่แล้ว

      Ну так у каждого свой темп речи ) Кого-то на 0.7 только можно слушать )))

  • @fish9370
    @fish9370 3 ปีที่แล้ว

    и как он это делает? как он мониторит модель?

  • @ДмитрийГусаров-к5о
    @ДмитрийГусаров-к5о 3 ปีที่แล้ว

    я тоже могу сделать такой мув через консоль в реакте с использованием valtio - это будет реактивность?

  • @АбылайЖалгасбай
    @АбылайЖалгасбай 3 ปีที่แล้ว

    нашел курс про react у Самурая
    теперь vue у Ниндзя
    остался angular)

  • @ЕгорЕгорович-д2т
    @ЕгорЕгорович-д2т 5 หลายเดือนก่อน

    А где же ниндзя код😮?

  • @Pruvet67
    @Pruvet67 2 ปีที่แล้ว

    Поставил минус, это не ответ на собеседовании. Почему не рассказали как это все работает под капотом? Я имею ввиду get и set во vue

    • @Pruvet67
      @Pruvet67 2 ปีที่แล้ว

      th-cam.com/video/u_akJ958SVY/w-d-xo.html - этот парень рассказал лучше

    • @JavaScriptNinja
      @JavaScriptNinja  2 ปีที่แล้ว +3

      про это есть отдельное видео в курсе th-cam.com/video/tt6VERYoBwE/w-d-xo.html
      потому что в начале я предпочитаю рассказывать "что", потом "зачем" и только потом "как это работает"

  • @violentiner
    @violentiner 3 ปีที่แล้ว

    лгтб стрелочка=)

  • @Andrew1a
    @Andrew1a 3 ปีที่แล้ว +2

    И тут я осознал МЕГАБАГ youtube .. Максимальное ускорение 2x для этих видео мало. Необходимо 3,75 -5,25

    • @ivomeadows
      @ivomeadows 2 ปีที่แล้ว

      ставь расширение video speed controller. спасает везде, а не только на ютубе

  • @neuzen
    @neuzen 3 ปีที่แล้ว

    3:23 ещё один курс для тех кто уже всё знает? Спасибо.

  • @СерегаВонг
    @СерегаВонг 3 ปีที่แล้ว +1

    как по мне бесполезная вещь какая-то, тем более можно самому в 2 строки реализовать
    MyReactiveComponentClass {
    get count() { return this.state.count; }
    set count(v) { this.setState({count: v}); }
    }
    по сути, просто деталь реализации, лично мне нет разницы вызывать функцию или просто присваивать значение

    • @astkh4381
      @astkh4381 หลายเดือนก่อน

      В реальном проекте так никто писать не будет. Реакт не является реактивной библиотекой в любом случае

  • @SamarNeural
    @SamarNeural 3 ปีที่แล้ว +1

    реакт не реактивный)

  • @self_antagonist
    @self_antagonist 3 ปีที่แล้ว +12

    за лгбт ручку отдельный лайк

  • @Ivan_Yakovlev1995
    @Ivan_Yakovlev1995 3 ปีที่แล้ว +1

    Как это реакт не реактивный? Ты когда данные через пропсы передаешь, всё прекрасно само меняется ,от главного компонента до самого вложенного. Также во vue ты не можешь обьявить эти данные абы где, к примеру при обьявление данных в конструкторе vue не повесит вотчер на них

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +1

      А вот так. Откуда берутся изменения данных в пропсах? Кто-то где-то наверху сделал setState :)
      Или ReactDOM.render передал новые пропсы - в любом случае это изменение инициировано ВЫЗОВОМ функции Реакта.
      Что же касается Вью - то что у нас есть возможность создавать нереактивные данные не отменяет реактивности фреймворка

    • @ДмитрийГоловенчик
      @ДмитрийГоловенчик 3 ปีที่แล้ว +2

      @@JavaScriptNinja
      Я так и не понял пример с преимуществами .
      чем
      data = newData
      лучше
      setState(newData)
      тем что в глубинах vue отрабатывает сеттер? такое себе

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +1

      @@ДмитрийГоловенчик тем что вам не надо вызывать какой-то метод. Вы (и что самое ценное - код, который возможно написали не вы) меняете поле - и вуаля, экран обновлен.
      В случае же с реактом если вы или код обновили данные, но не вызывали сет Стейт - все

    • @ДмитрийГоловенчик
      @ДмитрийГоловенчик 3 ปีที่แล้ว +1

      @@JavaScriptNinja ну данные и так и так нужно присваивать через равно или через метод. Я если честно не совсем понимаю что вы имеете ввиду, когда говорите что данные обновятся как-то отдельно от состояния, например кодом который написал кто-то другой. Я наверное не до конца понял. Но как я вижу, откуда бы не пришли данные, вам нужно будет или присвоить в data либо вызвать метод обновления стейта.
      Если не сложно, приведите пример или ссылку на код или доку, где можно посмотреть что data обновляется самостоятельно без прямого присваивания.

    • @JavaScriptNinja
      @JavaScriptNinja  3 ปีที่แล้ว +4

      @@ДмитрийГоловенчик присваивание - это конструкция языка, не фреймворка. setState - конструкция фреймворка. Как следствие любой код может работать с присваиванием, а с setState - только тот который в курсе о существовании react

  • @goga8204
    @goga8204 3 ปีที่แล้ว

    Какой же бред. Из тебя такой же backend'er как из домохозяйки сварщик. Да и что это за подача такая? Как можно говорить об элементарщине с таким пафосом?