Настраиваем Vuex. Централизованное хранилище. Spring Boot REST

  Рет қаралды 9,773

letsCode

letsCode

Күн бұрын

Пікірлер
@АлександрБондарев-ъ7ф
@АлександрБондарев-ъ7ф 3 жыл бұрын
Спасибо за труд. Видео как всегда огонь. Мозг закипел от попытки понять. что мы тут делаем, но это, вероятно, из-за того, что меня отвлекали.
@vladsoldatenko8561
@vladsoldatenko8561 5 жыл бұрын
Спасибо за годные уроки, они достойны сотни тысяч лайков. Правда, из-за того, что я знаю JavaScript чуть менее чем "вообще ни разу не знаю"(я имею ввиду что только-только начал разбираться с JS) , Vue.js , а также то, что происходит на видео, немного сбивают с хода мысли . Но всё же, спасибо!
@alexeysharandin7364
@alexeysharandin7364 5 жыл бұрын
Уроки по новым хипстеровским технологиям, это боль :) Модно, круто, но я 2е видео матом ругаюсь и нахожу в своих скриптах косяк за косяком. Спасибо Андрей!
@armantulendi7320
@armantulendi7320 3 жыл бұрын
вы огромный трудолюбец))
@YuretsUA
@YuretsUA 4 жыл бұрын
В начале видео думал что это, а главное зачем, но затем, когда вкурил как это работает пересмотрел свой проект, особенно когда один и тот-же объект по несколько этажей между компонентами пробрасывается прикрутил Vuex, действительно удобно обращаться к одному хранилищу. Насчет вычисляемых свойств (sortedMessages) как по мне перебор , гораздо лучше сортировку и фильтрацию делать уже в компоненте (К примеру сортировка или фильтры), но кому как удобнее.
@letsCodeDru
@letsCodeDru 4 жыл бұрын
Ну надо же было показать, как геттеры использовать можно
@borismatashin5891
@borismatashin5891 4 жыл бұрын
Dru, лучший)
@IvanIvanov-oi5nx
@IvanIvanov-oi5nx 6 жыл бұрын
С наступившим! Спасибо огромное, полезно, хоть слету и сложновато. P.s.: В начале видео оговорился - мы ведь пишем sarafan ;)
@VASY1PUPKIN2
@VASY1PUPKIN2 6 жыл бұрын
Андрей С новы Годом Тебя!!! Желаем тебе успехов в жизни, творческого вдохновение тебе и твоему каналу, и главное здоровье , что бы его хватало на все, что ты задумал!!
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Ох, спасибо :) пока что времени не хватает. Но здоровье тоже важно, да :)
@AnnaSmirnova1
@AnnaSmirnova1 5 жыл бұрын
Спасибо!!! Время прохождения видео 29.12 чётенько)
@Zabavnoo
@Zabavnoo 6 жыл бұрын
С Новым годом. Очень годные туториалы
@lumea-arboris
@lumea-arboris 6 жыл бұрын
ОЧЕНЬ КРУТО!!!! очень много инфы, блин на бэкенде еще кучу всего изучать приходится, еще и фронт сверху, вообще супер! По поводу дополенений, какие можно было б накрутить, правда к этому плейлисту не очень наверное подходит, но думаю вот это было б интересно: 0) Надо проверочку еще сделать, на разных пользователей, чтобы не могли удалять чужие сообщения или их редактировать, ну тут можно разными путями пойти, в принципе не сильно важно и возможно не очень интересные пункты как следующие. 1) Писать сообщения не в базу данных, а в rabbitmq или kafka 2) Можно добавить поиск сообщений, подключив elasticsearch или solr 3) Было бы круто, чтобы показал как залить в интернет проект , я примерно знаю как залить бэкенд проект, а вот фронт даже не представляю как пока что. Вот бесплатный сайт например www.heroku.com/ 500 мб дают свободного пространства, бесплатный постгрес, ну и плюс еще всякие технологий, единственный минус, за 24 часа работы, 6 часов по-моему проект не будет доступен, но это не страшно, учебный же проект и если на проект никто не заходит в течении 30 минут, железо переходит в спящий режим, а когда поступает запрос, то сервак заново стратуется)
@semionrutshtein1745
@semionrutshtein1745 3 жыл бұрын
Great project
@shtan5583
@shtan5583 6 жыл бұрын
С наступающим Новым Годом, Дрю! Спасибо за туториалы
@dmitrysomsin2117
@dmitrysomsin2117 4 жыл бұрын
Спасибо за урок
@victormog
@victormog 6 жыл бұрын
С Новым годом! И спасибо!!!
@ekhodzitsky
@ekhodzitsky 6 жыл бұрын
Андрей! С новым годом! Спасибо за канал, на котором все сложное становится простым. Или хотя бы проще ))
@Name-mm2kx
@Name-mm2kx 6 жыл бұрын
Спасибо за подарок, с наступающим!)
@МихайлоЄвтушенко-е2ф
@МихайлоЄвтушенко-е2ф 6 жыл бұрын
С новым годом, спасибо тебе за твой труд!!! Надеюсь у будущем видео не станут платными)))
@ihardubadzelau6497
@ihardubadzelau6497 6 жыл бұрын
Спасибо Андрей за твою работу! Это лучшее изложение материала, которое я видел! Есть просьба, можно ли в конце серии по этому проекту, сделать отдельное видео по изменению этого проекта с development на production? а также на примере показать как автоматически настраивается deploy на idea. И т.к. компании которые предоставляют java хостинг - единицы, было бы совсем шикарно, если сделать видео отдельное, как мы берем linux vps сервер и на чистой системе debian или ubuntu развертываем наш проект, показав установку javasdk, tomcat, postgresSQL и вообще что еще нужно для данного проекта в минимальном наборе.
@RostyslavShynlov
@RostyslavShynlov 5 жыл бұрын
Ты просто замечателен
@daurenaldabergenov5984
@daurenaldabergenov5984 4 жыл бұрын
спасибо за видео!
@СтаниславБарышников-у6е
@СтаниславБарышников-у6е 6 жыл бұрын
Спасибо за урок!
@anu8is930
@anu8is930 6 жыл бұрын
Спасибо тебе! Ты очень крутой и очень вдохновляешь лично меня на изучение Java. С нетерпением жду новых видео. Кстати, о чем планируешь еще записывать в будущем?
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Много о чем, всего не перечислить ;)
@anu8is930
@anu8is930 6 жыл бұрын
letsCode жду с нетерпением))) надеюсь будет по спринг бут ещё что-то крутое)))
@tmdan91
@tmdan91 5 жыл бұрын
Спасибо!
@ПавелПавлуха-3кцпш
@ПавелПавлуха-3кцпш 3 жыл бұрын
Подозреваю, что вопрос в пустоту, но: почему в App.vue в операторе switch мы теперь не пытаемся учитывать состояние гонки, как в прошлом видео? Поддержка мутаций во vuex сделает это за нас?
@aleksplats
@aleksplats 5 жыл бұрын
С настройкой babel под вебпак как раз сегодня мучился. Включая муки с включением в дев сервер локальных шрифтов и фонтов для матерал. Babel в итоге включается, как плагин и не нужно импортить полифиллы. Создается под него файл конфиги .babelrc. Пока я этого не сделал, в моем проекте постоянно как раз валился async
@МихаилМалкин-п2ю
@МихаилМалкин-п2ю 4 жыл бұрын
При редактировании записи возникает ошибка Duplicate keys detected - она возникает из-за двух вызовов - addMessageMutation и updateMessageMutation. При этом данные там приходят разные - в одной есть дата (update), а в другой нет (add)... Видимо что-то не так настроено в websocket?
@user-pro100rik
@user-pro100rik 4 жыл бұрын
@letsCode, спасибо за урок. Вопрос касаемо мутаций. Если мы напишем updateUser(state, data) {state.user = data;} , то это будет не иммутабельно, верно? А чтобы было иммутабельно, следует делать updateUser(state, data) { state.user = {...state.user, data};} ? Как проверить что 1-й вариант плох? Vue\Vuex никак не ругаются
@antihype3450
@antihype3450 5 жыл бұрын
[Vue warn]: Duplicate keys detected: '52'. This may cause an update error. Если у кого то такая ошибка вылезает то поменяйте
@ДмитрийРоманчук-ч4т
@ДмитрийРоманчук-ч4т 5 жыл бұрын
Андрей, спасибо за прекрасный курс, я заметил чем дальше, тем больше js используется, какой js используется для разработки приложений на Спринге? как на счет Ангуляра или Реакта? или это больше компетенция front-end разработчика?
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Чем vue не устраивает?
@alexandrguravskiy9985
@alexandrguravskiy9985 5 жыл бұрын
что то у меня при удалении в середине удаляет два елемента - я так написал мне помогло let mas = state.messages mas.splice(removeIndex, 1) state.messages.slice(0, mas.length, mas) и при добавлении нужна проверка что бы не дублировало if (index === -1) { state.messages = [ ...state.messages, message ] а как вы решили проблему?
@МихаилШарашин-ъ2ъ
@МихаилШарашин-ъ2ъ 5 жыл бұрын
Очень круто, спасибо за видео! Возник вопрос, зачем в Actions вызывать соответствующие мутации, если они вызываются через вебсокет?
@gamerecords_site
@gamerecords_site 3 жыл бұрын
Интересно как бы выглядел этот проект с нынешними технологиями Spring + Vue3
@ОлесяЛазарева-ж4и
@ОлесяЛазарева-ж4и 5 жыл бұрын
Такую запись: if (deletionIndex > -1) { state.messages = [ ...state.messages.slice(0, deletionIndex), ...state.messages.slice(deletionIndex + 1) ]; } можно заменить на более красивую с помощью метода splice if (deletionIndex > -1) { state.messages = [ ...state.messages.splice(deletionIndex, 1) ]; }
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Неееееет. Стоооой!!!! Splice модифицирует изначальную коллекцию, это даёт побочные эффекты. Можно очень странные баги поймать, которые хрен поймёшь откуда идут
@ОлесяЛазарева-ж4и
@ОлесяЛазарева-ж4и 5 жыл бұрын
@@letsCodeDru дублирование кода - это плохая практика. Не надо так делать, за это бьют по рукам клавиатурой. Если нужно скопировать первоначальную коллекцию, не изменяя текущую, в начале положи ее в переменную с помощью concat() без параметров. Если в concat() мы ничего не передали, то он просто копирует массив, возвращая новую коллекцию. if (deletionIndex > -1) { let newArr = ...state.messages.concat(); state.messages = [ newArr.messages.splice(deletionIndex, 1) ]; } Может быть я в Java полный ноль, но в Javascript мне такие вещи хорошо бросаются в глаза, т.к. не первый год на нем пишу.
@lumea-arboris
@lumea-arboris 5 жыл бұрын
@@ОлесяЛазарева-ж4и ну ты и наехала конечно, "бьют клавиатурой по рукам", это же обучающее видео, а не продакшн, тем более я думаю @dru понимает об этом) и тем более во время разработки - бывает дублирование кода, после разработки - делается рефакторинг. И вообще где тут дублирование кода? ОМГ
@ОлесяЛазарева-ж4и
@ОлесяЛазарева-ж4и 5 жыл бұрын
@@@lumea-arborisну вот такая я уж злобная женщина)) работа тимлидом накладывает свой отпечаток. И не ради того, чтобы Андрея побольнее клюнуть, или самоутвердиться за чей-то счет - просто уже наболело, ё-моё (( Ребята на ютубе видюшек насмотрятся, а потом на работе в боевой проект это тащат. И чтобы переучить сотрудника, у тимлида уходит очень много времени и сил.
@r199971
@r199971 6 жыл бұрын
Расскажи про jwt !!!
@yevheniidubinin8362
@yevheniidubinin8362 4 жыл бұрын
как лучше сделать приложение (опросный лист) которое после отправки сообщения (ответа на текущий вопрос) вернет новый вопрос с вариантами ответа, можно ли как-то создать канал вебсекета для текущей сессии пользователя? или тут вообще можно без вебсекитов обойтись?
@DanMiller777
@DanMiller777 5 жыл бұрын
жЫЫЫр!!!
@МаратПавлович
@МаратПавлович 5 жыл бұрын
Спасибо за труды!!! Возник вопрос по поводу мутаций, обязательно ли декомпозировать массив чтобы обновить/добавить элемент, или можно безопасно использовать Vue.set()? На просторах пишут, что обновлять массив можно и методами splice, push из списка vuejs.org/v2/guide/list.html#Array-Change-Detection. Все варианты вроде работают, есть ли принципиальный выигрыш в использовании декомпозиции?
@letsCodeDru
@letsCodeDru 5 жыл бұрын
Можно, но более канонично через создание нового. Весь js мир дружно чешет в сторону иммутабельности, т.к. это безопасней
@АндрейЗахаров-я8б
@АндрейЗахаров-я8б 6 жыл бұрын
А когда мы будем делать csrf?
@АлександрВелекий
@АлександрВелекий 6 жыл бұрын
Спасибо за видео! А можешь сделать видео с настройкой кеширования?
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Могу. Сделаю. По срокам не знаю когда
@АлександрВелекий
@АлександрВелекий 6 жыл бұрын
@@letsCodeDru , а может подскажешь как исправить. Не получилось настроить кэширование. Пишет, что необходимо серелизовать PersistenceExceptionTranslationInterceptor.
@ekhodzitsky
@ekhodzitsky 6 жыл бұрын
Андрей! Докер есть в планах? Например на основе статьи spring.io/guides/gs/spring-boot-docker/ записать что-то + добавить своих сакральных знаний ) Завернуть sweater например в него.
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Планируется. По срокам не скажу)
@alimirzahan4488
@alimirzahan4488 2 жыл бұрын
Всем привет! Поправьте если туплю, скажу след. Если у вас: 1) duplicated keys error 2) удаляется/добавляется больше чем 1 3) Vuex devtools пишет по два Mutation за нажатие то закомментируйте все MessageMutation-ы в App.vue в switch-е, так handler не будет работать и отрабатывать будет только messageApi
@karfogengroup807
@karfogengroup807 2 жыл бұрын
Если ошибка Uncaught TypeError: Object(...) is not a function Надо добавить версию как у автора yarn add vuex@^3.0.1
@borymskyi
@borymskyi 2 жыл бұрын
долго игрался, хотел использовать новую версию, но ничего не вышло... похоже vue 3 не контачит с ласт vuex... пришлось перейти на старую версию 3.0.1
@mizantropoff
@mizantropoff 4 ай бұрын
Давайте еще версиями себя ограничивать. Я не пойму, тут парограммисты, те кто хочет быть программистом, или хрень какая то сидит? С таким подходом эти видео скоро станут совсем неактуальны. В основе "обучения" - сплошной копипаст. Только привязывание теории и понимания того, что ты делаешь, дает возможность миграции на свежии версии фрейморков, которые все дальше и дальше, как в прочем, и сама Java. Жаль. Столько труда - и все скоро просто расстворится
@Sergey111111
@Sergey111111 6 жыл бұрын
Хотелось быузнать аналогичные команды для nmp,а то у меня винда, на ней ярн при импорте выдает ошибку, что невозможно подсоединиться к репозиторию.На гите разаработчиком написано, что это баг. П.С. С Новым Годом и спасибо за видосы!
@letsCodeDru
@letsCodeDru 6 жыл бұрын
npm i - - save vuex npm i - - save @babel/polyfill
@nilovss
@nilovss 6 жыл бұрын
Можете изменить репозиторий yarn на репозиторий npm в настройках yarn. И проблема уйдет. В том числе, если используется proxy.
@phpusr
@phpusr 6 жыл бұрын
Никак не пойму зачем создавать новый объект в мутациях, если и при изменении старого все работает?
@phpusr
@phpusr 6 жыл бұрын
Изменение старого объекта: mutations: { addMessageMutation(state, message) { state.messages.push(message); }, updateMessageMutation(state, message) { const index = state.messages.findIndex(item => item.id === message.id); state.messages.splice(index, 1, message); }, removeMessageMutation(state, message) { const index = state.messages.findIndex(item => item.id === message.id); if (index > -1) { state.messages.splice(index, 1); } }, },
@phpusr
@phpusr 6 жыл бұрын
Создание нового объекта из старого с изменениями: mutations: { addMessageMutation(state, message) { state.messages = [...state.messages, message]; }, updateMessageMutation(state, message) { const index = state.messages.findIndex(item => item.id === message.id); state.messages = [...state.messages.slice(0, index), message, ...state.messages.slice(index + 1)] }, removeMessageMutation(state, message) { const index = state.messages.findIndex(item => item.id === message.id); if (index > -1) { state.messages = [ ...state.messages.slice(0, index), ...state.messages.slice(index + 1) ] } }, },
@phpusr
@phpusr 6 жыл бұрын
Ответ здесь: ru.vuejs.org/v2/guide/list.html#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D1%8B-%D0%B2%D0%BD%D0%B5%D1%81%D0%B5%D0%BD%D0%B8%D1%8F-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B5%D0%BD%D0%B8%D0%B9
@АндрейНемобатор
@АндрейНемобатор 5 жыл бұрын
@@phpusr Я тоже на этом месте удивился таким причудливым решениям, вместо привычных методов. Однако я не знал что vue обернул эти методы, избавив от таких заморочек.
@nilovss
@nilovss 6 жыл бұрын
Серия уроков крутая! Есть ли возможность поддержать проект, кроме Patreon?
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Ну до кнопки "поддержать канал" я пока не дорос) Буду признателен за привлечение аудитории и популяризации канала любыми методами :)
@nilovss
@nilovss 6 жыл бұрын
@@letsCodeDru Я к тому, что Patreon предполагает ежемесячную подписку. Это отпугивает потенциальных жертвователей. Было бы круто иметь канал разовых пожертвований. Финансовая поддержка - самый лучший мотив заниматься дальше.
@letsCodeDru
@letsCodeDru 6 жыл бұрын
@@nilovss да, понимаю. Пририсовал в описании к каналу ссылки на Яндекс.Деньги и PayPal
@nilovss
@nilovss 6 жыл бұрын
letsCode надеюсь, что в описаниях к видео, эта информация тоже появится :) Поддержал!
@letsCodeDru
@letsCodeDru 6 жыл бұрын
@@nilovss Огромное спасибо) ре-активал подписку на Premiere Pro, монтаж определённо станет проще :)
@ivanyuyukin2900
@ivanyuyukin2900 6 жыл бұрын
Два видео за неделю?
@letsCodeDru
@letsCodeDru 6 жыл бұрын
Зачастил? Сбавить обороты? 😁
@ivanyuyukin2900
@ivanyuyukin2900 6 жыл бұрын
@@letsCodeDru Не Андрей не надо)) С наступающим)
@mikhailsviryd7129
@mikhailsviryd7129 5 жыл бұрын
Vue сам отправляет запрос на получение messages: store.js: ... state: { messages: [] }, ... mutations: { ... getMessageMutation(state, data){ state.messages = data } }, actions: { ... async getMessageAction({commit}){ const result = await messagesApi.get() const data = await result.data if (result.ok) { commit('getMessageMutation', data) } } } main.js: ... new Vue({ ... created() { this.$store.dispatch('getMessageAction') }, })
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
To Brawl AND BEYOND!
00:51
Brawl Stars
Рет қаралды 17 МЛН
Собираем JAR с Vue.js внутри. Spring Boot Rest
15:31
Что-что Мурсдей говорит? 💭 #симбочка #симба #мурсдей
00:19