- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
$(".mobile-filter__footer-popular-btn").on("click",function(e){
e.preventDefault(),
$("#header-mobile").addClass("blue"),
$(this).addClass("active"),
$("#filter-aside-mobile-category-popular").addClass("active")
});
$("#filter-aside-mobile-category-popular .catalog-mobile-menu__close").on("click",function(e){
e.preventDefault(),
$("#header-mobile").removeClass("blue"),
$(".mobile-filter__footer-popular-btn").removeClass("active"),
$("#filter-aside-mobile-category-popular").removeClass("active")
})
rotoeb 12.11.2020 18:27 # 0
Kypumca_rpuJlb 12.11.2020 22:04 # 0
rotoeb 12.11.2020 22:40 # 0
MAKAKA 13.11.2020 04:31 # 0
rotoeb 13.11.2020 12:21 # 0
Lure Of Chaos 13.11.2020 11:57 # 0
bootcamp_dropout 13.11.2020 12:17 # 0
Lure Of Chaos 13.11.2020 12:17 # 0
bootcamp_dropout 13.11.2020 12:19 # 0
MAPTbIwKA 13.11.2020 14:36 # 0
bootcamp_dropout 13.11.2020 14:44 # 0
MAPTbIwKA 13.11.2020 14:45 # 0
bootcamp_dropout 13.11.2020 15:23 # 0
MAPTbIwKA 13.11.2020 15:26 # 0
и кстати с пассивным вью, который обновляеца по модели, а это вообще божественный паттерн для веб мартышек
bootcamp_dropout 13.11.2020 15:34 # 0
jsx сам по себе не имеет статических проверок, html имеет точно такие же внешние анализаторы
у реакта не пасивное вью которое обновляется по модели
и реакт не реактивный
MAPTbIwKA 13.11.2020 15:40 # 0
Разумеется, шаблонизатор:
>jsx сам по себе не имеет статических проверок,
Разумеется, имеет
>у реакта не пасивное вью которое обновляется по модели
Разумеется, пассивное: достаточно установить стейт модели, и оно обновится
https://thomasbandt.com/upload/mvu.png
>и реакт не реактивный
как скажешь
bootcamp_dropout 13.11.2020 15:43 # 0
но ведь так искренне считают 90% разрабов на реакте
какой пиздец (((
MAPTbIwKA 13.11.2020 15:44 # 0
bootcamp_dropout 13.11.2020 15:46 # 0
MAPTbIwKA 13.11.2020 15:52 # 0
bootcamp_dropout 13.11.2020 16:01 # 0
и если бы в дискуссии оказалось что это не так, мое самомнение обрушилось бы и я бы загрустил
MAPTbIwKA 13.11.2020 16:04 # 0
bootcamp_dropout 13.11.2020 16:07 # 0
их не так и много
MAPTbIwKA 13.11.2020 16:08 # 0
bootcamp_dropout 13.11.2020 16:10 # 0
bootcamp_dropout 13.11.2020 16:23 # 0
JSX не шаблонизатор потому что результатом его развертывания не является верстка. В реакте есть две фазы - рендер и коммит. Во время фазы рендера вызываются все эти jsx дрисни, транспилируются в React.createElement(...) и потом эти React.createElement разворачиваются в абстрактное дерево, изменения в котором высираются в DOM путем его мутации
То есть jsx не шаблонизатор потому что:
1) реакт не рендерит html, он использует апи браузера для мутаций DOM
2) при это jsx разворачивается не в html и даже не в вышеописанную js парашу и даже не в какую-то абстрактную хуйню а транспилируется в вызовы api реакта
bootcamp_dropout 13.11.2020 16:25 # 0
Нет, не имеет. Тебе нужно устанавливать валидаторы которые ты ставишь с бабелем или еще какой-то парашей. Точно так же ты можешь в бабель поставить валидаторы html
bootcamp_dropout 13.11.2020 16:27 # 0
Ты забыл уточнить что менять модель можно не как угодно а исключительно с помощю API реакта потому что вью должен попросить реакт зашедулить апдейт самого себя
MAPTbIwKA 13.11.2020 16:36 # 0
Есть стейт системы, который не зависит от view. И есть view, которое его отражает.
Любые изменения во вью должны вноситься через стейт.
bootcamp_dropout 13.11.2020 16:40 # 0
Ты не можешь поменять вью не трогая модель но ты очень просто можешь поменять модель и оставить вью неактуальным
MAPTbIwKA 13.11.2020 16:51 # 0
В программировании под термином "зависимость" обычно подразумевают наличие знания или ссылки на что либо.
"A зависит B" значит у A есть знание о B или ссылка на B.
У стейта нету никакого знания о вью, но разумеется его рисуют в рамках жизненного цикла.
Точно так же как HTML страница не имеет зависимости на мою ОС (в ней нет кода, специфичного для моей ОС) но страница сущестует только потому, что ОС ее рисует (по требованию браузера).
Жизненный цикл страницы (обновления её итд) так же зависят от ОС, а еще от моей клавиатуры.
>Ты не можешь поменять вью не трогая модель
Я могу выкинуть view, и написать другой view для той же самой модели.
Если же ты имеешь ввиду, что вся работа с вью идет через модель -- то да, это так. Именно потому вью и пассивен, хотя в данном случае у нас во вью инкорпорирован контроллер, что несколько смешивает понятия (в совсем классическом пассивном вью контроллер должен быть отдельно)
Однако я не могу по онклику на кнопку поменять напрямую другую кнопку. Я должен сообщить об этом модели, а дальше система отрендерит мои изменения этой самой модели
Это, в целом, неплохой паттерн, позволяющий не писать говно типа "при нажатии на кнопку A задизейблить кнопку X"
bootcamp_dropout 13.11.2020 16:58 # 0
Это неочевидно на простых примерах но при достаточно сложной логики и вью и модель(если это именно модель UI) становятся обязаны знать о жизненном цикле реакта
bootcamp_dropout 13.11.2020 17:05 # 0
Аналогично все делают бизнес-логику на чем угодно кроме реакта, но вся ui логика делается в реакте. И любая библиотека реализующая модель имеет адаптер к реакту
MAPTbIwKA 13.11.2020 17:11 # 0
Если бы такое понятие было, то разуеется лучше было бы испольщовать модель.
> бизнес-логику
Бизнес логику лучше отделять от UI фреймворков, это правда.
Когда мы говорим "модель", мы на самом деле имеем ввиду "модель представления". В крупных проектах она может отличаться от настоящих бизнес моделей (см MVVM)
bootcamp_dropout 13.11.2020 17:19 # 0
Внешне реакт действительно похож на тонкий слой вью максимально приближенный к вёрстке, но в действительности это ожиревшая хуйня в которой jsx - не html, обработчики событий элемента не привязаны к этому элементу, фаза рендера не отдает html и в случае порталов иерархия реактовых компонентов сильно отличается от иерархии DOM компонентов
MAPTbIwKA 13.11.2020 17:07 # 0
BY3 14.11.2020 23:48 # 0
Tpeg 15.11.2020 09:51 # 0
MAPTbIwKA 13.11.2020 16:34 # 0
Любой компилятор JSX отловит ошибку с незакрытым тегом.
Формально говоря ты прав: например ни джава, ни jsx не имеют средств для статической валидации кода. Такие средства имеют их компиляторы.
Однако же мы говорим "в джаве код компилируется, и это дает некоторую проверку по сравнению с бат файлом, где об ошибке можно узнать только в рантайме"
О JSX можно так сказать
MAPTbIwKA 13.11.2020 16:30 # 0
Результатом его работы является JS код, который после всего этого и строит DOM страницы. Это -- деталь реализации.
Шаблонизаторы позволяют писать HTML код встраивая в него какие-то переменные, и получать в итоге HTML страницу.
Некоторые шаблонизаторы генерируют поток байт, который затем превращется в символы HTML.
Шаблнизатор JSP (в джаве) генерирует Java код.
В ASP.NET код получается на .NET.
Тем не менее, всё это шаблонизаторы.
bootcamp_dropout 13.11.2020 16:34 # 0
MAPTbIwKA 13.11.2020 16:38 # 0
bootcamp_dropout 13.11.2020 16:45 # 0
Если он как реакт отдает скрипты то это уже какой-то рантайм
MAPTbIwKA 13.11.2020 16:54 # 0
bootcamp_dropout 13.11.2020 16:58 # 0
MAPTbIwKA 13.11.2020 17:05 # 0
bootcamp_dropout 13.11.2020 17:10 # 0
Можно написать шаблонизатор который будет выдавать вёрстку из jsx
Но в случае с реактом эта верстка сама по себе не имеет ценности, имеют ценности скрипты которые будут делать новую верстку и контролировать жизненный цикл
guest3 28.11.2020 22:13 # 0
guest6 11.04.2024 02:21 # 0
JSP не шаблонизатор, потому что разворачивается код на java.
jinja не шаблонизатор, потому что разворачивается в код на python.
MAPTbIwKA 13.11.2020 14:36 # 0
Lure Of Chaos 22.11.2020 15:08 # 0
guest3 23.11.2020 22:58 # −1