Zustand и React query. State management в React без боли

  Рет қаралды 64,880

Ulbi TV

Ulbi TV

Жыл бұрын

В этом ролике мы рассмотрим стейт менеджер в React Zustand, который активно набирает популярность.
Мой курс "Продвинутый Frontend. В production на React" - ulbitv.ru/frontend
Плейлист с роликами по архитектуре - • Архитектура ПО
Поддержать меня и мой канал вы можете по ссылкам ниже.
Patreon/boosty (доступ к бонусам) - boosty.to/ulbitv
Qiwi кошелек - qiwi.com/n/BODYE821
Яндекс деньги - yoomoney.ru/to/4100116193037469

Пікірлер: 371
@NikOroferov
@NikOroferov Жыл бұрын
Очень хотелось бы разбор React Query.
@SanyaSlyusarenko
@SanyaSlyusarenko Жыл бұрын
Есть ещё один замечательный подход к сторам во фронте - это Effector. Невероятно функциональный и декларативный. Контрибуторы - те же люди, кто делал Feature-Sliced-Design. Хочется увидеть обзор на Effector. Залайкайте коммент, чтобы Ульби увидел 😄👍
@enslit
@enslit Жыл бұрын
Я FSD проникся и внедрил в проект. Просто пушка 🔥Не знал что эффектор их продукт. Обязательно теперь чекну и попробую. Спасибо за мысль)
@vladkrutenyuk6715
@vladkrutenyuk6715 Жыл бұрын
плюс! использую еффектор на постоянной основе уже давно - он классный
@user-kh7rf2yf2d
@user-kh7rf2yf2d Жыл бұрын
@@enslit FSD частично нарушает философию модульной архитектуры, когда из любой точки приложения ты достаешь компонент или хук из /user/hook/...
@enslit
@enslit Жыл бұрын
​@@user-kh7rf2yf2d не знаю о "модульной философии" =) Методология FSD говорит нам о том, что нефиг что попало, импортить куда попало. Взять к примеру хук о котором ты пишешь - useHook (или что угодно из директории /user/hook).При правильном использовании FSD мы не сможем зависеть от этого хука в компонентах shared слоя и это отлично! так и должно быть. В остальном, кладешь этот хук, предполагаю в entities/user/ и юзай себе спокойно как ты говоришь из любой точки
@Fodintsov
@Fodintsov Жыл бұрын
@@user-kh7rf2yf2d Это где ж в FSD такая схема? /shared/hooks/ - это да. Никаких /user/hook быть не может. И в шаред лежат только компоненты, не несущие бизнес-логики: кнопки, дропдауны, все вот это...
@NoName-oh9fh
@NoName-oh9fh Жыл бұрын
Насчёт React-Query, было бы хорошо если ты расскажешь в каких случаях стоит его использовать с стором, потому что в основном, если не всегда на мой взгляд react-query полностью убивает всякие сторы, потому что там можно хранить данные в кеше вечно и полностью сторы теряют смысл работы с сервером. + Так же react-query умеет работать с persist.
@grenadier4702
@grenadier4702 Жыл бұрын
А прикол в том, что стор кроме как хранения юзера и каких-нибудь вещей для отрисовки сложного ui не нужен. все решается с помощью react-query + конекст с локальным состоянием для каждой страницы
@alexey5097
@alexey5097 Жыл бұрын
Хранить в кэше на фронте можно очень ограниченное количество информации, которое долго остается актульным типа данные юзера или данные о событиях, которые не могут измениться. В высоконагруженных системах возлагать контроль за актуальностью кэша на фронт будет глупо с точки зрения перфоманса и этим чаще всего занимается бэкенд(есть специальные алгоритмы поддержания кэша). Мы использовали персист на фронте для хранения токенов и каких-то ключей, уже и не вспомню
@doichev-kostia
@doichev-kostia Жыл бұрын
React query - server state (данные), zustand/jotai/valtio - client state
@daddyj2049
@daddyj2049 Жыл бұрын
@@doichev-kostia большинство клиентских Стейт менеджеров предоставляют работу с асинхронными данными, но если выбирать между клиентским стейтом и react-query, то логичнее использовать react-query. А для клиентских данных ну тут на самом деле можно использовать обычный контекст. Зачем я буду в проект заносить лишний "вес" ради того чтобы хранить какая цветовая тема сайта стоит у пользователя? Тем более если брать пример все же с получением данных, то после обновления страницы все слетит. Насчёт комментария выше соглашусь, то что для большого проекта вместо клиентского Кеша можно вынести на сервер, но опять же тут клиентский стор и не нужен, если так же будем использовать react-query. Мы просто отключим кеширование.
@doichev-kostia
@doichev-kostia Жыл бұрын
@@daddyj2049 да, соглашусь, но, если честно, контекст не очень хорош, потому что после любого изменения стейта, он полностью перерендеривает всех children, что не очень прикольно. В наших SPA для любых данных с API, мы используем react-query, но иногда есть куски, где стейт нужно чисто клиентский и, честно говоря, я бы предпочёл zustand или jotai вместо react context
@natalyamurashko125
@natalyamurashko125 Жыл бұрын
Цуштанд - с немецкого "состояние" или State 😀 Спасибо за видео! Отличная подача информации, и даже не играет роли произношение слов на разных языках. Главное - это знания, которыми Вы с нами делитесь 🎉
@gagogoga794
@gagogoga794 Жыл бұрын
Застанд 😂 Коллегам немцам показал, очень смеялись 😂
@savin55589
@savin55589 Жыл бұрын
Z нацисти😅
@vov4egde
@vov4egde Жыл бұрын
Очень странно, что на том же гитхабе нет транслитерации. Что-то вроде Zustand [ˈtsuːʃtant] - a german word for "state" А вообще, кончено забавно как это произносят остальные блогеры. "Застанд" и "зЮстЭнд" пока мои самые любимые ))) На самом деле ухо режет ппц, так как живу в Германии и с коллегами разговариваю на немецком...
@0xffsu
@0xffsu 8 ай бұрын
Только без т на конце, просто Цуштанд :)
@khanina2011
@khanina2011 7 ай бұрын
Я тоже так и прочитала😂когда знаешь немецкий, читать английский становится сложнее 😂
@user-fk8fm2iv6n
@user-fk8fm2iv6n Жыл бұрын
раскидал за 10 минут! Просто и понятно! Огромное спасибо за твои старания! Ждём такой же ролик по effector)
@user-by9wx1om9v
@user-by9wx1om9v Жыл бұрын
спасибо за видос. очень нравится твоя форма изложения материала. всё по делу, в хорошем темпе и все понятноё. Жду продолжения видосов про архитектуру
@racman9964
@racman9964 Жыл бұрын
спасибо, Тимур! Как всегда всё кратко, понятно. Лучший)
@leonidindivid
@leonidindivid Жыл бұрын
Видео как всегда очень приятное! Да, видео по React Query было бы здорово посмотреть, спасибо
@Sogeking228
@Sogeking228 Жыл бұрын
Привет. Про React query, обязательно стоит сделать ролик я считаю. О том как работать с ним в ssr вместе с каким нибудь СТМ с fsd архитектурой.
@proofit404
@proofit404 Жыл бұрын
Ждём про React Query, спасибо за титанические труды!
@ilyapro2815
@ilyapro2815 Жыл бұрын
Спасибо за видео! Интересный формат, продолжай.
@_GyG_
@_GyG_ Жыл бұрын
Спасибо за классный обзор. Хотим еще по React-Query)
@gentleman94
@gentleman94 Жыл бұрын
Спасибо огромное за ролик, подача как всегда на высоте! React Query тоже очень хотелось бы)
@falsetrue7910
@falsetrue7910 Жыл бұрын
Отличный ролик, краткий, лаконичный, по существу Так держать
@xahabcemy1136
@xahabcemy1136 Жыл бұрын
Просто для информации: это немецкое слово и читается как цуштанд👍 . Видео огонь как всегда! Спасибо 🙏🏻
@natalyaiv3414
@natalyaiv3414 Жыл бұрын
Спасибо, Тимур👍 Про Реакт интересно)
@user-mv8bu5jy2n
@user-mv8bu5jy2n Жыл бұрын
Это знак свыше!=) Только сегодня утром искал и просматривал материалы по Zustand!=)))Спасибо за работу!
@igor5379
@igor5379 Жыл бұрын
ваша мольба услышана)
@xDiezz
@xDiezz Жыл бұрын
зачем все эти кривые костыли и бойлерплейты когда есть мобкс, где все работает автоматом
@Tanatos654
@Tanatos654 Жыл бұрын
Интересно было послушать про Zustand, хочется попробовать в деле) Про react-query обязательно нужен ролик!
@user-tn1sj9zn9q
@user-tn1sj9zn9q Жыл бұрын
Ждём React Query, да и много ещё чего ждём. Спасибо за шикарные видео)
@sergeyavtsynov4470
@sergeyavtsynov4470 Жыл бұрын
Поддерживаю, очень интересно будет послушать про React-query 🔥🔥🔥
@shittywizzard5727
@shittywizzard5727 Жыл бұрын
Никогда не поленюсь написать "Красава, хорош, так держать, давай еще" если я досмотрел видео до конца :)
@sultankeneev8093
@sultankeneev8093 Жыл бұрын
Спасибо очень информативно! Очень сильно ощутил разницу между redux и zustand
@alexanderpotapov2774
@alexanderpotapov2774 Жыл бұрын
спасибо! Стало сразу понятно, что это, и какие есть преимущества
@user-sn4ki6vg4b
@user-sn4ki6vg4b Жыл бұрын
Интересно было послушать, спасибо. Попробую внедрить к себе в проект
@KingSpeed74
@KingSpeed74 6 ай бұрын
Спасибо за видео! Подробный разбор react-query очень нужен!)
@user-gg7cg7gz9o
@user-gg7cg7gz9o 5 күн бұрын
уже 300 к бор у тебя !) поздравляю Тимур !!!!! ты заслужил !!!
@lLoseControll
@lLoseControll Жыл бұрын
Как всегда топ контент !
@kegorfx
@kegorfx Жыл бұрын
Чтобы в девтулс отображались не анонимные экшены, в сторе при set в опциях можно передать строкой название какое хотите. Тогда в редакс девтулс наглядно всё видно
@ivanmiarkulau8320
@ivanmiarkulau8320 Жыл бұрын
Не очень понятно из видео как работать с версионированием персиста, но это уже в документации почитаю, спасибо за ролик!) Хотелось бы увидеть видео про React Query)
@erassylzh5658
@erassylzh5658 Жыл бұрын
Ждем видео про React Query. И не плохо было бы уже заменить create-react-app на Vite.
@user-bt4lz4kv7k
@user-bt4lz4kv7k Жыл бұрын
Как всегда все круто! React Query очень хочется
@user-yj8tf7xb6g
@user-yj8tf7xb6g 10 ай бұрын
Как хорошо, что есть Ваш канал! Zustand react
@Nuts_Cracker
@Nuts_Cracker Жыл бұрын
Спасибо! Отличное видео!
@quazacotl
@quazacotl Жыл бұрын
Давай мясо! В смысле, react-query. За видео плюс)
@user-hd7mi3tj5r
@user-hd7mi3tj5r Жыл бұрын
Спасибо большое за обзор! Было бы замечательно посмотреть твой обзор React Query!)
@sh0ny
@sh0ny Жыл бұрын
коммент в поддержку канала Тимура и выпуска видео по React Query😊
@evilinarm
@evilinarm Жыл бұрын
Спасибо за крутое видео!
@STELLS541
@STELLS541 10 ай бұрын
Ждемс реакт-квери, всякие приколы в нем и хорошие паттерны написание запросов.
@pochta1000
@pochta1000 Жыл бұрын
Цу-Штанд (нем. Состояние / англ. state)
@Husan203
@Husan203 Жыл бұрын
Классный разбор Zustand. Также хотелось бы разбор и про react-query!
@vitalyterpilin3768
@vitalyterpilin3768 Жыл бұрын
RtQ очень нужен видос, спасибо!
@user-ue7lj2to9q
@user-ue7lj2to9q Жыл бұрын
Отличное видео. И + за видео про React Query
@adelinaromanova8353
@adelinaromanova8353 Жыл бұрын
Интересно, смотрим!💥
@VaultBoyVaultBoy
@VaultBoyVaultBoy Жыл бұрын
Спасибо за ролик)
@thetraveler7779
@thetraveler7779 Жыл бұрын
Лучшее - однозначно 👍
@user-yn5sq1fd5e
@user-yn5sq1fd5e Жыл бұрын
Спасибо большое за твое хорошее дело
@user-xi3ly4vu4m
@user-xi3ly4vu4m Жыл бұрын
Захотелось написать Тимуру хороший комментарий, оставлю здесь, тк моя мини-стори завязана на этом ролике. Я пришел на замену человечку в проект, написанный наскоро на Svelte. Чинил оставленные баги, старался улучшить архитектуру в меру своих знаний. И так получилось, что один из багов представлял из себя ререндендеринг и рерутинг на главную страничку при любом изменении данных в сторе, даже если измененные данные не имели отношение к отображаемой сейчас страничке и никак не затрагивались. Почему так происходило я вообще не понимал и помочь мне особо никто не мог. В один из дней я пересматривал этот ролик и как раз обратил внимание про оговорку Тимура, что изменение формально не связанных данных в сторе с текущим компонентом все равно триггерит ререндеринг этого компонента. Проверил тестово на сторах Свелта и тоже увидел такое же поведение. Так что только благодаря Тимуру я смог осознать в чем состоит проблема и стал разгребать этого рейд босса) Спасибо большое
@UlbiTV
@UlbiTV Жыл бұрын
🔥🔥
@olfi1728
@olfi1728 Жыл бұрын
Спасибо за краткий обзор.
@ipa_stor
@ipa_stor Жыл бұрын
Ролик прямо как в старые-добрые:))) давно не видел те ламповые видео, с разбором какой-то локальной темы🤗 Zustand последние пол года постоянно маячит перед носом, но руки пока не дошли... Вроде крайне дружелюбный, как мишка на лого🤣
@dontcode
@dontcode Жыл бұрын
Последнее время действительно от фронта больше к общим темам ушли, но мне это наоборот нравится
@ipa_stor
@ipa_stor Жыл бұрын
@@dontcodeэто неплохо, но изредка вот такие ролики тоже очень приятно глянуть 👍👍👍
@dontcode
@dontcode Жыл бұрын
@@ipa_stor согласен
@eunicsi
@eunicsi Жыл бұрын
как всегда супер
@denys7567
@denys7567 Жыл бұрын
Спасибо за ролик. Пока выглядит как нативный React context только в профиль
@typingaway
@typingaway Жыл бұрын
React Query для работы с "серверным" стейтом приложения (server state data management), Zustand - для работы с клиентским стейтом. Если клиентское приложение тонкое (минимум бизнес логики, все данные в нужном формате возвращаются с бекенда), то возможно Zustand и другие стейт менеджеры вообще будут не нужны, но если толстое, то удобно с данными работать как раз таки через Zustand
@theoty-js-react
@theoty-js-react Жыл бұрын
Тимур - лучший педагог!
@wat4mon
@wat4mon Жыл бұрын
круто, что обозреваешь такие технологии, которые только на этапе зарождения
@shittywizzard5727
@shittywizzard5727 Жыл бұрын
его уже используют в проде
@Hytpu9
@Hytpu9 Жыл бұрын
это не про zustand, он уже довольно популярный
@xDiezz
@xDiezz Жыл бұрын
это редакс вид сбоку, чтоб было немного меньше боли, пока не открыли для себя мобкс, где ее вообще нет
@shittywizzard5727
@shittywizzard5727 Жыл бұрын
Боли нет пока не пришлось дебажить)
@user-ue8bh7tj5k
@user-ue8bh7tj5k Жыл бұрын
Спасибо за контент! Кто знает, может когда-нибудь дойдём и до valtio. Забавный факт, у Valtio, Zustand и Jotai один автор
@kostia-stoliarskyi
@kostia-stoliarskyi Жыл бұрын
по квери тоже надо видео!) спасибо за видос)
@user-og1us9hb3c
@user-og1us9hb3c 5 ай бұрын
было бы интересно также как использовать react query и zustand вместе. спасибо за ролик!
@almost-wizard
@almost-wizard Жыл бұрын
Ждем React Query!
@BazliMax
@BazliMax Жыл бұрын
Спасибо за видос
@nadjaparzer976
@nadjaparzer976 Жыл бұрын
Цуштанд, это немецкий, переводится как состояние
@dmitrydidenko694
@dmitrydidenko694 Жыл бұрын
Ждем все , что сейчас актуально
@ArtikMan1994
@ArtikMan1994 Жыл бұрын
Отличное видео. Как всегда, никакой воды. Спасибо, что уважаешь наше время. Да, очень хотелось бы посмотреть видео об Реакт Квери т.к. хочу его выучить. Не писал на нем, но точно знаю, что на данный момент это best practice, и нужно идти в ногу со временем, не отставать от рынка. Не зря в редакс-тулкит запихнули тот же РТК
@bernizhel
@bernizhel Жыл бұрын
Хотелось бы понять, как работать с react-query, спасибо за разбор zustand!
@yaroslavqwerty8609
@yaroslavqwerty8609 Жыл бұрын
React query теперь ждём ролик
@igorstadnik707
@igorstadnik707 Жыл бұрын
Спасибо большое :)
@vladimirliankevich1361
@vladimirliankevich1361 Жыл бұрын
Хочется ролик про ReactQuery! Спасибо за твои видео
@dsn3192
@dsn3192 Жыл бұрын
Класс 👍 спасибо
@donottrackmepls
@donottrackmepls Жыл бұрын
Чотенько, хотелось бы еще реакт квери! Спасибо, Тимуp :)
@Dmitriy_c-137
@Dmitriy_c-137 Жыл бұрын
Коммент в поддержку !
@evgeniy5716
@evgeniy5716 Жыл бұрын
Всё понятно и круто, спасибо! теперь ожидаем на очереди react query)
@romanroman5820
@romanroman5820 Жыл бұрын
Спасибо за видео! Нужен обзор на react query)
@user-sj4uc2uu2z
@user-sj4uc2uu2z Жыл бұрын
Спасибо за видео, как всегда огонь! По поводу state мэнеджеров, не совсем понятно когда нужно использовать RTK, когда обычные редюсеры и extraReducers, такое видео было бы очень полезно)
@zoombix5753
@zoombix5753 Жыл бұрын
Прикольный стейт, но все равно предпочитаю MobX за его простоту и удобность)
@evgeniysumaev2353
@evgeniysumaev2353 Жыл бұрын
Выглядит весьма!
@-anonim-3008
@-anonim-3008 Жыл бұрын
Спасибо огромное!!! Я почему-то как один раз про mobx посмотрел видео, привык к нему, даже не смотрел на актуальность его и тем более весь, 50 кб.... Сейчас redux чутка подучу и потом на zustund можно спокойно будет переходить
@sergeysamius1128
@sergeysamius1128 Жыл бұрын
Спасибо!
@user-lj8xm1ye7q
@user-lj8xm1ye7q Жыл бұрын
👍 Жду гайд по React-Query
@filenko45
@filenko45 Жыл бұрын
Спасибо. Хотелось бы увидеть именно связку с React Query, как и было заявлено в названии ролика.
@bo_ver4628
@bo_ver4628 Жыл бұрын
Кликбейтить начал чувак, сообщество не одобряет
@CQRay
@CQRay Жыл бұрын
Хорош! У нас в компании это основной стейт менеджер, активно использую и в собственных проектах Для запросов у нас самописные слайсы с реакциями Жду видео о React Query
@bambalbino
@bambalbino Жыл бұрын
Спасибо большое за обзор. Как всегда кратко и содержательно. Хороший стейт менеджер, но если брать мульттстор, то ИМХО эффектор вне конкуренции.
@user-uj5mm7yj1o
@user-uj5mm7yj1o Жыл бұрын
оч круто!
@Romul3003
@Romul3003 Жыл бұрын
react-query обязательно обзор нужен. Причем полный и всеохватывающий. Либа очень полезная, но довольно объемная по документации. Хотчелось бы структуризированную инфу. Спасибо!
@user-tr8gr6bl2u
@user-tr8gr6bl2u Жыл бұрын
Да, очень хорошая идея, сделать обзор React-Query
@fedez007
@fedez007 Жыл бұрын
Видосу лайк, и ждём видео react-query ts возможно + Next ssr
@thehuman9604
@thehuman9604 7 ай бұрын
Цуштанд -- тема классная. Уже используем в проде.
@RomaShtep
@RomaShtep Жыл бұрын
Добрый день. Жду обзор за BlitzJS. Использую и очень радуюсь. Жизнь стала проще.
@arturgorbunov3792
@arturgorbunov3792 Жыл бұрын
React Query - ждемс!
@tesohi
@tesohi 3 ай бұрын
спасибо!❤
@Ramosok
@Ramosok 10 ай бұрын
Круто!
@krumbo
@krumbo Жыл бұрын
Super tutorial thanks.
@anatoliiilescu839
@anatoliiilescu839 Жыл бұрын
Посмотрим!
@GNU_Pinus
@GNU_Pinus Жыл бұрын
Очень похоже на Pinia из Vue
@Vova-mq5wy
@Vova-mq5wy Жыл бұрын
Мочи видос про react query ) достаточно мало толковых видео про него на просторах ютуба
@user-fj1vx9jv5b
@user-fj1vx9jv5b Жыл бұрын
recoil здорового человека
@17u5h
@17u5h Жыл бұрын
класс, хочу!
@user-mu2lr9zc7d
@user-mu2lr9zc7d Жыл бұрын
Спасибо за обзор. Интересный стейт менеджер, редух уже изжил себя, а скачиваний много из-за пиара и того, что его по началу засовывали во все проекты... а сейчас мучаются))
@user-yr3ub5gp3t
@user-yr3ub5gp3t Жыл бұрын
Тимур, большое спасибо! очень хочется видос про react-query, а особенно сравнение с RTK-query. вроде как React-query имеет больше фичей и интереснее, но не избыточно ли? хочется узнать твое мнение. Ребята, залайкайте пожалуйста.
@AlexandruBejenari
@AlexandruBejenari Жыл бұрын
+++ React Query!!!!
@woodDacha
@woodDacha Жыл бұрын
Спасибо за ролик. Надо будет как то его попробовать. Effector я немного пробовал. Хотелось бы понять какой инструмент лучше брать для нового проекта. Или все таки Редакс? :)
@igorchernov1340
@igorchernov1340 Ай бұрын
Тимур, сердечно прошу записать ролик про react-query🙏. Очень хотелось бы подробное сравнение обработчиков onError и catch при работе с axios interceptors при авторизации, ну конечно же лучшие практики💥, как пример фабрикики в которых создаются объекты queryKey, queryFn для удобной вставки в сам хук. Спасибо за контент☺, ты делаешь сообщество разработчиков в РФ лучше.
@oughtlesss6553
@oughtlesss6553 Жыл бұрын
Было бы круто увидеть видос связанный с мультисторами редакса и модульным подходом
React Query за 10 минут! Быстрый курс
11:34
Archakov Blog
Рет қаралды 48 М.
📦 STATE MANAGEMENT - лучший стейт менеджер для react ?
14:29
SIBERIA CAN CODE 🧊 - Frontend
Рет қаралды 11 М.
버블티로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 32 МЛН
Whyyyy? 😭 #shorts by Leisi Crazy
00:16
Leisi Crazy
Рет қаралды 20 МЛН
СНЕЖКИ ЛЕТОМ?? #shorts
00:30
Паша Осадчий
Рет қаралды 7 МЛН
Почему я выбираю Zustand вместо Redux Toolkit?
24:53
PurpleSchool | Anton Larichev
Рет қаралды 14 М.
Знакомство с Zustand - лучшей заменой Redux
29:35
Михаил Непомнящий
Рет қаралды 28 М.
React Query - Complete Tutorial
18:57
Cosden Solutions
Рет қаралды 100 М.
State Managers Are Making Your Code Worse In React
13:33
Web Dev Simplified
Рет қаралды 158 М.
React Query. Быстрый старт
30:09
Михаил Непомнящий
Рет қаралды 47 М.
Frontend Собеседование с разбором. Путь к трудоустройству 2024
41:18
Zustand - Complete Tutorial
19:27
Cosden Solutions
Рет қаралды 66 М.
Неразрушаемый смартфон
1:00
Status
Рет қаралды 1,4 МЛН
Урна с айфонами!
0:30
По ту сторону Гугла
Рет қаралды 7 МЛН
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 25 МЛН
iOS 18 vs Samsung, Xiaomi,Tecno, Android
0:54
AndroHack
Рет қаралды 21 М.
WWDC 2024 Recap: Is Apple Intelligence Legit?
18:23
Marques Brownlee
Рет қаралды 6 МЛН