Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Навернул сегодня впервые Nextjs, мне сразу же сходу зашло, чому его по дефолту не используют вместо реакта? По сути то же самое плюс охуенный роутинг и поддержка css модулей ну и разумеется ssr. Какие подводные?
>>1914641 Уже года два его использую просто всегда по дефолту вместо create-react-app, ощущения охуенные. Только пишу на styled-components вместо css modules.
>>1914641 А чем тебе экспресс + реакт не угодил? Те же роутеры к api за 5 минут на нем прописываются. И структура контроллеров легче считывается, чем все в папку pages пихать
>>1914703 Так в нексте суть в том, что клиентский роктинг сочетается с SSR, там это из коробки и оно переоптимизировано как только можно. Если самому такое делать с экспрессом, то можно с ума сойти. Не то чтобы супер сложно, но долго, муторно, запарно.
Поясните лоху за функции в массиве зависимостей хуков. Например, useEffect, в массиве зависимостей которого есть функция, так вот этот хук чекает то, что эта функция возвращает, или что? Не понимаю.
>>1914641 >Какие подводные? В том, что один хуй придётся пердолить отдельный API сервер на экспрессе. Ну и XML как язык шаблонов вырвиглазен, это впрочем ко всему реакту относится. >>1914667 Никак из клиентского жса, тут только своё расширение для браузера писать и дёргать его файловую апишечку, или запускать нодовский сервер с папитиром.
>>1914764 Ну так расширение тебе нужно, чтобы иметь доступ к этой системе. Хочешь сказать, что браузер по малейшему пуку стороннего скрипта даёт доступ ко всей системе?
>>1914758 Shallow compare вроде делает, но это не точно. Короче, если функция создаётся заново, то юзЭффект сработает. Поэтому иногда функции, посещаемые в зависимости, оборачивают в юзКоллбэк
>>1914766 Не по маоейшему, а кае и все webapi с разрешения пользователя.
Так же как браузер теье дает дочиуп посылать увеломления, читать usb устройства, доступ к камере и микрофону, геолокации, точно так же и к файловой системе.
>>1914760 А почему никак? Я, кстати, это и делаю в виде расширения, но пока не было в этом принципиальной разницы. Попробовал сейчас хромовский downloads.download, не работает без background скрипта. Ебался час-два, не понял как завести это всё вместе.
>>1914648 >if (value.length && value.length > 0) do(); Хуйня, вторая проверка вообще никакого смысла не имеет + вложенность лишняя будет. >>1914656 >if (value.length && typeof value === 'number' && value.length > 0) do() Тебе уже ответили, ты просто даун >>1914661 >if (value.length) { do() } Хуйня, аналогичная первому, вложенность охуевшая будет, если в таком говностайле кодить.
>>1914858 >value.length && do() Большую хуйню только >>1914656 этот написал. Конъюнкция нужна для логических условий или на крайний случай как замена тернарнику.
>>1914641 Потому что не везде нужен ssr и спрятанный конфиг вебпака с уебищными картами в деве и другими косяками о которых ты не узнаешь пока на них не наткнёшься. Хотя если пилишь туду и лендинги, то заебись будет, да.
>>1914890 Какая нахуй вложенность, ебаклак? Проверки по типу `!item` исключительно зависят от стайла-гайда на проекте и часто в них идёт блок обработки ошибок. `if (item) { do() }` используются для условного исполнения функции, соответственно обработка ошибок будет идти в блоке `else {}`.
>>1914923 Зачем ты такой конформист? Писать надо как будто ты творец искусства. К тому же если кроме тебя никто не понимает гениальный код, то ты уже незаменимый сотрудник, а не какой-то там винтик в системе
Ну, как тебе сказать, вы из "маленькая клиентская библиотека для создания компонентов" в очередной раз переизобрели жирножаботехнологии столетней давности:
>>1914938 Я уже видел такой комментарий на этой доске. Мне просто не понятен кейс использования этих компонент из коробки. Почему бы сразу в таком случае не заюзать SSR/SSG фреймворк, тот же Next или, на худой конец, допилить под cобственные нужды ReactDOMServer.renderToString. Разве что смысл может быть в плавной/частичной миграции на SSR и для точечных улучшений различных перформанс метрик.
блядь пиздец я зол. 8гб оперативы,i7,ssd, микропроект на 1000 строк кода в нескольких файлах и сука ебаная эта тормозит по секунде думает прежде чем раздуплиться от ошибки или сниппет мне подсказать... речь как вы догадались о VISUAL STUDIO CODE куда перекатиться-то блять,какие альтернативы?
>>1914961 Казалось бы, причём здесь вскод, если тормозит встроенный тайпскрипт? Точнее не тормозит, а лениво загружается, всё как функцианальщики любят. Зато запускается почти моментально!
>>1914891 > вторая проверка вообще никакого смысла не имеет
Долбоеб, в оригинале при положительном length идёт выполнение кода, т. е. подразумевается, что он больше 0. Первая проверка удостоверяется что такое свойство есть, вторая то что это свойство имеет численное значение, которое больше нуля.
Еще наверно расширений накатил новомодных, да, дурачок? Знакомый как-то умудрятся в Visual Studio (без Code, это две разные IDE) работать имея 8 гб на ноуте. Проблема явно не в IDE, а в том что ты засрал её.
>>1915027 >Первая проверка удостоверяется что такое свойство есть Тогда ты её неправильно написал, лол. По феншую это делается через 'undefined' !== (typeof value.length)
Меня заебало мешать логику и вьюхи в компонентах, хочу их все разделить на 2: в одном логика и иерархия своих компонентов, во втором хтмл/чужие компоненты и ивенты со всей хуйней. И из первого во второй не дриллить, а инжектить весь первый компонент как сервис.
Есть у такого подхода официальное название, может какие-нибудь тулзы полезные?
Что анон думает про ext js? У кого-нибудь есть опыт работы с ним? Просто фрейм супер непопулярный, судя по всему. А я пару месяцев уже наблюдаю ряд вакух, куда нужен экст. Думаю, кое-как может выучить что-нибудь, лишь бы что, и пробовать на собес идти. Если это действительно супер непопулярная тема, то и конкуренция должна быть маленькая. Ну уж точно меньше, чем на реактодебила.
Есть ли какая-то разница между дефолт экспоротом и именнованным? Если у меня экспорт в реакт компоненте всего один к примеру нет вообще никакого смысла экспортить через export const ComponentName?
Есть тут аноны, которые вкатывались не через чтение Кантора, а через основы JS по ютубу и потом сразу переходили к изучению React/Angular/Vue?
А то читаю Кантора и как-то это оторвано от жизни. Хочется поскорее что-то свое запилить, а не изучать теорию месяцами. Теорию хочу подтянуть уже перед собесами, а сейчас собираюсь работать над проектами.
>>1915279 Прочитал кантора и мдн но поверхностно для общего понимания самой механики, дальше начал смотреть петриченко и буру но делал по своему не как они обьясняли а как сам мог, где то костылил где то пытался переписать все на функции, главное понять саму идею
Этить, эсли бы вы знали как долго я трахаюсь с этим дерьмом. Уже поспрашивал на нескольких форумах, но в итоге посасываю. Хочу сделать так, чтобы в общем диве можно было хранить большое количество внутренних дивов, а показывало только 3. Дальше хочу, чтобы кнопка справа передвигала див, то есть при нажатии должно показывать див номер 2, 3, 4 и так далее. Я бы хотел сделать всё сам, но я даже не знаю с чего начать.
Что происходит, когда я пытаюсь проитерировать массив без свойств например чере фор ин цикл? Как можно отследить пошагово выполнение этого кода например?
>>1913850 → Знаешь как я узнал, что дискорд написан на жс?) Ахуел от того что он подгружается по 40 секунд когда все другие программы в основном занимают не более 10-15 секунд чтобы подгрузиться и пошел проверять на чем написан дискорд... Был вообще нихуя не удивлен
>>1915279 Ну да, в Канторе жс, мейн язык вротенда, в отрыве от html/css описывают, а потом на главах с домом хуярят лютые костыли, а ты сиди и тупи. Он максимум как справочник каких-нибудь мокрых писечек годится, в мдн всё лучше разложено и разжёванно. И на мдн как можно быстрее приучают работать со значениями в доме, а не хуярить сайд-эффекты через консолечку и промпт.
>>1915426 Я имею ввиду "ван соурс оф трус" и все такое. Как быть с классовым компонентом, где стейт это объект, мне понятно. Так блять, подождите. Стейт можно сделать объектом и по ключам менять нужное значение. Это норм будет?
>>1915288 Вообще всяких слайдеров в интернете масса... Сделать overflow hidden, float left и двигать в минус крайний левый див?
Хотя вообще это выглядит как какое-то припизданутое решение из нулевых, лучше просто в три фиксированных области разные данные выводить. Или подсмотри на произвольном чужом сайте.
>>1915454 Есть стейт как объект: {hui: "", pizda: "", zaloopa: ""} И есть setState. Я чета нихуя не соображу, как мне сделать, чтобы сетСтейт обновлял только одно значение, чтобы остальные не терлись.
И последний вопрос на сегодня: А можно как-то без лишней ебли вернутся к initial state? Например, мне надо, чтобы при отправке формы поля очищались. Только делать отдельную константу initialState и в handleSubmit засовывать setState(initialState)? Мне кажется можно как-то проще.
>>1915644 То есть только так, да? Бля, ну лан. А можешь еще пояснить вот что: Вот есть пакет react-form. Там написано, что эта хуйня сделана специально под хуки, мемоизирована, чтобы при ререндерах не лагало и т.д. Насколько правильно, что я просто дефолтную форму сделал, вместо этой йоба-хуйни из пакета?
>>1915426 >>1915454 Забей хуй на реактостейт, вешаешь на форму onSubmit, внутри этой формы присваиваешь переменной значение `event.target`, то бишь саму форму. У этой переменной есть свойство `elements`, что есть массив из полей, каждое из которых можно вызывать по айди или имени с помощью `elements[x]`. Выковыриваешь из каждого поля `value`, прогоняешь через рилейтед валидации и в зависимости от исхода или выплёвываешь массив ошибок, который скармливаешь в отдельный компонент со своим состоянием, или собираешь поля в объект и отправляешь его каким нужно способом для эндпоинта. Это конечно подразумевая, что каштомные компоненты под вопросом хотя бы позаботились о хранении вводных значений в инпутах. Если там дичь в виде хранения строк в дивах, то придётся прокидывать колбэки, чтобы собирать их значения. >>1915567 Вот только спред не одно значение изменит, а полностью перепишет состояние с изменённым одним значением. То есть в любом случае ререндер всей формы будет.
>>1915656 > прогоняешь через рилейтед валидации и в зависимости от исхода или выплёвываешь массив ошибок Кстати про валидации. Мне все "руками" валидировать? Или есть какой-то пакет или встроенные валидации? Вот мне надо почту валидировать, чтобы была именно почта, и чтобы от яндекса или гугла. То есть мне придется парсить строку на предмет наличия "@" и "yandex"\"google" или есть какой-то более короткий путь? А если ссылка? И я хочу чтобы обязательно была HTTPS. Опять строку парсить? А если мне надо, чтобы в строке не было слова peedoras? >который скармливаешь в отдельный компонент со своим состоянием А как мне ошибку пробросить В компонент? Как проп? >позаботились о хранении вводных значений в инпутах Ну у меня все хранится в стейте, с которым "синхронизируется" value инпута. Это норм или нет? Есть какой-то еще способ? >То есть в любом случае ререндер всей формы будет. Это понятно. Есть способ оптимизировать эту хуйню?
В ангуляре нахуячил валидаторов для своей формы, только вот они нихрена не работают. Сама форма работает и реактивно откликается на мои действия, но валидаторов как будто и нет. Че за хрень? Они разве не должны реактивно проверяться в тот момент, когда я заполню input? Или они проверяются только в момент когда я делаю submit для формы? (как его правильно сделать-то?)
>>1915716 Есть обычные поле input type="number", там валидаторы которые должны проверить что максимальное значение поля 100 а минимальное - 0. Но по факту нихрена не проверяется, я ввожу любое рандомное число, пусть 1000 например и на бэк данные приходят именно в таком виде Сабмичу данные я просто нажатием на кнопку, к которой привязал хендлер который собирает данные из формы и отправляет post-запрос на серв
>>1915618 Пиздец не в том, что ты расеяный или что-то кдуа-то забыл передать. А втом, что при возникновении ошибки, или вопроса почему не работает - ты блядь не анализируешь проблемы, варианты почему это могло случиться, и не перепроверяешь, все ли ты сделал для того, чтобы этого не случилось. Вместо того, чтобы ПОДУМАТЬ, ты идешь в тред на дваче блядь.
>>1915721 Проверяешь то как, дурик? Проверка это не ввод числа, ввод числа это уже тестирование, проверка это: >formGroup.get('здесь имя формы').hasError('здесь название ошибки') >.get('здесь имя формы').errors?.required
Считываешь эти значения и в зависимости от них делаешь действия. Либо сразу назначаешь функции-валидаторы, которые сами всё нужное сделают.
>>1915728 Бля, ты рили думаешь, что я так всегда делаю? У меня просто уже утро, я хуево соображаю и хочу быстрее доделать, чтобы завтра начать уже что-нибудь другое.
>>1915665 >Мне все "руками" валидировать? По-хорошему набор правил должен быть создан на уровне модели, чтобы расхождений между валидацией сервером и клиентом не было. А с модели должен распространятся до клиента или буквально при запросе, или модулем при сборке. Ну или придётся спрашивать у бэкендера. >Или есть какой-то пакет или встроенные валидации? Нету именно по причинам, которые ты назвал ниже - правила очень разнятся между проектами и формами, на каждые хотелки заебёшься полное решение искать. Хотя есть конечно общие параметры, типа `minlength` и `maxlength`, которые должны быть у ВСЕХ строковых данных, чтобы всякие шутники не пихали Войну и Мир в одно поле, перегружая запрос. >Вот мне надо почту валидировать, чтобы была именно почта, и чтобы от яндекса или гугла. То есть мне придется парсить строку на предмет наличия "@" и "yandex"\"google" или есть какой-то более короткий путь? А если ссылка? И я хочу чтобы обязательно была HTTPS. Опять строку парсить? А если мне надо, чтобы в строке не было слова peedoras? Это всё решается регулярными выражениями, вон даже в спеке есть всё это дело: https://www.w3.org/TR/html52/sec-forms.html#email-state-typeemail >The following JavaScript- and Perl-compatible regular expression is an implementation of the above definition. >/^[a-zA-Z0-9.!#$%&'+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)$/ Так что тебе всего-лишь надо добавить к этому примеру свои условия. >А как мне ошибку пробросить В компонент? Как проп? Ошибка - это объект, так что прокидываешь так же, как любые другие объекты в другие компоненты. >Ну у меня все хранится в стейте, с которым "синхронизируется" value инпута. Это норм или нет? Есть какой-то еще способ? Не хранить состояние инпутов в форме. Тем более сам говоришь, что инпуты идут отдельными компонентами, так что у них есть свои состояния. Ссуть формы же состоит в том, чтобы при нажатии на кнопку "отправить", собрать значения полей, валидировать и отправить их на сервер, если валидация прошла успешно. Ни в какой из этих стадий значения полей не меняются, соответсвенно и общее состояние не нужно.
Аноны, я только вкатываюсь и мне по не связанным с JS причинам нужно прокачать по максимуму свой английский, причем за пару месяцев. Посоветуйте какие-то годные англоязычные подкасты про JS, React и Node.js.
Хочу написать скрипт для скачивания контента из треда (фото/видео). Ссылки получил, как их теперь легко скачать? Через <a href> качает только часть. Интересно даже узнать почему так? Попробовал через chrome расширение, но не разобрался как заставить работать backgroud page, без которой не работает chrome.downloads.
Выше аноны между собой начали сраться, не дав совета даже.
>>1915791 Я тебе дал совет - запустить свой сервер. Прочти какой-нибудь гайд по ноде, где расписывают как фетчить файлы и записывать их в файловую систему, и пердоль свой кравлер. На клиентской стороне заебёшься дрочиться с корсами и доступом к файловой системе, что впрочем ты уже и испытал. А насчёт нескачиваемости отдельных файлов, смею предположить, что ты не прогонял хрефы через конструктор URL(), и соответственно некоторые ссылки были без домена. Хуй знает, что там макакен намудрил у себя в заднем конце. А вообще ты хуйней страдаешь, есть апишечка https://2ch.hk/api/index.html, по ней запрашиваешь джейсон и по нему шуршишь на предмет ссылок, без всякого пердолинга с домом.
>>1915802 Как? ПОДНИМАТЬ СЕРВЕР, чтобы скачивать пикчи? Что, блядь, за советы радикальные. Я-то в js залетный, но он без ебли работает, а ещё эту вебопарашу ставить зачем?
Код с пикчи качает пару файлов,как я понял, потому что хром не позволяет качаться сразу большому количеству файлов. Почему-то setTimeout не заработал и не факт, что он решил бы проблему.
У нас на проекте юзает жкьюри и реакт. Нет не вместе конечно, в одном сервисе юзается реакт а в другом жкьюри (потому что это легаси-кусок написанный первоначально еще в 2014) Каждый раз когда надо дорабатывать функционал на жкьюри я упираюсь и стараюсь сделать на ванильном жс, но старшие разрабы все равно давят утверждая что "должен быть единый code style". В этой битве мне не победить?
>>1915861 Скажи, что нативный код быстрее и лучше типизирован. Заодно скинь им http://youmightnotneedjquery.com и посрись на тему, какие куски можно переписывать на нативщину.
>>1915861 Потому что ты творишь дичь. Возьми и перепиши ВЕСЬ легаси проект на ванилу (или на что-то еще) и потом уже пиши на том, на что перепишешь. А если ты вносишь своей ахуительно правильное мнение, хотя на выходе делаешь неподдерживаемое говно где один кусок написан так, а другой иначе, то долбоеб тут ты.
>>1915868 >youmightnotneedjquery.com Кек, а ниче что все примеры с жкьюри максимально короче и проще читаются? Или моднявым зумеркам главное назло маме уши отморозить?
>>1915219 Всратый и вырвиглазный. Я на нём на бекенде в ноде делал шаблонизацию емейлов. Есть альтернативы pug, mustache, handlebars, ещё что-то было, но я их всех не пробовал. В следующий раз письма на беке вообще через JSX буду делать, вот это охуенная тема
>>1915861 Потом придёт зумер и начнёт вставлять что-то на нативном JS, только уже какой-нибудь новой редакции, когда высеры из youmightnotneedjquery.com устареют. В итоге вы получите вонючий говнокод, который читается только при условии, что ты знаешь JQuery и JS разных редакций.
>>1915861 Как бы ты отнеся к тому, что в проекте, который у вас написан на реакте, кто-то вносил бы новый функционал отдельных кусков на ваниле? Понравилось бы потом поддерживать такое?
Где почитать про адаптивку для мобилок? Пиздец какой-то, у меня ширина экрана 2к пикселей, при этом отображает сайт так, как будто у меня по ширине максимум 800-900 пикселей, пиздос еще с этими пикселями ебаться
>>1915877 >с жкьюри максимально короче Ты забыл, что к этому "максимально короче" прилагается либа в 100кб минимум, которая ещё и не сплитится. И это не включая всякие плагины. >проще читаются Это сомнительно. Читается оно проще только пердедам, которые даже свою маму на жиквери писали. Для остальных же вызов абсолютно разных функций через `$()` вызовёт лёгкое недоумение в лучшем случае. И на доку определённого вызова ты хуй наткнёшься и написана там будет вода, когда какой-нибудь `querySelector()` и легче ищется и дока подробная по нему выскочит.
>>1915948 Жрёт, поэтому выбор за тем чтобы сжимать или не сжимать зависит от того что для тебя важнее. Именно поэтому я кинул скрин размера не сжатого, но минифицированного файла, так как сжатие может как улучшить, так и ухудшить производительность, а вот минификация влияет только на читаемость исходного кода файла.
>пайп из редьюсеров, мапов и фильтров занимает 1.2мс >весь рут редьюсер с огромным количеством вычислений, создающихся массивов и объектов обсчитывается за 7мс >GC занимает 5 мс >реактоговно рендерит HTML 200 мс >рряяяя фп медленное, рамда оверхед делает, ФП НИНУЖНО Обожаю местных шизиков которые думают что в современных приложениях нужно считать байты, когда основная производительность и скорость зависит от UI. Это как шизики говорят что Руби/Питон медленные, когда 90% от запроса занимает доступ к базе данных что на Руби, что на Расте.
>>1915958 А допустимый фрейм 16мс для 60 фпс, и всэти 16мс ты должен уложить все вычисления и пендеринг, то есть фактически на каждый фреймкалк у тебя 8мс, вот и считай.
>>1915939 Ну нихуя себе, аж целых 80кб минимум, заместо 100! Ну всё, ты подебил, можешь дальше тащить своё жиквери говно в проекте, чтобы оно цвело и пахло.
>>1916086 Чел, ну какие нахуй из коробки вебпаки. Cli и там и там использует вебпак под копотом, можно просто подключить на проект вью и использовать его, можно поставить вебпак и настроить сборщик для вью.
>>1915861 >"должен быть единый code style" Это аргумент. Еще аргумент то, что в жуйке многие функции оптимизированы с т.з. кроссбраузерности, поэтому если соберешься переписывать на ваниллу, прежде подумай о регрессионном тестировании.
Аноны, если я в css классы называю именами типа main-block-right-newsblock-column, чтобы обращаться к конкретному элементы/ам путем прописывания одного конкретного класса, ну и в js переменные у меня букв по 20-30, это считается говнокодом???
>>1916107 > main-block-right-newsblock-column, почитай про БЭМ >в js переменные у меня букв по 20-30 Скорее да чем нет. Хотя если у тебя какой-то неебический сложный и большой проект с кучей сущностей и сложной доменной областью, то наверно такое возможно.
>>1916107 >ну и в js переменные у меня букв по 20-30, это считается говнокодом? Нет, экономить буквы на имени переменных - дурной тон. Это разве что ок в именовании аргументов в лямбдах, да и то, лучше писать максимально вербозно, чтоб на ревью меньше было вопросов.
>>1915868 Хорошо похрюкал с сайта конечно. Если jquery такой плохой, то почему слева одни однострочники, а справа - огромные херовины на десятки строк?
>>1915861 > В этой битве мне не победить? Вот это мне особенно нравится, "битве". Битве упрямого долбоеба против рационального аргумента об едином кодстайле. Типа ты даже не можешь доказать, почему надо писать на ванилле а не на жк, но битва должна быть энивей. Делай как умные дяди говорят.
>>1915861 Так они правильно давят, лол, кодстайл должен быть единым. Осилишь - перепиши все на ваниль. Но ты скорее всего не осилишь, так что не выёбывайся
>>1916112 >Хорошо похрюкал с сайта конечно. Главное что ты сам признался, что свинья. Как и полагается любому защитнику жиквери. >то почему слева одни однострочники Так у говнокода всегда однострочники. Я тебе даже Америку открою - тебе не нужно ставить жиквери, чтобы их городить. Оборачиваешь код любого размера в функциональное обьявление и вызываешь его - вот тебе и однострочник. По сути в этом и есть весь жикверик.
>>1916167 Какой же ты конченый блядь. Переведу для имбецилов: не однострочник, одна функция. Которая не требует городить огород для элементарной операции типа посылки обоссаного реквеста.
Поэтому малолетний долбоёб выше по треду ерепенится и хочет делать по-своему, не понимая что порой его хотелки никого не ебут, и что иметь code consistency гораздо важнее моды или старости/новости технологий, но т.к. pre-25-летний долбоёб мыслит эмоциями, а не разумом, то его поведение иррационально. Его сопротивление jQuery ничем не подкреплено, кроме "мне ванилла больше нравится", никаких аргументов. Такие моменты заставляют задуматься, почему в айти нет возрастного ценза.
>>1916215 Скорее необучаемый дед, который до сих пор хуярит глобальные переменные, горит что его говнокод и прилагающаяся либа совсем устарели. От старческого маразма даже названия методов неспособен читать уже. Ты напоминаешь дебилов в 93м, которые в белом доме сидели, свято веруя в швитой вечный коммунизм, когда по нему танки стреляли.
Как понять, что пора идти на собеседование? Вон некоторые вообще сразу брутфорсом идут. Была идея также позубрить вопросы на собеседования и пойти, но я не настолько уверен в себе
>>1916271 >разница между кокомунизмом и jQuery в том, что одно из них работает, а другое — нет Ну так коммунизм (jQuery) тоже работал, пока капиталисты (зумерки) говно в жопу не залили!
Короче есть массив объектов. Из которого рендерится лист типо такого. Задача - сделать так, чтобы можно было бы drag and drop'ом перемещать элементы, чтобы я мог двигать эти элементы по экрану, а они бы меняли свои "места в массиве". Пока что приходит в голову сделать в объекте отдельное свойство, которое будет отвечать за номер в "порядке рендера". Сначала рендерить объект 0 (неважно на каком он месте в массиве), потом 1, потом 2 и т.д. Проблема в том, как мне вычислить этот номер исходя из фактического расположения элементов на экране. Как понять, что этот элемент - номер 1, рядом с ним номер 2, если между ними поставить перемещаемый элемент, то перемещаемый станет вторым, а все после него увеличат свой номер на 1. Сильно заебно будет, да? Можно какие-нибудь подсказки, советы, может где-то есть интересная статья и т.д.?
JS: // Объявление let vm = Vue.createApp({data(){ return {i: null}; }}).mount('#popup'); // Использование vm.i = {name: 'Tom', type: 'cat'};
И оно работает, но я не понимаю, как мне сделать условное появление окна, v-if же на рутовый компонент не действует. Можно, конечно, махнуть рукой на то, что на странице будет пустой div, но, бля, неужели "так и задумано"? Можно как-то сделать появление/исчезновение дива #popup без лишнего джаваскрипта?
Пчелы, посоветуйте годноту чтоб вникать в ООП? Есть ребята выше джунов итт, подскажите мне, нахуй оно нужно? ФП же во всех смыслах удобнее и читабельнее, почему мне ебут за эту хуйню мозг.
>>1916607 Ну, это же вроде как тред по JS. Может стоит изучать как реализуются ООП и связанные с ним паттерны хотя бы с синтаксисом es6 в 2021 году? Ты не подумай, что я против тебя что-то имею. Просто самому тема интересна.
Нормальная ли практика в папке с компонентами создавать еще и группирующие папки? Типа есть папка components и внутри лежат какие-то большие компоненты с логикой. А нужно еще наделать маленьких кнопок, иконо и прочей хуеты. Куда это можно положить и как назвать? Если сделаю components -> buttons это уже хуёво? Как бы вы сделали? Да, у меня тут всселенские вопросы пиздец, полдня сижу выбирая имена для классов
Каким образом можно сопоставить 2 разных объекта по ключам? Вот есть один объект, у него id и name. Есть массив из объектов, который приходит с сервера, где только у одного объекта есть подходящий id. И из этого объекта нужно взять все данные и обработать их, как это можно сделать?
>>1916736 везде делают по разному. например папки для разных кусков приложения типа AppAdmin, AppBase, AppCatalog и отдельные папки типа components или elements, где есть общие для всех куски вроде кнопок
>>1916558 ооп это про языки типа джавы, с# причем тут жс? в жс свои паттерны , хотя нода пытается косить под вышеукзанные языки, во фронте вообще своя атмосфера
>>1916831 Окей, я дурак и обосрался, был не прав. Скажу по-другому, что я имел в виду: если при аргументации кто-то использует аналогию, то слишком часто это ложная аналогия.
>>1916838 Не настолько же. Сейчас на любой пук приводят аналогии, не имеющие ничего общего с темой обсуждения. Чтобы парсить аналогии сверхразумом быть не нужно.
>>1916792 Я думаю в данном конкретном случае речь о том, что код банально ctrl+c > ctrl+v вообще без какого-то последующего форматирования, что как раз и выливается в дальнейшую кашу
Щито хотел от языка, изначально разрабатывавшегося для свистоперделок к HTML-документам? Гугли, что такое коэрсия типов и как она реализуется при применении операторов/функций, если тебе интересно откуда эти цыганские фокусы. А так, на бою на голом ЖС без компиляции никто не пишет и не выкатывает в прод уже. За нестрогое сравнение бьет палкой линтер (и оно в общем случае медленнее чем строгое, кстати).
Аноны? Кто знает, как отключить предупреждение, когда npm скрипт останавливаешь? Реально бесит: "Завершить выполнение пакетного файла [Y(да)/N(нет)]?" Какое собачье тебе дело? Просто делай то что тебе говорят! Почему npm хочет показаться умнее хозяина?
>>1917095 Пользуй баш, который идёт вместе с гитфоршиндошс. Здесь npm ни причём, это стандартное поведение шиндошской строки. Оно кстати и в баш пролезает, но автоматом завершается.
>>1916977 Тестовое это один из немногих способов проверить твоё умение писать код. Но ты настолько умственно отсталый, что даже копипащенный код не смог привести к приемлемому виду, сделав так чтобы он не отличался от твоего кода.
>>1917108 Это да, но с башем часто проблемы возникают в том же вс код, просто из-за того что в юникс и NT файловые пути по-разному выглядят. Я бы не сказал, что его юзать сильно удобнее.
>>1914638 (OP) Анончикия, есть где-нибудь инфа, как использовать БЭМ, а именно какие свойства применять для БЭМ элементов? В bem.info не нашел. Вот то есть я могу для блока использовать размер шрифта или padding? А если блок - это слайдер и у слайдера есть кнопки для стрелочек, мне все равно не желательно использовать position:relative; чтобы спозиционировать стрелки от слайдера? Вообще, правильно задавать цвет фона, размер шрифта в блоке и потом, если нужно переопределять свойства через модификаторы или блоку не задавать цвет фона, а сразу задавать цвет через модификатор? Есть место, где показаны для каких элементов БЭМа какие свойства можно применять? Я практиковаться хочу, а вообще не понятно как БЭМ использовать. Какие свойства css куда применять.
>>1917718 Короче говоря не важно почему в итоге я так планирую сделать, просто есть некий id у обычного html элемента. Допускается ли, что у id будет попросту пустое значение id=""?
>>1917721 >Допускается ли, что у id будет попросту пустое значение id=""? Кем, куда, для чего? >не важно почему в итоге я так планирую сделать Ну и какого ты ответа тогда ждёь?
>>1917724 >>1917727 Да не, вопрос был в том, может ли это создать какую-то потенциальную ошибку, о которой мне не скажут сразу в консольке. У меня просто есть один плагин, который добавляет стиль к элементу с определенным id. И в зависимости от этого условия я могу передать или не передать значение в этот id. Вот потому и вопрос, допускается ли такой код вроде: <div id=""> жопа </div>
>>1917724 >>1917727 Чет я ору нахуй, после 12 часов кодинга я уже перестаю понимать о чем я сам пишу. Блядь обычный id у html тега сука, там их миллиард чтоли, тот АЙДИ который у ХТМЛ элемента АЙДИ. Вот этот АЙДИ. Если он будет пустым это ничего страшного или пизда, и id всегда должен что-то принимать в себя, если уж он вообще есть у хтмл тега.
>>1917733 Пустая строка - тоже значение. И если у тебя будет более одного такого айдишника, то выбираться селекторами будет только один. Нахуй ты вообще манипулируешь `id`? HTML дал ему классы ну или на крайняк `data`, называй как хочешь, хоть по БЭМу-хуему, хоть по своей мамаше. Не хочу, говорит, классы, хочу жрать говно и ставить пустые строки в айдишники.
>>1917594 Не нужно использовать БЭМ, это deprecated технология, она давно пылится в мусорном ведре. Используй css modules, с ними можно именовать классы как тебе удобно.
>>1917766 >>1917942 Т.е. нет, вопрос в том, что уникальное значение должно быть только если условие true, а если false, то я думал передать пустое значение. Есть ли какое-то значение, которое id воспримет примерно так же, как react воспринимает, если в качестве элемента для рендера ему передать null? Какое-то безопасное и понятное для него ничто?
>>1917942 Значение `id` - только строчное, так что передастся "null", что тоже не уникальное значение. >>1917947 >Т.е. нет, вопрос в том, что уникальное значение должно быть только если условие true, а если false, то я думал передать пустое значение. Что за хуйню ты там говнокодишь? Ты вообще не должен менять уникальный идентификатор вручную. В лучшем случае только при создании элемента его присваиваешь, это единственный случай, когда будешь писать `element.id = x`. Если тебе нужно не присваивать значение свойству, то просто не присваивай. Если же нужно удалить, то есть `removeAttribute()`.
у меня два контейнера с минимальными отличиями. разница один дополнительный экшон в редусере, рендер немного(но ето похуй) и 1 ф-ия. я хуй знает как реюзнуть код так чтобы на максималку. сделал вот так https://www.diffchecker.com/NmrErtQU редусер и куча барахла реюзается из общего файла https://pastebin.com/HnecQEgF но все равно кажется что я или пиздец изобрел какой-то странный велосипед или остановился на пол пути, хуй знает... неужели нет способа лучше реюзнуть код в таком случае? в ооп просто наследуй@переопределяй нужные методы/пропсы. а тут пиздец че городить пришлось, я в шоке
>>1918027 Если полиморфизм ты ищешь, то передавай функции в функции, или оборачивай функции в функции для добавления функциональности. Погугли про state reducer, там тебе расскажут Код не смотрел
>>1918027 в итоге 3 файла, кода стало больше и дублированный код не уменьшился в объеме,а уменьшилась дублированная логика,какая-то ее часть стала общей как и нужно, но это залупа какая-то. композия сосет у наследования. даже если можно реализовать это как-то лучше чем я сделал,я ебал такую сложность -нахуя она нужна,какие профиты?
Реакт ребзи, у вас на работке какие компоненты чаще пилят, классовые или функциональные? Именно нормальные компоненты с логикой, а не кнопочки с двумя пропсами. Просто интересно.
Можете ли пояснить какие могут быть проблемы у юзеров windows xp с современными веб-технологиями? Могут ли в браузере как-то хреново обрабатывать библиотеки джаваскрипта? Или это скорее всего из-за устаревших версий браузера? Интересует конкретика. Фраза "эта винда не поддерживается давно и может быть всякая херня" всё объясняет?
>>1917753 поясни в чем принципиальная разница: -использование npm пакета для dnd -копипейст куска кода со стаковерфлоу для какой-нибудь хуйни вроде парсинга или создания ключей объекта на основе элементов массива
>>1918237 >-использование npm пакета для dnd Документация
>-копипейст куска кода со стаковерфлоу для какой-нибудь хуйни вроде парсинга или создания ключей объекта на основе элементов массива Если копипаст заметен, значит ты даже не удосужился разобраться в этом коде, переименовать переменные и причесать стиль. Значит в качестве разработчика ты не пригоден.
>>1918194 Функциональные офк. Документация с примерами у новых библиотек для React JS и React Native по большей части написана с применением функциональных компонентов, т.к. зачастую предоставляются удобные хуки. Сами разрабы фейсбука говорили в документации, что они видят реакт именно в функциональном виде и будут дальше его продвигать таким.
Вкатываюсь в JS. Есть два пути, посоветуйте, какой выбрать:
1. Учебник Кантора. Выглядит устрашающее, такое чувство, что на его изучение придется потратить не один месяц, но практики в нем мало, как я понимаю. Только описание языка и упражнения к этому описанию. Многие говорят, что лучше использовать этот сайт как справочник, а учиться по другим материалам.
2. Видосы на ютубе. Из плюсов: если не понял что-то, то всегда есть видео, где то же самое будет объяснено другими словами или из другой перспективы. Можно сразу приступить к практике - есть много видосов, где пилят какие-то проекты. В отличие от курсов на ютубе плюрализм (в отличие от юдеми): смотришь разных блогеров и учишься разному написанию кода.
Я склоняюсь ко второму варианту. Алсо посоветуйте нормальных каналов на ютубе. Из тех, которые я знаю - freeCodeCamp, The Coding Train, Web Dev Simplified, Шемсединов, IT-KAMASUTRA, Петриченко, Лаврик, Минин.
>>1918299 >Про дефер знаю. >Обычно ожидал увидеть перед </body> Нихуя ты не знаешь, дефер как раз для этого и сделан, чтобы скрипты в конец тела не писать.
>>1918277 Ну, я год назад вкатывался, но в бекенд на шарпе, уволили быстро, сейчас во фронтенд пытаюсь. За сегодня повторил хтмл и ксс, чуть джса набросал, простенькую работу с ДОМ, ивент с кнопкой запилил. Дальше пойду по сайту с оп-поста.
У меня есть один компонент вписанный в другой, выглядит так:
<Компонент1> <Компонент2/> </Компонент1>
Рендерится страница, и между компонент1 и компонент2 появляется DIV с overflow: hidden, который хуй пойми откуда берется и режет тень элемента из компонент 2. И я не ебу совершенно как к нему доступ получить, он не является потомком компонента 1 в коде. У него нет никакого класса. Просто див, который обнуляет стили, при том что в глобальном стиле у меня его тоже нет.
>>1918413 Ну да, да я и на джсе чувствую как проще писать. На шарпе еще ботов писал после увольнения по сути бот-парсер с нотификатором, но чтобы на работку вкатываться не хотел.
>>1918412 > появляется DIV с overflow: hidden, который хуй пойми откуда берется Просто так он взяться не может. Ты же в курсе? Уверен что нет глобальных стилей? Посмотрел в браузере от какого css класса он наследует overflow?
>>1918418 >>1918422 React+nextjs Он не наследует стиль, этот div сам имеет у себя style=overflow-hidden, я ору нахуй с этого блядь, как будто просто свинью мне кто-то подложить решил. В коде просто нет никакой прослойки между компонентами
>>1918426 >>1918418 Если делаю Компонетн1 > overflow visible !impotrant то он перезаписывает оверфлоу, и показывается все нормально. Значит этот призрачный див уже после компонента появляется. Откуда? Я понятия не имею
>>1918426 Т.е. Если ты уберешь компонент1, то и дива не появится с оверфлоу, верно? Что будет, если ты отрендеришь только компонент1 (без компонент2)? Див появится?
>>1918443 >>1918433 Ну пизда, убрал компонент2, и таинственный див тоже исчез. Ну буду искать тогда, откуда во втором компоненте он берется. И на всякий случай !important в проде это пиздец или можно?
>>1918446 Вообще пользоваться !important это оооочень плохая практика. Она делается только когда действительно нет выбора, либо нужно реализовать хот фикс. Я бы настоятельно не советовал
>>1918450 Это уже устаревшая практика. Во времена фреймворков и библиотек без important не обойтись, иначе вот так вот и будешь ебаться с дивами появляющимися неоткуда.
>>1918446 >important Абсолютно похуй. Мне про то, что это кококо плохая практика на моей памяти только всякие админы затирали. Фронты лепили, слегка поморшившись. Ну и блядь, тут именно что хотфикс!
>>1918313 >Алсо посоветуйте нормальных каналов на ютубе. Зачем вообще что-то сомтреть на ютубах по 15 минут, когда это можно прочитать за минуту? Я уже не говорю о том, что прочитав какой-нибудь MDN можно быть уверенным (на 95%) в достоверности инфы в отличии от очередного инфоцыгана, который преподаёт "курс до мидла за один месяц"
>>1918469 >>1918454 Править исходники npm пакетов это еще больший пиздец? Нашел в общем, next/image оборачивает всё что выдает в свой див как раз с обнулением стилей, пиздец додумались же. Могу там буквально пару строк подправить, но... у тех, кто скачает мой код, этой правки ведь не будет. Вот и хули делать?
>>1918488 >Править исходники npm пакетов Это пиздец на пять порядков страшнее, вот этого реально никогда не делай если ты не владелец пакета, но ты не он. Поставь лучше important и не еби себе и людям мозг.
>>1914638 (OP) Надо бы запилить модальное окно для ввода некой информации пользователем, раньше не парился и юзал встроенную функцию prompt, теперь захотелось красиво это оформить на ангуляре. Что посоветуете сделать? Отдельный компонент пилить чисто для модалки? Кто-нибудь такое делал?
Должен ли ux-ui дизайнер самостоятельно подготавливать иконки и оптимизировать картинки? А то сижу, перерисовываю иконки, картинкам размер подрезаю, потому что оригиналы там апскейл в 4к из 256px и все такое. Это должен делать дизайнер или всем похуй?
>>1918423 М-да, это с каких пор отсутствие типизации = меньше думать. Это скорее больше геморроя, когда такие как ты высрут какаху, а тебе потом ее искать нужно.
ебать нам че больше не нужно декларировать типы объектов? чзх сидел долбил тридерево смотрю какого хуя не выдает ошибку а оно он че ебать до чево прогресс длошел скоро собак без презика ебать можно будет...
>>1918871 Нет же чел пчел, ты этим className на картинке изменишь класс как раз таки того элемента, который будет находится внутри безымянного дива. К нему добраться нельзя. Посмотри хотя бы исходник Image компонента. Он оборачивает все что ты в него передаешь перед экспортом
Да и заодно хочу узнать у вас, как вообще оценить эффективность своей работы? Недавно начал работать кодером и нихуя не пойму насколько вообще быстро я работаю, потому что не с кем сравнить. Какая вообще средняя эффективность по больнице у фронтендщиков? Хотя бы в общих чертах можете описать что вы делаете например за день работы?
>>1918876 Тебе надо попросить фидбек у менеджера, тиммейтов, и вообще всех с кем работаешь. Если это вызывает недоумение или лишние вопросы, то тебе надо сменить контору. Если в фирме нормально работает перформанс ассесмент, то у тебя вопрос «насколько хорошо я работаю» (то есть, «соответствую своей роли») просто не будет появляться. Тебе сами все расскажут.
>>1918874 Лепи тогда обычный `</img>`, хули выёбываешься? Этот компонент специально пропердолен для верселя, так что править его - гиблое дело. Ну или можешь селектором этот див выцепить и поменять в нём стили. Заодно создай тикет на гитхабе.
Ребятки где обычно лепят стили для вью? В самом компоненте или выносят в отдельный файл? Сделал 5 компонентов и чет стандартный подход типа index.scss нихуя не нравится, по моему проще в компоненте запилить scoped стили, или нет?
>>1918693 Хороший вопрос. Если вопрос касательно SVG-иконок, то я просто кидаю svg из фигмы своему PM, чтобы она их обработала, а потом я конвертирую их в шрифты. А если обычные картинки, то оптимизация в jpg - это пара секунд в фотошопе. Но я соквасен, бывает ебля с такими вещами. У меня тоже полушаражка
>>1918874 Не, пчел. Из React компонента можно обратится напрямую к DOM, даже к тем элементам, к которым напрямую доступ ты не получишь. Просто понадобится useRef с useEffect. Я накидал пример. Посмотри. Надеюсь тебе это поможет
>>1914638 (OP) Вкатун. Какими аргументами убедить кабана взять меня на удаленку? Я блять видел на хх, что мидлов из той же конторы, где мне перезвонили, приглашают на удаленку. надо было на миддла сразу собеситься хы
>>1918972 Конкретного кабанчика вряд ли убедишь, но нарабатывай опыт, делай портфолио, могут взять на удаленку как раз из-за возможности платить тебе поменьше
>>1918909 Спасибо пчеличандрий, даже расписал всё. Про доступ к дому я знаю, но шатать дом ради одной css строки изначально еще не хотелось, пока сделал с important
У кого-нибудь было такое, что в фигме у шрифта один размер, а когда его отрисовываешь на странице с той же высотой, размер меньше? От чего такое может быть?
>>1919041 >Какие у Deno перспективы? Хороший вопрос. Может быть его можно будет юзать для чего-то серьезного, типо банковских приложений. А вообще я не бэкендер
Как грамотно сделать SPA приложение, а именно аутентификацию в нем? SPA приложуха как правило юзает API. Можно ли сделать так, чтобы это API нельзя было юзать извне SPA приложения, а только на самом сайте? Я ведь смогу написать какую-то левую прогу и получать данные с сервака сайта, спиздив при этом токен авторизации с кук на сайте, или смотря где он хранится. Тупо не могу нагуглить.
>>1919163 > Можно ли сделать так, чтобы это API нельзя было юзать извне SPA приложения, а только на самом сайте?
Нельзя. Я просто напишу программу, которая симулирует авторизацию на твоём сайте и буду пользоваться твоим API так будто я пользуюсь им на сайте. Это если учесть, что API у тебя только для авторизованных пользователей доступно.
за 10 дней сделал приложуху для завода. strapi на беке, react на фронте. на фронте получилось 2.5к строк кода. 6 интерфейсов. 1 для работника сканирующего лоты своей готовой продукции 2 для проверяющего с возможностью указать кол-во брака в любом лоте 3 для мастера смены для указания минут простоя рабочих за день и интерфейс подтверждения простоя для менеджеров др. департаментов 4 таблица со списком всех лотов 5 аналитическая таблица с указанием эффективности рабочих по отдельности за выбранные дни, кол-во выполненных лотов, брак, простой 6 импорт необходимых словарей из АБАСа(erp которую использует завод) и экспорт табличных данных в csv есть авторизация и раздельные права доступа. дизайна и тз не было. все сделано со слов директора. директору все нравится, готов башлянуть. ВНИМАНИЕ ВОПРОС: сколько брать денег?
Я: написал 80% клиента менторю и обучаю новых разрабов веду один проект выхожу на сеньора если все норм весной
Тимлид делает мне заявочку, что я виноват в том что 2 наших клиента разошлось в кодовой базе и что я считаю что я всегда прав. Причем мог бы сказать и тоном помягче, но выдал как здрасте.
Что делать? Планирую после релиза проекта искать новую работу. Но хотелось бы уже получить лычку сеньора, тем более что в команде в принципе вроде всем нравлюсь... Чяднт?
>>1919201 >написал 80% клиента Да похрен сколько ты чего написал. Вопрос к качеству написанного. Я тоже уйму говнокода породил в своей жизни, как на проектах так и для себя, дальше-то что?
>менторю и обучаю новых разрабов Тут твое ЧСВ может разгуляться. Нашел себе отдушину, молодца
>веду один проект Опять же вопрос к тому как ты его ведешь
>Тимлид делает мне заявочку, что я виноват в том что 2 наших клиента разошлось в кодовой базе и что я считаю что я всегда прав ...
>>1919201 >и что я считаю что я всегда прав Это самая главная пробелма всех этих мидлсеньеров. Дикая самоуверенность, непокладистость и отрицание любой критики.
>>1919201 > планирую после релиза проекта искать новую работу > хотелось бы уже получить лычку сеньора Ты определись что тебе нужно. Все компании по-разному оценивают уровни разработчиков, то что тебе тут помидора дадут, не значит что другие компании будут тебя таковым считать. Да и зачем это звание ради звания, пусть как угодно называют если платят и относятся нормально
Можете подсказать какие-нибудь охуенные гитхаб репозитории с сайтами сделанными на nextjs и typescript? Хочу посмотреть как всё делать грамотно и что вообще там сеньеры с большими писями пишут
window.addEventListener(scroll, doSomething) Это ведь очень частое событие во время прокрутки? Если к примеру я хочу во время прокрутки скрывать что-то на странице? Если я какой-то таймер добавлю это норм, или нужно как-то по другому отслеживать прокрутку страницы?
>>1919537 >Если я какой-то таймер добавлю это норм, или нужно как-то по другому отслеживать прокрутку страницы? Т.е. не отслеживать, а обновлять состояние, чтобы оно не миллиард раз за прокрутку хуярило
>>1919537 Добавь debounce + проверяй насколько прокрутка изменилась. >>1919201 >Но хотелось бы уже получить лычку сеньора Можешь просто всем говорить, что ты был сениором-помидором. >>1919195 Если честно, за то что ты в приложение уровня "сделать таблицу с выгрузкой в csv" написал на реакте, да еще и на 2.5к строк, я бы тебе по ебалу прописал вместо оплаты. Еще наверное какой-нибудь редакс подтянул
>>1919559 >Добавь debounce + проверяй насколько прокрутка изменилась. Только получается мне нужен throttling же, потому что иначе пользователь может пролистать страницу долго до самого низа, и только потом элемент исчезнет. Просто для понимания процесса спрашиваю.
Throttling это когда например ты чекаешь значение прокрутки каждую секунду. И если значение прокрутки выполняет условие, запускается функция, но запускается проверка условия каждый раз, даже если пользователь 10 лет непрерывно будет на одной позиции стоять.
А Debounce, это когды ты запускаешь таймер после любого изменения прокрутки, и таймер начинает считать заново после каждого изменения значения прокрутки, и только когда значение перестало меняться, таймер досчитывает до конца, и выполняет функцию, но больше она тригериться не будет?
>>1919626 Да, для обуздания слишком частых событий прокрутки тебе нужен throttle.
> Throttling это когда например ты чекаешь значение прокрутки каждую секунду. И если значение прокрутки выполняет условие, запускается функция, но запускается проверка условия каждый раз, даже если пользователь 10 лет непрерывно будет на одной позиции стоять. Нет, throttle без вызова сам ничего не чекает. Вот тут хорошо написано: https://underscorejs.org/#throttle
>>1919366 Сервер отдает браузеру js-файлы. Тот код, который собирается из используемых в твоем проекте библиотек, собирается в файл vendor.js отдельно от файла с кодом твоего собственного приложения, так как предполагается, что 1) зависимости в твоем проекте меняются гораздо реже чем твой собственный код 2) код используемых тобой библиотек значительно больше твоего собственного кода. Выделив библиотечный код в отдельный файл, этот файл может быть закэширован, например, браузером, соответственно его не надо будет качать заново, соответственно, сайт откроется быстрее. Разделение vendor.js/приложение.js самое базовое, в случае больших приложений код делится дальше чтобы поменьше качать лишнего.
>>1918241 Современный Реакт довольно отличается от изначального, и разрабатывался во времена когда классов в JS вообще еще не завезли. Если вкратце 1) Нужно было как-то организовывать кодовую базу в целом и как-то хранить состояние компонентов в частности, и казалось что концепция классов хорошо для этого подходит, тем более, на бэковых языках этот подход уже давно был в ходу. Первый прототип Реакта писался с оглядкой на XHP (php-шный), в котором все хтмл-элементы были описаны классами. По поводу использования классов в прототипе можно глянуть например https://github.com/jordwalke/FaxJs/blob/master/coreModules/Fax/FEvent.js 2) Наследование опирается на идею, что у тебя есть хорошо определенный и редко меняющийся контракт и есть взаимозаменяемые объекты, с общим контрактом но разным поведению. Реактовские компоненты этому не очень соответствуют: такие ситуации встречаются и не сказать что редко (особенно в библиотечном коде), но в прикладном мире у тебя часто меняется контракт (пропсы компонента), а поведение более менее однообразно. Соответственно, в Реакте использовалось наследование, но только на один уровень - все базовые штуки типа методов жизненного цикла и т.д. наследуются от основного компонента, а в твоих собственных компонентах оно более удобно заменяется композицией.
Практики типа полиморфизма тоже используются, но под капотом, например предоставляя тебе одно апи при концептуально разных рендерерах (браузер и мобилка) 2)
>>1919681 `Date()` хранит в себе количество миллисекунд с начала юниксовой эры. Вот и сам подумай, сколько миллисекунд ты передаёшь, указывая только месяц и год.
>>1919721 Я вот тоже. Пока то, что смотрю по Vue мне не сильно нравится. Реакт нравится больше. Но щито поделать, надо в это тоже вкатываться. Да и вдруг в будущем мнение изменится
Почему спамит ворнингом: "Cannot play media. No decoders for requested formats: video/webm, video/webm"? При этом видео проигрывается нормально. Браузер фаерфокс.
>>1919833 Зависит от твоих вводных данных и функциональности браузера. Если C++ и Qt знаешь, то можно уложиться в полгода для браузера с базовым функционалом.
>>1919867 Например зомби-стейт, потому что порядок обновления приконнекченных компонентов совсем не тот же самый, что в простом дереве компонентов и регулярно меняется от версии к версии
Не понимаю как с useEffect можно повесить window.addEventListener.scroll только один раз? Когда я передаю в зависимости вызываемую функцию, addEventListener вешается каждый раз заново ведь? Если я в функции вывожу что-то в консоли, то вижу, что при каждом изменении выводится все больше и больше консоллогов, но если передать в зависимости пустой массив, без тригерящейся функции, то она срабатывает вообще только один раз, посколько в зависимости не передается функция. Как быть?
>>1920054 т.е. получается так, что после первого изменения позиции страницы выходит один консоллог, после второй их уже два, потом три и всё больше и больше. Как будто event listener каждый раз вешается заново
>>1920054 Что-то ты не так делаешь. По сути постановки, тебе нужно всего лишь один раз повесить твой хэндлер на событие скролла: для этого тебе нужно передать в зависимости пустой массив, а в самом эффекте назначить хэндлер через addEventListener и вернуть коллбэк очистки, который твой обработчик скролла уберет.
По тому что ты описываешь (передаешь пустой массив и твоя функция срабатывает один раз), мне кажется что ты в addEventListener передал не саму функцию, а результат ее вызова addEventListener('scroll', puk()) а надо addEventListener('scroll', puk) Если сделал как в первом варианте, то пук вызовется в момент регистрации эффекта один раз, а все события скролла будут обрабатываться тем, что вернула твоя функция (возможно ничем, если она void)
>>1920264 Там у меня ошибка была в том, что я часть функции описывал в самом листенере. В итоге переписал нормально, и всё заработало. Но вот пустой массив все равно не работает, и все выполняется однократно. Я передал в зависимостях саму функцию, и тогда всё работает.
Решил я вкатиться в js Мне для себя, не на продажу кодить. Python медленный, а js вроде ок - так вот и вышло, что на нём начал. Ещё на что то перекатываться не хочу, хоть и для моей задачи он вроде как не оптимален
Дрочу сейчас генетический алгоритм. В однопоточном режиме код выполняется и всё работает, кроме всех доступных ядер процессора. И я очень захотел это исправить, а то долго ждать результатов приходится.
Попытался в worker_thread - вроде получилось. Воркеры отрабатывают, процессор радуется нагрузке. Но только если запускать не в цикле. одной эпохой.
Собственно вопрос, а как бы организовать цикл, что бы каждую итерацию создавать новый пул воркеров (входные данные могут меняться от эпохи к эпохе) , многопоточно обсчитывать популяцию.
У меня получилось, что просто все эпохи запускаются асинхронно и выполняются параллельно. В общем понимаю что надо копать в сторону async/await какого нибудь да ещё и в цикле. Но уже пару вечеров потратил - не получается никак(.
Вот синтетический пример одной многопоточной итерации, которая работает как надо :
Анончики фронтендщики, поясните нубу: попап - это всегда всплывающая ебатория посреди страницы или же это может быть менюшка по клику? Хочу разобраться с пикрил, но не хватает ума. Прошу годных замечаний
>>1920643 Делаешь одну кнопку, при нажатии 'Cтарт' она перемещается на 100 пикселей вправо/лево и её текст меняется на 'Cтоп'. Таким образом легче будет делать адаптивный дизайн - кнопка просто будет менять текст и оставать на месте при маленьких разрешениях.
>>1920651 а зачем перемещать ее? наоборот фишка в том что для пользователя положение кнопки не меняется, как будто вообще это одна и та же кнопка. просто по нажатию на паузу, кнопка паузы пропадает, и на ее месте появляется кнопка "продолжить".
>>1920681 Перемещение моментально происходить будет, для пользователя это в любом случае будет как две разных кнопки, но вот в коде у тебя будет на 1 элемент меньше.
Почему негативные марджины считаются чем-то плохим? Несколько раз про это слышал в разных чатиках, но так и не понял в чем особенность такого подхода? Понятно что везде такое делать это хуета, но иногда это очень удобно
>>1920348 >попап - это всегда всплывающая ебатория посреди страницы или же это может быть менюшка по клику? Это уже зависит от того, что конкретному разработчику в голову взбрело при создании шаблона, так как у имён классов нет какой-то стандартизированной системы. Попап - это в первую очередь абсолютно спозиционированный элемент, а уж относительно чего он спозиционирован - дело десятое.
Что по бустрапу и js можно почитать, чтобы самые основы понять@осознать? Желательно с нормальными примерами кода. Я бэк сайта-петпроекта написал, все сделал, осталось чисто красоту навести. Я полный нуб в фронте, если что.
>>1920776 Мне не нужен css, мне нужен конкретно бустрап, в первую очередь. Я не собираюсь углубляться в тему, по крайней мере, пока что. Где можно какой-то гайд по самым азам бустрапа найти? Все, что я находил это или "вот скопируйте это себе и все будет норм", или "сейчас я расскажу что такое флекгрид и чем 3 бустрап от 4 отличается". Мне не нужно так подробно.
>>1920778 Любой "Bootstrap crash course" на ютубе + быстро прогляди доку наискосок.
Сам по себе БС - просто набор готовых ЦСС блоков, как в лего. Их не нужно учить, нужно просто знать, какие примерно они бывают, и все. Какую-то сложность может вызвать только кастомизация стилей, ну или гриды бутстраповские. Но там уже нужно смотреть под конкреные требования.
при работе на проекте весь бустрап изучается за полдня. Начни что-нибудь с ним делать, там сообразишь.
>>1920783 Я пытался, но мне бы что-то краткое. В духе "Короче сюда хуярим вот такие штуки, сюда такие, вот так вот размещаем, вот условный хеллоувород на примере которого стандарт написания показываем". Дальше я уже сам по потребностям гуглить конкретику буду. >>1920797 Да мне бы понять как к нему подступиться, где смотреть все стили, как эти флексы обычно размещают и два-три примера простеньких. Про ютуб понял, а есть книга какая-нибудь, мне просто так привычнее.
>>1920807 Бляха, не нужна там никакая книга. Ну загугли Bootstrap recipes, это готовые примеры кода, с демками. Пощупаешь как это в живую выглядит, страх пройдет.
>>1920807 Ты по сути хочешь хуярить CSS, не зная CSS. Ты же бэкэндер, любишь основы знать, вот и изучай основы CSS. Кстати половина опрошенных в https://2020.stateofcss.com/en-US/ люто его ненавидит, и это люди которые более-менее разбираются в css. Подумой, прежде чем тащить его в свой проект, даже пет. Для пета один хуй лучше свой css пердолить, так как любое свойство любого селектора можешь поменять по желанию левой пятки. С либами же придётся городить костыли, которые твой набор стилей ещё и привязывает к ней. >Про ютуб понял, а есть книга какая-нибудь, мне просто так привычнее. На мдн есть раздел вката в CSS: https://developer.mozilla.org/en-US/docs/Learn/CSS