Это копия, сохраненная 27 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в Ад.
Для программирования на HTML https://jsfiddle.net/
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката: https://developer.mozilla.org/
- Напишите ленивые map, reduce, filter, every, some, чтобы для цепочки вызовов этих методов, фактически происходила только одна итерация
- Напишите range(start, end, step) где step может быть нецелым, start и end как положительным так и отрицательным, и бесконечным в том числе
- Напишите класс итерируемой слабой коллекции, напримиер WeakSet, который был бы наследником оригинального WeakSet, имплементировал все его методы, но при этом по элементам множества можно было бы итерироваться.
>Ну а может лучше codewars
Ты не будешь там изучать внутренности js, ну может только для code golf.
мимо околотоп codewars
Если у тебя реакт, то зачем тебе чистый?
Правильно - для сервисов и редуксов различных.
Вот их и пиши.
Игрушку можешь попробовать написать.
https://scanlibs.com/roguelike-development-javascript-publish-phaser/
Но, лучше бы ты задрачивал чистый TypeScript для всего этого.
>>70950
Да потому что тут начали в прошлом треде писать, что тебе чуть ли не на ассемблере реверс инженирить нужно, чтобы джуном куда-то пойти. У меня изначально подход к изучению был практический. Сначала делал большой курс по реакту, и сделал несколько проектов паралельных. Потом думал сделаю то же самое с чистым жсом и все, можно катиться. Но тут блядь оказывается, что >>70887, еще нашел какие-то тестывые задания у кого-то на ХХ, там вопросы из разряда чему равно +!NaN, или можно ли после Catch еще разок Then вписывать, ну вот как нахуй всю эту хуетристику можно в теории выучить? Я понимаю что конкретно эти вещи гугляться за 2.5 наносекунды, но получается же что ЭТО КЛАССИКА, ЭТО ЗНАТЬ НАДО. А я по сути придумываю себе задачи, и дальше начинаю ходить по докам, гитхабам и и стаковерфлоу. В итоге понимание происходит гораздо лучше, да еще и определенные патерны начинаешь понимать в практическом виде. А потом вот возьмут и ебанут какие-нибудь подобные вопросы. И выходит так, что ты можешь запилить какую-нибудь SPA с редаксом, а кто-то нихуя сделать не может, но зато знает блядь, что оказывается вот после catch можно еще раз then делать. И хули делать со всеми этими мелочами? Просто как стих выучить язык что ли нахуй?
Двигать вьюпорт? А если добавление с анимацией? Как синхронизировать?
>делал большой курс по реакту, spa, редуксы
Типичный набор говноеда, который нихуя не понимает и не знает, какие нахуй проекты вася, туду или буксервисы и старыарсбд от говноедов это крупные проекты? Ххарк пьфу в твое ебло
Ой иди нахуй токсичная говнина, сначала тебе ответ нормальный написал, но потом подумал, что пошел ты нахуй просто, ублюдок
>но зато знает блядь, что оказывается вот после catch можно еще раз then делать.
Это ты неудачный пример привёл. Такое надо знать, иначе ты не понимаешь сути промисов до конца.
Да он нихуя не понимает. Если бы релаьно делал что-то на рякте, такое постоянно попадалосмь бы. А он тупо смакакил хуету с курсов и уверен, что вот все, теперь он про-реактёр.
Да в том и дело, что таких мелочей овердохуя, и как это можно просто запомнить?
>А тебе справочник для имплементации каррирования нужен, или стак оверфлоу?
Да чета из башки тяжело вспомнить особенно когда на собесе ссидит чсв мудак анальник который бугуртит если одну строчку в коде надо повторять
> как нахуй всю эту хуетристику можно в теории выучить?
А всё дело, что ее надо не выучивать, а изучать. Если ты что-то понимаешь, ты это блядь просто понимаешь. Это не надо как-то надрываться и помнить. Тебя не просят перечисялть названия методов библиотек и сигнатуры функицй, тебя про принципы спрашивают. Это азы, блядь.
Так же, как ты не силишься каждый раз вспоминая, по какому принципу работает сложение,и что умножение можно выразить через него, так же, ты не должен надрываться при вопросах почему при неявном приведение типов получилось именно так, а не иначе, и почему у тебя исключение в микротаксе не отловилось в основном потоке.
Ты вот спрашиваешь НУ КАК. Задайся вопросом, а откуда блядь все остальные это знают? Или по-твоему все сидят и дрочат отдельные кейсы какие-то?
Чтобы понять как работает жс, ДОСТАТОЧНО прочитать ебаную спеку от корки до корки, с дочитыванием непонятного в сопутсвующих источниках (хоть той же википедии, для определения терминов) Всё.
Но нихуя, никто, никогда, этого не делает. Всем хочется, чтобы все на блюдечке с голубой каемочкой. Увы и ах. Сверх-высококровневое программирвоание это высокие абстракции. И поясняют тебе принципы такими же высокими абстракциями, расчитыва на то, что ты сука такая,у же вкурил какого-нибудьТаненбаума или что-то в таком духе, и знаешь, как у тебя пекарня работает. А потому никто не ссылается в каждом абзаце на пояснение что такое control flow. Никто не разжевывает тебе в чем суть тех или иных концепций, потому чтов 2020 тебе уже написали целую энциклопедию, в которую ты можешь зайти на любой новый для тебя кейс с понятием и вкурить информацию, просерф все сопуствующие ссылки и темы. Поэтому когда от тебя просят написать ленивую реализацию какой-то хуйни, никто тебе в тз не вписывает четыре листа поясненяи с определениями концепции строгости вычсилений и чем вызов по имени отличается от вызовва по требованию или по значению. И все в таком духе.
У тебя, есть голова, и практически бесконечный, блядь, БЕСПЛАТНЫЙ, истоник знаний - целый, мать его нахуй, интернет. Но ты хочешь сидеть в треде, и вместо того, чтобы идти вбивать в гугл свои вопросы и ключевые слова, и ЧИТАТЬ, просить чтобы тебе дали что-то блядь почитать.
Как же вы заебали.
> как нахуй всю эту хуетристику можно в теории выучить?
А всё дело, что ее надо не выучивать, а изучать. Если ты что-то понимаешь, ты это блядь просто понимаешь. Это не надо как-то надрываться и помнить. Тебя не просят перечисялть названия методов библиотек и сигнатуры функицй, тебя про принципы спрашивают. Это азы, блядь.
Так же, как ты не силишься каждый раз вспоминая, по какому принципу работает сложение,и что умножение можно выразить через него, так же, ты не должен надрываться при вопросах почему при неявном приведение типов получилось именно так, а не иначе, и почему у тебя исключение в микротаксе не отловилось в основном потоке.
Ты вот спрашиваешь НУ КАК. Задайся вопросом, а откуда блядь все остальные это знают? Или по-твоему все сидят и дрочат отдельные кейсы какие-то?
Чтобы понять как работает жс, ДОСТАТОЧНО прочитать ебаную спеку от корки до корки, с дочитыванием непонятного в сопутсвующих источниках (хоть той же википедии, для определения терминов) Всё.
Но нихуя, никто, никогда, этого не делает. Всем хочется, чтобы все на блюдечке с голубой каемочкой. Увы и ах. Сверх-высококровневое программирвоание это высокие абстракции. И поясняют тебе принципы такими же высокими абстракциями, расчитыва на то, что ты сука такая,у же вкурил какого-нибудьТаненбаума или что-то в таком духе, и знаешь, как у тебя пекарня работает. А потому никто не ссылается в каждом абзаце на пояснение что такое control flow. Никто не разжевывает тебе в чем суть тех или иных концепций, потому чтов 2020 тебе уже написали целую энциклопедию, в которую ты можешь зайти на любой новый для тебя кейс с понятием и вкурить информацию, просерф все сопуствующие ссылки и темы. Поэтому когда от тебя просят написать ленивую реализацию какой-то хуйни, никто тебе в тз не вписывает четыре листа поясненяи с определениями концепции строгости вычсилений и чем вызов по имени отличается от вызовва по требованию или по значению. И все в таком духе.
У тебя, есть голова, и практически бесконечный, блядь, БЕСПЛАТНЫЙ, истоник знаний - целый, мать его нахуй, интернет. Но ты хочешь сидеть в треде, и вместо того, чтобы идти вбивать в гугл свои вопросы и ключевые слова, и ЧИТАТЬ, просить чтобы тебе дали что-то блядь почитать.
Как же вы заебали.
Ну вот здесь, представим что я пусть даже наизусть выучу всё https://javascript.info/try-catch тут на всей странице ни единого примера с then после catch
>не выучивать, а изучать.
Ну да, охуенно, а работать то когда, или лучше очередной пиздец изучу из списка
https://habr.com/en/company/mailru/blog/335292/
console.log.call.call.call.call.call.apply(a => a, [1, 2])
Не зря говорят, что главный навык пограмита - умение гуглить. Ты же не можешь на одном сайте найти нужную информацию.
https://javascript.info/promise-chaining
>е ни единого примера с then после catch
Примерно как в реакте ни единого примера как открыть модальное окно или программно нажать кнопку
Тебе кажется что этот список огромен, потмоу что ты дальше собственного носа не видишь. В основе там лежит с гулькин хуй концепций, которые надо понять, а все остальное строится и выражается через них.
Уровни абстракций - ты понимаешь, твою мать, что это такое?
Ты понимаешь, что умножение - это блядь сложение?
Куда больше заебали токсичные снобы, которые предлагают всем прочитать спеку JS, десять книг по паттернам и алгоритмам и собрать свой процессор из песка прежде чем что-то писать в треде.
устраивался на первую работу на 100к+ не зная что такое event loop, но умея что-то писать на реакте
>
>У тебя, есть голова, и практически бесконечный, блядь, БЕСПЛАТНЫЙ, истоник знаний - целый, мать его нахуй, интернет. Но ты хочешь сидеть в треде, и вместо того, чтобы идти вбивать в гугл свои вопросы и ключевые слова, и ЧИТАТЬ, просить чтобы тебе дали что-то блядь почитать.
Да в том и дело, сука, что информации овердохуя. Начиная от всех тонкостей CSS, заканчивая различными изъебствами фреймворков, да чтобы сраную кнопку передвинуть тебе уже ноду надо запускать, чтобы у тебя sass работал, ты же блядь прекрасно понимаешь, что я имею ввиду. И проблма блядь в том нахуй, что даже написав несколько сайтов на JS ты можешь ни разу не столкнуться с какими-то мелочами, по которым тебя потом будут ебать раскаленной кочергой в жопу на собесе, ПРОСТО ПОТОМУ ЧТО ТЕБЕ КОНКРЕТНО ЭТО НЕ ПОПАДАЛОСЬ И ТЫ НЕ ШЕЛ В ДОКУ ЧИТАЬ О ТОМ, ЧТО ТАМ БЛЯДЬ ЕСТЬ И КАКИЕ ТАМ БЫВАЮТ ИСКЛЮЧЕНИЯ, А ПОТОМ ЕЩЕ ПОНЯТЬ ЧТО ЭТА ДОКА БЫЛА НАПИСАНА 10 МИНУТ НАЗАД И ЗА ПОСЛЕДНИЕ 9 ЭТА ФИЧА ОБНОВИЛАСЬ 30 РАЗ И ТЕПЕРЬ ТАК ВООБЩЕ НИКТО НЕ ДЛАЕТ УЖЕ ЦЕЛЫХ 8 МИНУТ. Я блядь целыми днями учусь нахуй последние 4 месяца пидор ты ебанный и выдрочил весь реакт, все что это говно окружает и верстку вдоль и поперек сука, да можешь пиздеть о том как это просто, все просто от лени же в кодеры не идут наверное, заебал уже этот высокомерный принебрежительный тон, сука ну вот просто 100%й детектор пидорахи поднявшей своё обосранное рыло из корзины с свинячим кормом, и возомнившим о себе уже хуй знает что. Так что не надо тут пиздеть мне о том, что я не могу найти в интернете инфу, и тем более пиздеть о том, в каокй последовательности нужно это всё учить, потому что сейчас у меня куда больше практического понимания о том, как проектируются приложения и как вообще всё это изнутри работает. Вопрос был исключительно в том, какой из вариантов наиболее эфективный. Блядь, чтоб я еше раз о чем-то тут спросил, пиздец
Есть какие-нибудь современные гайды по грамотной верстке в плате расположения, отступов и т.п.?
Ты тупой куско говна, который не обращает внимание на то, когда и в каких контекстах это предлагают сделать. Когда человек пиходит и спрашивате - а как блядь? А почему? Всем похуй на вас долбоёбов. Никого вообще не ебет будете вы что-то учить или нет. Ттут люди сидят и тратят сове время поясняя вам, что следовало бы сделать, а ваше право прислушивать или нет.
Ты можешь дальше бегать по тредам и сгорящей жопой проецировать свою ошибку выжевшего причитая -ррря, душнилы, снобы, ррряя. Это тоже твое право. Только ты на вопрос - а как понять почему это работает так - не отвечаешь. Ты лишь отрицаешь.
Ты - ебаный кукаретик, которому повезло залетеь на рутиное место и ты сидишь в нем не развиваясь. Ты никогда не поднимешься выше, ты - червь, которого можно заменить. А меня нельзя. И в этом разница между нами.
БЛЯДЬ, да как я должен это загуглить, если это вообще НИ РАЗУ НИГДЕ мне не встретилось? Я что блядь телепатически должен был понять, что это вообще существует?
>, по которым тебя потом будут ебать раскаленной кочергой в жопу на собесе
Ты же ебанько, сойбой. Твоя задача - не пройти ВСЕсобеседования, блядь. А пройти одно. Где-то спросят одно, где-то другое, а скорее всего вообще дадут тестовое - делай и все, никаких вопросов лишних.
Ты вообще хоть на одном собеседовании был-то, чтобы вот так решать?
В посте, на который я отвечаю. Сидит какой-то дед в треде вкатывальщиков и пердит на всех мол «у вас есть целый интернет, хули вы сюда пришли, заставили меня бедного что-то писать, ох-ох». Хотя этот тред точно такая же часть интернета, как и Гугл со SO.
Так все верно. Найти ответ в интренете куда проще и лучше, чем спрашивать на двощах.
>НИ РАЗУ НИГДЕ мне не встретилось?
Ну так когда на собеседованиипопросят написать is-odd не забудь вспомнить все edge case
Я вот на это передергивание даже отвечать не буду. Ты просто не вникаешь даже в то, что тебе пишут.
Короче, мне похуй, сиди дальше. Задавайся вопросами.
Если тебе это не встречалось, значит ты ровно нихуя не делал с асинхронностью и получением данных с сервера. А значить знаний по теме у тебя не более 30%. Просто сидишь дальше учишь, теребишь пет-проджект. Со временем встретится.
>там вопросы из разряда чему равно +!NaN
1, потому что ! инверсит булевое значение NaN, которое равно false, которое становится true, которое благодаря унарному оператору + переводит true в числовое значение, которым является 1.
Как такое "в теории" выучить? Ну, например, читать книги.
Подожди, ты правда думаешь что своими охуительным поучениями типа «иди прочитай спеку от корки до корки», или «прежде чем подходить к высоким абстракциям надо вкурить Таненбаума» кому-то помогаешь, лол?
>Ты никогда не поднимешься выше, ты - червь, которого можно заменить.
Ебать прорвало. Ну съеби с треда на годик, инфа 102%, что никто этого даже не заметит.
>Если тебе это не встречалось, значит ты ровно нихуя не делал с асинхронностью
Может еще всякое говно типа Warning: a promise was created in a handler but was not returned from it.
Блядь, всё что мне встречалось с асинхронностью в 6 курсах, каждый из которых больше 10 часов по длительност, и 4 гитхаб проекта которые я разбиралсь и переписывал самостоятельно это -
запросы уровня : fetch/axios.then.then.catch
И никаких нахуй ни разу я не встречал примеров с then.catch.then...
Но конечно я с ассинхронностью не работабл бялдь
Когда я съебал на месяц, у вас тред за 1,5к постов в бамплимит ушел, потому что вы мудаки его даже перекатить не можете, чем я уже не первый год занимаюсь. Так что соси хуй дальше.
Да
>булевое значение NaN, которое равно false
И еще 100500 забавных историй, еще может номер страницы из спецификации выучить, как студенты языковеды могут по иероглифу сказать какой у него номер в словаре
То есть ты съебал, а тред внезапно не умер, общение продолжилось и на вопросы людям отвечали? Oh well. Не хочешь повторить? Я перекачу, обещаю.
Окей.
>Как такое "в теории" выучить? Ну, например, читать книги.
Ну примерно как конкуренси в жаба выучить, надо еще знать много английских слов и разницу между acquire, lock, take и какой вызывается где
Это базовые основы языка, и знаешь что самое смешное? Я даже не знаю что такое промисы сейчас. Не дочитал в спеке про это. То есть вот есть ты, макака которая учит язык по видеокурсикам каких-то даунов с Юдеми, а есть я, который учит язык по годным книжкам. И между нами девочками ты на стороне тех, кто не знает что NaN, undefined и null равны false. Может ты ещё и не знаешь про то какая разница между +0 и -0?
Смысл в том, что catch может быть в любом месте (с оговорками, зависит от того, что у тебя там в цепочке).
Он тоже не очень понял про лямбды.
Это не "усложнять концепцию". В математике у функции один аргумент. Несколько аргументов - это тоже один аргумент (кортеж).
Ну ничего себе мелочь, чейнинг прям на первой странице описания промисов есть, даже со схемой: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
Все помнить не надо. Основные вещи и так осядут в голове со временем, малоиспользуемая хуита выветрится. Вон как-то чел выше гордится знанием про +0 и -0, например, а я вообще не ебу в чем там отличия, хотя на JS уже почти 10 лет пишу.
> оказывается вот после catch можно еще раз then делать
Для этого просто нужно знать, что у промисов catch это алиас для then(null, ...)
>13 дней назад
Вот пиздить канделябрами надо пидоров, которые такое придумали.
Высосали из хуя user expirience, лол.
А потом смотришь на скриншот, и видишь фигу.
Табличка, кстати, так себе, потому что показывает конкретные примеры, но ничего не говорит про принципы приведения.
Это не обязательно (если вообще правда). Зависит от реализации.
Просто catch может быть объявлен в любом месте.
Я часто делаю просто в самом начале.
Есть программисты на языке, а есть программисты использующие язык. Сам понял, куда относишься?
Так это у него и не табличка, а хуета уровня wtf, которой ему подобные любят кичиться, не понимая, что все сводится к определенной логике этого самого приведения.
>==
Даже не смешно тебя разъёбывать. Всё, что тебе нужно знать об этой картинке, это то что non strict equality operator имеет left-to-right ассоциативность.
>Зависит от реализации
Не-а. Это именно алиас, причем в оригинальной спеке промисов кроме then ничего нет
https://github.com/promises-aplus/promises-spec
>Поэтому когда от тебя просят написать ленивую реализацию какой-то хуйни,
Это легко, когда ты постоянно занимаешься реализациями "ленивой хуйни", скажем чтобы олимпиадные задачки решать. А если таким не занимаешься или занимался давно, то сложно. Магией с NaN, неявным приведением типов и т.п. лучше избегать, писать более чёткий и понятный код, не закладываясь на специфику языка. Иначе ты делаешь багоёмкий неподдерживаемый код.
Программирование вообще широкая специальность, можно писать одновременно на разных языках, так сложно помнить всю специфику конкретных платформ.
>>71059
>И никаких нахуй ни разу я не встречал примеров с then.catch.then...
>Но конечно я с ассинхронностью не работабл бялдь
Вообще совершенно нормальная ситуация, когда ты ожидаешь ошибку и продолжаешь какие-то осмысленные действия после неё.
Естественный workflow, если подумать. И в принципе, если нужен спец на чисто асинхронные задачи, вполне разумно эти вещи спрашивать. Это довольно базовая вещь для асинхронности. А это довольно большое направление.
Хотя сейчас, мне кажется, всё-таки больше уходят в async/await, чем then/catch.
ИМХО дрочево на специфику языка разумно, если твоя работа делать какой-нибудь фреймворк или библиотеку. Там уже хочется, чтобы разработчики действительно хорошо понимали язык, а не просто хорошо делали прикладные вещи.
проблема что без типов оно обмякнет в библиотеке is-odd, а не в месте гле ты NaN соединил со строкой и оно там еще дальше варилось
Ну давай разберём по порядку:
"" == "0" - оператор проверяет два значения на типы. Если они одного типа, == оператор проверяет их "строго". "" - строка, и "0" - строка. "" строго не равно "0", значит false.
0 == "" - пустая строка преобразуется в число, true
0 == "0" - нумерическая строка преобразуется в число, которое равно 0, true
false == "false" - первое false преобразуется в 0, и т.к. слева стоит 0, == пытается преобразовать ненумерическое "false" в число, которое выдаёт NaN. 0 != NaN, false
false == "0" - ну тут всё понятно, true
false == undefined - очевидный false
false == null - false конвертится в 0, null равен лишь undefined
null == undefined - нутыпонел
" \t\r\n" == 0 - пустая строка становится нулем, true.
>>71105
Да какая разница, что ты принесёшь. Это только скажем всем о твоём невежестве.
Пишу аноном
false преобразуется в 0 по дефолту. true преобразуется в 1. Строки преобразуются в числа, если один из сравнимых типов является числом. Сначала false стал 0, "false" попытался конвертироваться в число, но это всё равно что попытаться конвертировать "zero" в 0.
>устраивался на первую работу на 100к+ не зная что такое event loop, но умея что-то писать на реакте
Когда это было? Лет десять назад вообще достаточно было по html одну книжку полистать.
Ага, а сейчас нужны только мегагении с 10-летним опытом. Спрашивают все - от программирования на перфокартах до эволюции ракоскорпионов.
Вот пример удаления обычных элементов, например если их более 3-х в списке: https://qna.habr.com/q/405031
А реально ли удалить как на примере с тем же ютубом?
Я бы в теории сделал что-то вроде content.remove(); А потом подгрузил первую полоску. Только вот не знаю реально ли так сделать?
Да я и PIVOT в sql запросах использую раз в 2 года загуглив как он работает, а вот на собесе спрашивают, еще и перечислить все оконные функции
А ты как хотел? На вакансию по сто-двести человек выстраивается, как думаешь кого возьмут, студня посмотревшего курс по реакту или господина способного пояснить за лямбда-исчисление и IEEE 754?
>или господина способного пояснить за лямбда-исчисление и IEEE 754
А такие не выстраиваются. Таких немного. За таким компании сами охотятся. У них и требования будут, что обосрешься. Плюс такие задроты всегда немного ёбнутые и нужно под них подстраиваться, а не наоборот.
>У них и требования будут, что обосрешься.
У таких тоже когда-то не было практического промышленного опыта, а только теория. Так что ты неправ.
Пять лет назад примерно.
Через сервис.
студня конечно. ему можно платить мало а задачи для бизнеса он будет делать, под присмотром конечно первое время.
Через emit в маму, через props в другую дочку.
Он ощущался будто подгретый студень, я обернулся на него - да это ж Путин, ахуеть. Тот час затанцевали тараканы мураши, пока Владимир проникал в меня рывками я решил дробить себя на выдохе постыдно, лопотать, и тут он вынул хер и на лицо спустил мне, благодать.
> When a request is aborted, its readyState is changed to XMLHttpRequest.UNSENT (0) and the request's status code is set to 0
Надо тогда проверять вот на это и если выполняется, то не режектить а резолвить
>ленивая цепочки вызовов
>map, reduce, filter, every, some
>фактически происходила только одна итерация
У тебя самого в голове всё сходится?
promise.then(succes,error) ;
или
promise
.then()
.catch();
Так в том и суть задания, чтобы превратить цепочку методов, каждый из которых ебашит свою итерацию, только в одну эту самую итерацию.
Думаю, это должно решаться путём функциональной композиции.
Это называется ленивая композиция
Ну посмотри в документацию и вопросов глупых задавать не будешь.
>is-odd
https://www.npmjs.com/package/is-odd
Я думал это местный мемес, пиздец, нахуй оно нужно? Я чего-то не понимаю?
>Он был включен в несколько очень популярных библиотек
Нет, серьезно, кроме шуток, целый модуль, который просто проверяет x%2===0? Он что-то еще делает? Зачем ставить модули, которые настолько очевидные и простые? Какой в этом смысл? Есть вообще какие-то ограничения по использованию модулей, или можно делать с ними все что хочешь, и использовать их в любых количествах?
toT: (player) => {},
toCT: (player) => {}
}
пойдёт такое название для объекта муве? по сути это же объект, а не функция, а название глагол
>там вопросы из разряда чему равно +!NaN
Все эти эти вопросы с подъёбами легко гуглятся по запросу "вопросы на собеседовании по js" или по типу того. Причём читать нужно и в рунете и в ангельском.
Вопросы могут казаться тупыми, но они отражают твоё погружение в язык. И да, они учатся.
Пожалуй это самый охуенный эффект, который я только видел на сайтах
Что это за объект? Какое состояние он отражает? Это карта? Тогда какой это нахуй move?
Хуле нет?
>Как будешь выучив отвечать на вопрос - почему?
Ты вместо того чтобы такими тупыми вопросами в треде срать, лучше шёл бы учить язык, доболоёб.
А то если ты выучил, а на вопрос "почему" ответишь не можешь, означает, что ты инвалид.
Это значит, что ты языка родного не знаешь. Выучить - это вызубрить. А то, что ты имеешь ввиду - это изучить. Выучивая ты ничего волшебным образом понимать не начинаешь, хуесос.
Это не я тебе ответил, чел
> Dependencies (8)
> is-eq-three is-number is-string is-undefined is-null jquery jquery-basic-arithmetic-plugin is-true
Удачи тебе с синонимом выучить<->сделать, шиз.
Мне конечно похуй на ваш срач, но отвечаешь вообще не тому человеку, который этот ворос изначально задавал, так что не понятно, о чем вы тут вообще спорите
> несколько очень популярных библиотек,
половина этих библиотек это китайцы, вот и раздутые номера
Это ручки и они ручкают
Так блин, зашел на один сайт, захотел посмотреть что в консоли будет выводиться при общении с сервером, через chrome dev tools отредачил главный жс-файл (там ванильный жс был) и поставил лог в одну из js-функций типо processServerResponse
Но по факту нихрена не произошло, лог не работал будто его не было. Что за хрень, мне казалось так можно вносить изменения в жс-код на клиенте
Но ведь редактирование жс кода по идее должно вызывать изменения, нет же? Редактирование html-разметки мгновенно показывает изменения
Для всего этого есть куча говна типа рыксы и итерабл экстеншс от тех же создателей. В JS дефакто нет ленивости в классическом понимании (рантайм не обеспечивает), есть генераторы и механизм подписок (висит в пропозалах спеки уже который год, если не считать кастомных решений).
Думаю, что дело в том, что жс уже загружен из кода.
Т.е. (пере)определить в консоли фукнцию или переменную, например, ты можешь.
И она будет (пере)загружена в этот момент.
А когда ты редактируешь скрипт в тексте страницы - он не перезагружается.
Но, это не точно.
Как?
> коммитить каждый хеллоуворд на гитхаб, или лучше что повменяемее туда сохранять?
Да сразу сохраняй как пакет в npm
Можно, потом удали совсем позорное.
>is-hello-world
Самый умный чтоле
https://www.npmjs.com/package/simple-hello-world-example-npm-package
Просто нужно установить isTrojan
{"objectType": "", "name": ""}
Мне надо чтобы в начале такого списка всегда были объекты с "objectType": "action" а если таких нет то ничего не делать. Как это наиболее изящно в жс сделать?
Нужен скрипт который будет генерить is-n и постить новый каждый день.
list = [{"objectType": "", "name": ""}, ...].sort((x, y) => -(x.objectType === 'action'))
И почему?
Yes
Самописный фреймворк.
Ангуляр, конечно. Остальные фреймворки слишком запутанные и не понятные. Ангуляр, помимо адеватной структуры, еще и заточен под работу с тайпскриптом, что не может не радовать.
Реакт только если какая-нибудь совсем простая хуйня с графкулем. Ну или если фронт на кложе какой-нибудь
Ангулар единственный полноценный веб фреймворк сегодня
Слишком мало вводных данных
Делай своё, после чего смотри на чужое и сравнивай оба, стремись чтобы твоё превратилось в чужое, с поправкой на то что чужой код это код грамотных и опытных специалистов.
Делай проекты по тому что знаешь
Не нравится или не получается - перекатывайся в другой язык, хотя бы средненькие знания жса уже будет большим плюсом
>как изучать JS когда я знаю основы
https://www.ecma-international.org/ecma-262/
От начала до конца читаешь
@
ЖС изучаешь
>>72038
Все больше прихожу к тому, что нужно продолжать учить так, как я учил до этого -> практикой и просмотром кода на гитхабе.
>>72039
Это всё прекрасно, я бы и вопросов не задавал, проблема тут только одна, без практики, т.е. хоть сколько-нибудь реального применения знаний на проекте это всё выветривается так же просто как и прочитывается.
>без практики, т.е. хоть сколько-нибудь реального применения знаний на проекте это всё выветривается так же просто как и прочитывается.
А ты уверен, что это не надуманная мантра, которую ты повторяешь сам себе?
Эту мантру подтвердит любой человек хоть сколько-нибудь знакомый с процессом обучения.
Ну я не первый день учусь же. Кроме того, прочитывание всего того, что ты скинул никак не конфликтует с практикой само по себе. Но за ресурс спасибо, я до этого только MDN считал официальной докой ЖСа, эту не видел
Всё так
Если тебе в реальном проекте на реальной задаче и понадобится какая-то теория, полностью осозновая цель ты осилишь любую хуергу вплоть до вышмата за пару дней
Только еще одна хуйня: барахтаясь на галерном дне за бутерброды на самом деле проекты могут быть даже легче твоих петов, так что не перенапрягайся сильно
>на самом деле проекты могут быть даже легче твоих петов
Как же хочется править размер кнопок на крудоформах и получать 300ксек, эхх.
Фреймы уже стали немодные и ширину навигации слева не изменить. С, значит Современные технологии.
Через инспектор поменяй, тыж программист!
>полностью осозновая цель ты осилишь любую хуергу вплоть до вышмата за пару дней
Кек, нет.
>>72064
Расскажи мне про "процесс обучения", ибо я на 100% уверен что под этим набором букв нет никакого смысла, и ты используешь его как баззворд.
>>72068
>Ну я не первый день учусь же
Практика и просмотр кода на гитхабе это далеко не "учусь". +!NaN, как мы выяснили в этом треде, на практике понять ты не сможешь.
Приди на большой проект, побеседуй с большими дядями, у каждого из которых большая пися. Они научат уму-разуму
Документация на сайте охуенна.
Куча инфы в интернете.
Куча курсов, видео и т.п. - гуглишь vue tutorial 2020
Например - https://scrimba.com/topic/vue
Тут всё зависит от того, что ты на данный момент знаешь.
И насколько тебе понятны основные идеи.
Когда говорят про React, то везде, начиная с его документации, заканчивая собесом в веб студию в Бердянске, будут говорить (спрашивать) о его эффективности. Типа виртуал дом, перерисовка, вау. Когда я только начинал учить, то думал, что речь идёт о сравнении с Ванилой (лол), потом оказалось, что с фреймворками того времени (2013) Но поясните, зачем сейчас ставить это в главу угла, если тот же Ангуляр и вью обгоняет Реакт в разных ситуациях? Логичней было бы на месте фейсбука рассказывать про его мобильность и легкообучаемость, что так завлекает всех от вайтишников до умелых спецов, которым просто лень сидеть за докой.
У Реакта маркетинг. Мы всеголишь библиотека. Посмотрите как мы мало весим и вообще какой мы гибкий инструмент. То что на этой либе нихуя вообще нельзя сделать умалчивается конечно.
дяди с большими писями управляют кодерками и в душе не ебут за код
>Когда говорят про React, то везде, начиная с его документации, заканчивая собесом в веб студию в Бердянске, будут говорить (спрашивать) о его эффективности.
Реакт создавался с фокусом не на производительность, а на удобной и предсказуемой модели преобразования стейта в DOM. С чем он собсна и справляется. Хуй знает откуда ты взял эту телегу про его невероятную эффективность.
Потому что в фаанговых поделках хватает ебовости архитектуры для выстраивания однонаправленного флоу на фронте
Или ты думаешь что 250к$/год жс инженер редаксы к реакту коннектят?
>а на удобной и предсказуемой модели преобразования стейта в DOM
Но, потом что-то пошло не так, лол.
На практике - стало не очень удобно, и не очень предсказуемо.
Единственно правильный ответ, почему люди продолжают использовать реакт - хуй знает почему, вот почему.
Теперь мне нужно чтобы эти объекты взаимодействовали друг с другом, типа:
move.allToSpectators( players.getCtTeam() );
Что делать? Писать функции теперь?
Теперь тебе нужен объект, который будет представлять собой модель игры. Он должен управлять другими объектами.
Как ты мог считать mdn официальной докой, если на странице википедии написано ровно обратное. Или ты даже википедию не додумался прочесть?
В программироаании только две полблемы, мань, это именнование сущностей и инвалидация кэша. Соси жопу. Жуй репеник.
Есть блок. В нем два элемента. Оба скрыты. Одновременно показать можно только один. Каждый элемент показывается и скрывается с анимацией.
Суть проблемы, что если переключаться с показа одного на другой, они на время анимации скрытия\появления показываются одновременно и растягивают блок и страницу.
Нужно как-то это исправить.
Добавить max-heigth родительскому блоку нельзя, так как в блоках есть растягиваемая textarea и max-heigth будет мешать ее тянуть.
Анимацию убирать тоже не хотелось бы.
>Анон, как ты вкатывался в vue?
Придумываешь себе пет-проект нормальной сложности не очередной туду-лист и начинаешь его делать, попутно читая документацию и пользуясь гуглом для решения проблем. Видеоуроки для вкатывания хуйня - без практики все равно ничего не запомнишь.
Не начинай анимацию одного, пока не закончена анимация другого.
>Видеоуроки для вкатывания хуйня - без практики все равно ничего не запомнишь.
Хуйня не видеоуроки, а обрывочные уроки вне контекста. Лучше проходить какой-нибудь большой курс, где объясняется все от основ до продвинутых тем. Дальше проходишь какой-то большой блок курса и делаешь свой проект, в котором применяешь полученные знания. Дальше снова делаешь проект по уроку, и снова в своем применяешь знания придумывая себе задачи. Ну это именно для охватывания какой-то технологии с нуля
Устроился тут на новую работку не связанную с погромированием.
Госструктура и очевидно работы особо и нет, сидишь ебланишь целыми днями, отсюда вкатился в изучение новых языков, выбрал JS, тк он самый популярный и самый распространенный, собственно если у меня какие-то проблемы возникнут - я с большой долей вероятности смогу ее только найти решение, но и описание почему и как это решение работает. В общем, чтобы вкатиться, мне показался этот язык - идеальным. Обоссыте если не прав.
После JS укачвсь на следующий язык, пока не знаю какой, но знаю, что по итогу я хочу в бэкэнд укатиться, но и фронт знать, поэтом начал с js.
Ткните носом где взять нормальную литературу с задачами, которые помогут закреплять усвоенные знания, потому что ебаный codeacademy все понятно объясняет, но даже сейчас я сижу и далеко не все помню из того, что изучил а это мало, там научился в case, else if и не более короч.
У меня все так идет, не знаю в чем твоя проблема.
>На практике - стало не очень удобно, и не очень предсказуемо.
И что же поменялось? Модель все та же.
>Если у тебя реакт, то зачем тебе чистый?
>Правильно - для сервисов и редуксов различных.
Вот щас проходил собес, думал щас меня по реакту спрашивать начнут и я их разъебу. А у меня спросили чем отличается var от let и const, и я жидко обосрался поняв, что ни разу нахуй не пользовался var, потому что он нахуй не нужен, и я вообще блядь ничего про var не помню, не знаю и не знал, кроме того, что он имеет глобальную область видимости, и это старое говно и им вообще не нужно пользоваться. Прооритесь с меня нахуй, таким куском говна сейчас себя чувствую, хоть в петлю нахуй лезь хоть я потом конечно немного реабилитировался начав рассказывать про реакти вроде бы не обосрался ни в одном вопросе, но все равно это был пиздец, я в ближайшие 20 лет вообще нахуй ни на один собес больше не пойду пока не смогу по памяти написать свой свой браузер на c++, внутри которого будет открываться полностью самописный алиэкспресс, внутри которого будет продаваться вся документация js написанная по памяти
Привет, я в жизни не учил никаких языков, кроме английского и ссу тебе на ебало, потому что var это variable, т.е переменная, т.е
> var TvoiHui x
Который ты задаешь
Let - это ПУСТЬ
> let TvoiHui 5
Const - константа.
Этим они и отличаются, в остальном это глобальные операторы и нихуя более
АХ ДА Я ПРОЕБАЛ ''
>кроме того, что он имеет глобальную область видимости
Нет, он имеет локальную область видимости.
Ну видно что ты нихуя и не учил
var имеет локальную область видимость, let и const блочную.
Если ты объявляешь var в глобальном скоупе - то у тебя globalThis и есть локальная область видимость. Все области видимости в жс - это объекты, а переменные это поля этих объектов, именно поэтому поле в глобальном объекте (или любом из его прототипов) - это глоабльная переменная. Если ты объявишь var в пределах модуля - поле в глобальном объекте присвоено не будет, потому что у модуля своя локальная область видимости. Если ты объявишь var в теле функции - то ее локальная область видимости будет ограничена этой функцией. Объявления var всплывают, но инициализация происъодит по месту.
let и const имеют блочную область видимости. Они объявляются и инициализируются по месту, и за пределами блока, в котором они объявлены их не видно.
>щас меня по реакту спрашивать начнут и я их разъебу
Почему React не реактивен? Какая модель распространения значений в react?
Вот этому можно и перезвонить. А что если не указать модификатор переменной, тупо насрать `op = "khui"`?
Разве в тайпскрипте можно сделать целочисленный тип, принимающий только нечетные значения, чтобы обойтись без is-odd ?
>Они объявляются и инициализируются по месту
Справедливости ради, TDZ работает благодаря подъему, но кого это ебет, когда в userland коде все равно это никак не использовать.
Будет попытка присвоить переменную на уровень выше по цепочке наследования областей видимости, пока не дойдет до самого верха. В случае если код выполняется
в строгом редиме и переменная в итоге не объявлена нигде будет эксшепшен, в противном случае будет присвоено поле в globalThis. Все модули выполняются в строгом режиме, так что там всегда будет экспшен при попытке присвоить необъявленную ранее переменную.
Он просто душный, простое объяснения выглядит в виде наглядного примера:
function scope() {
{
var x = 10;
let y = 11;
const z = 12;
}
console.log(x);
console.log(y);
console.log(z);
}
В консоль выведется 10, а потом вылетит эксепшн который скажет тебе, что переменная "y" не определенна, если поменять y и z местами, то будет тоже самое.
Да ладно, это почти все легаси или нужно раз в год, все в 95% случаев делается на const. Типичный вопрос для собеса короче.
Он действительно очень простой. В основе всего яызка лежит абстракция объекта (описанного в спецификации) который имеет слоты, которые дергаются при каждом геттер, сеттере, и вызвое некоторых операторов. Все взаимодействие со всеми сузностями происхоит через дерганье этих слотов. Области видимости - это тоже объекты, которые так же связаны в цепочку, по типу протипной, с единственной разницей в том, что переменная это не поле, а аксессор - при сеттере переменной она присваивается в той области где объявлена в ецпочке, а не в текущей, а объявление переменной - это объявление акссесора у текущей области видимости в случае если это блочная переменная, или локальной, в случае если это var.
Абсолютно все операии - это дерганье слотов через отправку сообщений get\set\call\getProperty\hasOwnProperty и так далее. Если понять как это устроено все с низу, то никаких сложностей нет вообще вс понимаием как это сустроено сверух. Сверху у тебя много сущностей - всякие контексты, модификаторы, операторы, хуяторы - которые на деле выражаются одними и теми же конструкциями и операциями на нижнем.
В отличии от тебя он пояснил, что будет при объявлении var за пределами функциии, в строгом и нестрогом режиме, и почему hasOwnProperty - это глобальная переменная.
Я ОП этого треда последние пять лет.
>что будет при объявлении var за пределами функциии
Проиграл с дебила. В JS функция это объект, твои "за пределом функции" это тоже самое что и в пределах функции. Как вы вообще код пишете, если таких основ не понимаете? Для вас это не написание кода, а магия?
Что несешь блядь.
Тебе пояснили, что можно вызубрить 10000 сущностей по отедльности, а можно изучить несколько простых принципов и понять разом всё. Но ты, как я вижу, сделал свой выбор.
Где можно узнать об основных принципах? Вот что нужно читать чтобы понять основные принципы? В основном все начинается от перечисления переменных и заканчивается всякими асинк авайтами. Ну а дальше сам по мере необходимости. Причем еще и ор в том, что все, что ты пишешь может прекрасно работать и без всех этих нюансов. Так что в конечном итоге все выливается в то, что ты чуть ли не до уровня сеньера должен доучиться, чтобы на тебя как на говно не смотрели
Функция это callable объект. У которого пределен хэндлер на сообщение call. Еще есть конструкторы - это обхекты у которых определен хэндлер на сообщение construct. Области видимости не являются вызываемыми объектами, и конструкторами они тже не являются. Они вообще относятся к типу Exotic Object.
Ни глобальный скоуп в которм выполняются простые скрипты, ни модули не являются функциями. Исходный код скриптов и модулей выполняется в контекстах vm.
В общем, ты несешь чушь.
Нигде это полноценно и всеобъемлюще в одном месте не расписано. Или во всяком случае я ничего такого не читал. Я просто 20 лет пишу на жс, и помню его еще со времен es3.
Я бы порекомендовал просто прочесть спеку es5 (она самая простая и при этом актальна, потому что уже описывает текущие принципы, но не полностю, потому как ей болле пяти лет и язык сильно развился) У кантора есть отличный перевод https://es5.javascript.ru/
Потом плотно изучить такие вещи как Symbol (в том числе well-known symbols) и Proxy (поняв, как работают хэндлеры сообщений из юзерспейса модно придти с пониманию всего чисто интуитивно). Еще очень рекомендую почитать статьи про устройства самих движков (хотя бы v8 - есть отличный блог v8.dev и куча переводов на хабре - так же есть конфы от разрабов самого v8 в том числе рускоязыные).
Ну и попутно все шлифовать просто добирая материал (изуя те же символы заглянуть в актуальную спеку). Изучить финализаторы и слабые ссылки. Можно почитать сорцы движков, котя бы изучить runtime built-in functions в v8, которые весьма низкоуровневы, доступны из жс кода за флагом, и позволяют формировать все структру жс в ручную (словно ты пишешь на высокоурвневом ассемблеере).
В ноде есть отличный модуль vm - поиграйся с ним, чтобы иметь представление о контекстах ( это даст понимание почему рендер-процессы и воркеры не имеют общей памяти, если сепарированы, и напротив почему при необходимости иметь общую память рендеры разных фреймов (оконо) запускают в одном процессе).
Ну и попутно просто играйся с сами жс, у тебя он прямо под рукой, достаточно нажать f12.
>as
Ты же сам берешь на себя ответственность, выполняя принудительное приведение типов, в чем проблема?
Ассершены, по-хорошему, должны быть запрещены на проекте, исключение отводится только на "as const".
is-string >8 000 000 Weekly Downloads
is-primitive >2 000 000 Weekly Downloads
is-undefined >5 000 Weekly Downloads
@
ТАЙПСКРИПТ НИНУЖЕН
@
ТВЁРДО И ЧОТКО
@
isobject >31 000 000 Weekly Downloads
@
is-string >8 000 000 Weekly Downloads
@
is-primitive >2 000 000 Weekly Downloads
@
is-undefined >5 000 Weekly Downloads
>что ты чуть ли не до уровня сеньера должен доучиться, чтобы на тебя как на говно не смотрели
Все эти знания вовсе не сениорские. Подобное не является необходимыми скиллами для промышленных градций ждун\мидл\сениор. Ждуны\мидлы\сениоры - это кодомакаки.
Вся эта беллетристика это удел евангеистов, language hackers и прочих людей, у которых цель не формочки клепать, а созидать. Или быть как минимум умнее пробки и понимать что как работает и почему именно так.
От тебя никто не требует всего этого понимания, если единственная твоя цель это на работу устроиться. У тебя есть тот самый путь - заучивать отдельные кейсы и не задаваться лишними вопросами. Возможно он для тебя действительно будет проще (даже точно будет проще. в случае если тебе программирование как таковое не интересно)
>От тебя никто не требует всего этого понимания
Да в пизду, чтобы я еще раз на какой-то собес пошел пока все это знать не буду
>цель не формочки клепать, а созидать
Но ведь конечная цель языка и есть решение прикладных задач. В чем созидательность глубокого понимания его работы?
Прикладные задачи не ограничиваются клепанием формочек. У всего прикладного есть разные сферы применения. Ты, как программист - тоже пользователь. Для тебя пишут инструменты другие программисты, для которых эти задачи являются прикладными.
Есть еще такие вещи, как написание транспиляторов и компиляторов. Тех же самих линтеров, и language серверов. Пользовательских рантаймов, и в конечном счете просто библиотек. Ты же не думаешь, что все это появляется само по себе?
А еще есть такие вопросы как развитие языка. Чтобы протащить в спеку новый пропозал, тебе не будет достаточно понимать, чем var отличается от const.
От уровня твоего понимания зависит то, что именно ты способен созидать. Все люди различаются между собой лишь широтой знаний\взглядов\эрудицией. Кем быть именно тебе выбираешь исключительно ты сам.
И как бы его назвать? game management? И ещё в конце игры нужно будет очищать всякие переменные. Как это обычно называют?
>Ты же не думаешь, что все это появляется само по себе?
Конечно, не думаю, просто не понимаю с чем связан изначальный снобизм. Мол написать линтер это созидание, а написать, например фронт CRM для КЦ — формошлепство. Там же тоже нужны знания, просто другой предметной области. Причем не сказать что одна из них как-то особенно лучше или сложнее другой. Правда первое, как правило, оплачивается звездочкой на гитхабе и стабильным потоком ишьюс, а второе деньгами, страховкой и оплачиваемым отпуском.
Зависит от твой архитектуры. Скорее всего у тебя будет куча разных менеджеров, типа PlayerManager, SceneManager, и т.д. которые объединяют простые строительные блоки. И всем управляет какой-нибудь GameManager.
>И ещё в конце игры нужно будет очищать всякие переменные. Как это обычно называют?
Зачем их в конце очищать? Иногда делают в каждом менеджере или объекте метод destroy, который подчищает за собой. Но это далеко не всегда надо.
Бля, ну почитай ты наконец про подход Entity Component System, многие вопросы сразу отпадут.
Как правило те. кто способен писать линтеры, способны писать и CRM, а обратное не верно. При этом первые не испытывают никаких wtf разрабатывая с использованием любого языка или технологии, в отличии от вторых. Это не та разница предметных областей (как писать круды или графические редакторы, сервер-сайд или гуй, игры или нейросети). Это перманентная широта специализации. У людей глубоко-эрудированных нет сложности с вопросами написания фронта или бека, консольных утилит или десктопа, писать на жс или на си - они разберутся во всем и очень быстро, потому что умеют это делать. Умеют изучать, а не заучивать.
>Как правило те. кто способен писать линтеры, способны писать и CRM, а обратное не верно.
Не очень понятно на чем вообще основаны эти измышления. Из хорошего знания языка и умения изучать вещи еще не следует хороший код и уж тем более хороший продукт. Нужно знание предметной области, представления о том как работают люди, вкус и другие вещи. Есть штуки созданные прекрасными разработчиками которыми невозможно пользоваться без слез и есть продукты написанные плохими разработчиками, которые работают прекрасно.
Они ставят библиотеку какую-то. А она уже тянет все это говно мелкое, потому что разраб библиотеки поленился написать.
Ты хочешь странного, зачем тебе блок хитровыебанной формы да еще с пересечением с другими? На флексах такое не делается.
А при чём здесь тайпскрипт, долбоеб? Тайпскрипт за тебя не проверит пришло ли тебе в ответе на запрос строка или объект, несмотря на то что ты прописал, что должна была прийти строка.
Просто вся эта ебатура ставится вместе с npm пакетам как зависимости.
Это и без твоего тайпскрипта делается.
Чел, ты не понял этого наркомана. Открой картинку и посмотри на красную обводку внимательнее
(a) => {
if (a) {
return a
}
Какие то вычисления
return 42
}
Либо
(a) => {
if (a) {
return a
} else {
Какие то вычисления
return 42
}
}
Записи эквивалентные просто по стилю как правильнее
Скотина тупорылая, зачем тебе по отдельным блокам разбивать, если разницы в отображении не будет?
Может потому что так надо? Ты еще предложи фоновой картинкой поставить, разницы в отображении тоже не будет, хуле.
Понял. Спс.
>Может потому что так надо?
Вот тебя и спрашивают зачем тебе так надо, хуесосина.
>фоновой картинкой поставить,
>разницы в отображении тоже не будет, хуле.
>разницы не будет
Ты правда настолько тупой или просто от безысходности начал бред нести?
function func(a) {return a || 42;}
или
const func = (a) => { return a || 42; }
Хорошо по стилю оборачивать блок if в скобки, даже если один оператор. Некоторые стандарты кодирования явно требуют.
Вот этот вариант лично мне не нравится >>72801
Если в конце блока if есть return, или continue/break внутри цикла, то делать else не нужно, получается немного противоречивая логика, при этом конструкция if-return довольно типовая, воспринимается без напряга, чтобы дополнительный else делать. Но return должен быть сдвинут на одном уровне с операторами if-else, тогда легко читается, в том числе поэтому код на картинке не нравится, всего 4 строки, а читается тяжело.
Сначала ответь зачем.
99% ебнутых запросов от того, что ты делаешь что-то неправильно. Твой яркий тому пример.
>Синяя кнопка скрывает\открывает красный красный блок.
Что будет с красным блоком, когда он скрыт? Как будет использоваться место слева от синей кнопки в этом случае? Там будет пустое место или туда заедет какой-то текст?
Спс за развернутый ответ
Так делал, но флоат проще.
Выебнулся, молодец. Вот только цель этого оператора проверить на отсутствие значения, а false он пропустит как true.
Ну тогда там скорее будет красный блок со скрытым содержимым. Соответственно твоя кнопка не должна убирать родительский блок, она должна скрывать его содержимое, кроме синей кнопки.
Если сделаешь на float, то туда какой-нибудь мусор залезет.
Если тебе нужно, чтобы текст обтекал синюю кнопку, тогда нужен float по идее. Если нет, там слева заголовок, тогда тупо вложенные флексы
Из однострочников самый корректный вариант
return a ? a : 42;
Другие меняют тип возвращаемого значения, например "" превратят в 0, что иногда может быть некорректным поведением.
Не, пожалуй я туплю. Пойду дальше работать.
Проебался с const. Но вы поняли.
Ты забыл упомянуть, что для программирования нужны специальные гены, причём разные под отдельные языки.
Даже гены не помогут, если не начать специализированное обучение с 12 лет. Ну по аналогии с другими областями, не будешь нормально кормить пиздюка - вырастает низкорослый дебил-коммунист.
Ты явно чего-то не понял.
Никаких костылей и говна там нет.
>реакт по сравнению с этим просто ванильный жс
Это, типа, комплемент, лол?
Мединский? Что ты здесь делаешь?
Если очень нужен - нанимают.
У нас вот - наняли.
Но, большинство - уходит в спячку.
Также, умные люди понимают, что это время года не очень хорошо для принятия важных решений - можно совершить ошибку, т.к. мозг работает в довольно своеобразном режиме. Надо перетерпеть до конца января.
Думаю что на пару месяцев уже все.
>pagehide а не unload
Хуита какая-то. Если вешаю на него обработчик, то он не срабатывает при закрытии вкладки. Если дополнительно вешаю на unload, то срабатывают оба
Игрок
переместить туда
переместить сюда
переместить ещё куда-то
Куда запихнуть фукнцию перемещения всех игроков в одно место?
В класс что ли? Игрок.всехводноместо()
document.body.animate([{filter:'hue-rotate(0deg)'},{filter:'hue-rotate(360deg)'}],{duration:5000,iterations:Infinity});
Тебе же сказали - у тебя должен быть класс, являющийся моделью игры. Вот там и должна быть эта функция.
Потому, что Игрок у тебя не должен знать, в каком он месте.
Это должна знать модель игры.
На оф. сайте?
Там же с нуля всё расписано, просто отдельная докуметация.
Картинка полностью отражает современные процессы, лол.
ты где-то вопрос увидел?
>Картинка полностью отражает современные процессы, лол
wishful thinking https://www.npmtrends.com/angular-vs-react-vs-vue
Почему реакт всё время ставят рядом с vue? vue — фреймворк, реакт — нет. vue надо сравнивать с фреймворками на реакте.
И да, он пока только засмотрелся, самое интересное будет потом.
реакт - редукс - хуюкс — тоже не фреймворк, их руками дружить дорого. Фреймворк на реакте — Next.js, он круче Vue.
Это фуллстак. Он не нужен.
[...emptyUser] сойдет или надо там через new emptyObject(), или object.assign?
>На оф. сайте?
Да
>Там же с нуля всё расписано, просто отдельная докуметация.
Я начинал сначала читать документацию по vue v2, потом узнал что есть v3 и начал изучать ее, только вот она на англ и ее труднее понять и самое главное что там примеры кода уже не такие полные как в туторе второй версии.
Я вкатываюсь с нуля, это мой первый фреймворк, если чё.
Ну типо, мне еще учить какой нить пхп или ноду надо что бы во фронт залезть?
Бэк должен предоставить тебе апи, то есть какие есть запросы, какие параметры они принимают, и что возвращают
Читай по v2 на русском.
Отличий много, но, для полного ньюфага они не принципиальны.
Более того, v2 - проще.
>>73147
Тебе лучше сделать так, чтобы твой рендерер, и другие части программы, нормально воспринимали именно пустой объект {}.
Т.е., чтобы не надо было явно пустые поля задавать. Обычно так делают.
>не пустой объект
Пустой в смысле у него есть структура, но ниче не заполнено чтобы очистить формочку
Если собираешься что-то кроме петов делать, то забей на v3. Один хуй будешь ковырять проекты на v2, которые ещё и не факт будут мигрировать на новую версию.
Vue на столько плохой фреймворк, что над ним приходится строить ещё один фреймворк
Ага
Немного не догоняю, как здесь можно не запускать три раза метод, а один раз? Вычисляемое свойство не подходит.
Вызовом метода присваивать значение `this.param`, а дальше сравнивать и проставлять значение как {{ param }}.
Там где-то выше должон быть хук, который срабатывает при изменении param, и делает methodParam = method(param), а в шаблоне заменить method(param) на methodParam
1. Так делать точно не надо, это лютейший говнокод. Просто эссенция говнокода.
2. Как надо? Это зависит от того, что такое твой param, и нахуя тебе сайд-эффекты при рендеринге. Что-то у тебя там не то.
Нужно добавить элементы в ячейки таблицы. В param данные слота по текущей строке. Метод рассчитывает значения в зависимости от этих данных.
Всё равно не очень понятно.
Но, если что-то реально хитрое, то, возможно, стоит использовать не шаблонный рендеринг, а рендер-функцию, как в реакте.
JSX|TSX прикручивается несложно, но, один раз можно и без него.
Ну, или запоминай в переменной в data, и используй не вызов метода, а эту переменную во всех случаях, кроме первого, как советует >>73189
Причём, как-то так:
v-if="method(param) && methodResult != 'ass'" :arg="methodResult" ...
Т.е. method(param) просто возвращает true, а реальный результат записывается в this.methodResult.
Назвать это всё надо по-человечески, разумеется.
И да, делать method(param) && methodResult != 'ass'
надо чтобы ясно дать понять тому, кто это будет читать, что тут происходит. Т.е. чётко выразить намерение.
Ты еще не пробовал в реакте программно выделить строку в таблице и показать, закрыть модальное окно с анимацией. react-bootstrap последней версии ждут каких-то новых api чтобы transition работал без ошибок
https://github.com/react-bootstrap/react-bootstrap/issues/3518
https://pastebin.com/02v9N3CP
Там я сделал просто явный вызов метода, как сайд-эффекта при рендеринге:
{{getColor(item.calories)}}
Метод возвращает пустую строку, т.е. не рендерится ничего.
Можно сделать иначе:
<v-chip :color="getColor(item.calories) + itemColor" dark>
Но, мне кажется, лучше бы сделать цвет частью данных.
Т.е. ты с бека получил эту хуергу, и далее, через map и через extend или композицию добавляешь свойство color к каждому элементу.
Вычислять такое в шаблоне - не очень хорошо, и не очень быстро, кстати. И, самое важное - все оптимизации Vue при этом идут по пизде.
Так что - делай лучше сразу в данных.
>>73260
Собственно, вот, color добавлен в модель:
https://pastebin.com/UrPqBVsq
Выглядит намного лучше, понятнее, легче дорабатывать и т.д.
Можно и остальные вычисления тоже заменить таким образом.
А если нету даты и данные из пропсов берутся? Создавать дату дату с этими данными только для рендеринга?
Можно и так.
От задачи зависит.
Если нет массива, можно и как в первом варианте: >>73260
Тут смысл в том, что метод (результат вызова) не кешируется, в отличие от computed property.
И таким образом его можно кешировать вручную.
Если есть массив, и он рендерится в цикле - лучше добавить доп. свойства для рендеринга, вычислив их один раз. Это очень быстро работает.
И, более общее соображение - если уж у тебя MVC|MVVM фреймворк, надо это использовать, по возможности.
>>73289
Но, тут есть нюанс.
Если у тебя массив поступает через prop, то мутировать его нельзя.
И получишь warning.
Т.е. надо создавать новый - а это накладно, так лучше не делать.
Поэтому, наверное, лучше просто закэшировать вызов метода.
Но, в таком случае, почему бы не вычислить всё, что нужно, в parent компоненте?
Это зависит от задачи. Если у тебя всегда заранее известен child компонент, который это использует, то да, лучше вычислить в parent или ещё раньше.
>>73237
Вообще, в этом примере с цветом есть принципиальный дизайнерский просчёт.
Дело в том, что там должен быть не цвет, а некий тэг, признак - низко-средне-высоко-калорийный продукт.
И этот признак и надо рендерить - в цвет и ли ещё какую фигню.
Поэтому, это лучше вычислить ещё на беке.
Иначе получается, что в шаблоне заданы бизнес-правила, а это очень плохо.
Короче, всё зависит от задачи.
> Анонче, делаю простенькие на жаве. Нужно прикрутить фронтенд. Что выбрать: вью или реакт?
Похуй что
https://www.primefaces.org/
У меня в ангуляре есть кнопка, на которой висят 2 метода, один работает на подсчет кликов по кнопке, другой - запускает таймер с setinterval-ом, после которого кнопка станет disabled. Как сделать так, чтобы не плодились setinterval-ы? С меня нефть и все такое.
Ого, вот это я даун. Спасибо большое.
и вот вопрос как такое фиксить? по статьям в инете вроде как понял что это должны фиксить люди сами на серваке, но при этом если я шлю абсолютно такой же запрос через postman то получаю success. как фиксить? я запутался
> VSCode, Vetur
Как сделать что бы в .vue файлах при наведении курсором на цвет #545288 всплывало окошко с выбором цвета.
Если через postman проходит, то на серваке всё у них норм. Значит ты должен отправить CORS заголовок в запросе.
Уверен, что у тебя плагин не тупит? Переключись на scss и посмотри подсветку синтаксиса, так как сейчас у тебя по сути всё одним цветом выделено.
На серве пусть посмотрят. Ну или сделай в боаузере отдельный профиль без проверки корсов, это ж игрушка, а не на прод.
>Переключись на scss
Переключился на scss - работает. На sass автокомплит работает, но цвета нет. Странно.
>Но, в таком случае, почему бы не вычислить всё, что нужно, в parent компоненте?
А если повесить эту функцию добавления в дату на mounted, она же второй раз рендеринг вызовет? Это норм?
Сервер находится на другом домене и должен поддерживать CORS, а он этого не делает. Об этом собсна в ошибке и написано.
>я шлю абсолютно такой же запрос через postman то получаю success
Конечно, постман же не браузер, там нет этих политик безопасности.
Эта строчка должна в ответе приезжать. Пиздуй гуглить зачем корсы вообще придумали, а то на собесе за такое мигом мы вам перезвоним получишь.
Добавь опциях fetch mode: "no-cors"
Голосование
конструктор {
количество голосов
текст уведомления = количество проголосовавших за что-то
винколбэк = функция(){}
}
--проголосовать()
----увеличить количество голосов на 20 секунд
----вывести уведомление в чат
----если набралось достаточно голосов
------выполнить винколбэк
Проблема в том, где логично будет расположить переменные которые будут отвечать за уменьшение голосов через 20 сек (иды таймаутов) и айди проголосовавших голосов.
Так в конструкторе и писать что ли?
зис.айдиигроков
зис.иды таймаутов
Правильно ли ставить вспомогательные переменные и переменные отвечающие за количество? И текст вроде как тоже вспомогательный.
Помогите. И дайти пожалуйста что почитать о расторжении переменных.
Например, у меня в mounted отработала функция которая поменяла статус какого то элемента.
Создаёшь класс, который отвечает за список игроков и всякие их подсчёты, и перекидываешь счётчики голосовалке в виде примитивов. А голосовалка в свою очередь прокидывает примитивы списку.
Условно говоря если твой класс начинает включать в свойства массивы, особенно если это массивы объектов, то настало время создавать новый класс.
что такое жабапараша?
Потому что толпа хомячков не осилившая типизацию сказала, что ангуляр это сложно и запутанно, а теперь дружно наворачивает среакт и вуе
Я люблю жабапарашу...
>сложно = хорошо, просто = плохо
У Терри есть для тебя новости
https://www.youtube.com/watch?v=k0qmkQGqpM8
>>73837
Однако, не всё так однозначно:
However the official Vue documentation uses the mounted() lifecycle hook in example code for integration API calls with axios: https://vuejs.org/v2/cookbook/using-axios-to-consume-apis.html
Both lifecycle hooks mounted() and created() are widely used for fetching API data and considered as good practice.
https://stackoverflow.com/questions/51554083/vue-js-which-component-lifecycle-should-be-used-for-fetching-data
https://blog.logrocket.com/advanced-data-fetching-techniques-in-vue/
Я, собственно, из этих соображений и сделал это в mounted в том примере (>>73267).
Думаю, дело в том, что реальный рендеринг происходит асинхронно, после nextTick.
Вообще, надо попробовать задебажить это дело и убедиться, что конкретно там происходит.
Вы там уже 10 постов не можете разобраться где сайд-эффект вызывать? Vue это просто и понятно, кек. One true way.
>>73849
Проверил только что.
Сделал компонент с render-функцией, чтобы была 100% уверенность когда там что рендерится.
Результат такой:
mounted: Если в mounted делать синхронное или асинхронное изменение data, то рендеринг вызывается второй раз.
Почему же рекомендуют делать fetch в mounted? Потому, что рендерится пустой компонент (быстро), а потом уже наполняется данными. Т.е. проигрыша в производительности нет, ибо виртуальный дом, и медленные операции рендеринга в настоящий DOM делаются только на child-компонентах.
Думаю это подходит не для всех случаев. Но, для таблиц данных и т.п. - нормально.
Также, можно ставить флаг "данные загружены" и без данных рендерить пустой див.
created: Если в created делать _синхронное_ изменение data, то рендеринг _не_ вызывается повторно.
И для каких-то случаев это может быть предпочтительнее.
А если делать асинхронное (даже с timeout = 0), то - вызывается 2-й раз.
Т.е., если делать fetch, то нет разницы, где.
Итого, по данному примеру с цветами - вычисление свойства color для всех элементов массива там - синхронная операция, и его надо делать в created.
>>73864
Но, Vue - это действительно просто и понятно.
Двухминутный эксперимент - и все ответы получены.
Подобный же вопрос в реакте/ангуляре выебал бы мозги по-взрослому.
>Подобный же вопрос в реакте/ангуляре выебал бы мозги по-взрослому.
Вопрос «где вызвать сайд-эффект» выебал бы мозги? Или «как отрендерить пропсы с вычисляемыми параметрами»? Не знаю как там в Ангуляре, конечно, но в Реакте они давно уже не стоят.
Речь давно уже не про сайд-эффект.
Да и изначально это можно было назвать сайд-эффектом весьма условно. Перечитай, если интересно, там не так много.
Сейчас речь была про то, где трансформировать (реактивные) данные, синхронно и асинхронно, чтобы это не вызвало лишний рендеринг.
>в Реакте они давно уже не стоят
Вот в прошлом треде неоднократно жаловались, что хуй его знает, где вообще делать асинхронные вещи в этих ваших редуксах. И что Абрамов молчит на эту тему, как партизан.
Алсо, в Реакте, насколько я помню, вообще вопросы лишних рендерингов стоят мощно, как конский хуй от конского же возбудителя.
Конечно, я прочитал ваш диалог, перед тем как отвечать. В реакте это делается прямо в рендере, если что, потому что мало данные один раз вычислить и записать на маунте — они же могут обновиться и производные, очевидно, надо будет пересчитать. Может в этих ваших вью какая-то другая магия, но я не понимаю зачем вообще нужен сайд-эффект если операция полностью синхронная и чистая.
>Вот в прошлом треде неоднократно жаловались, что хуй его знает, где вообще делать асинхронные вещи в этих ваших редуксах. И что Абрамов молчит на эту тему, как партизан.
Дэн написал вместе с редаксом redux-thunk и выпустил по всем этому бесплатный курс на egghead, так что обвинять его в этом как-то совсем уж странно. В редаксе что-то асинхронное вообще можно только в одном месте делать (экшен криэйторе), так что странно, что такой вопрос вообще возникает.
>Алсо, в Реакте, насколько я помню, вообще вопросы лишних рендерингов стоят мощно, как конский хуй от конского же возбудителя.
Не знаю, у меня не стоят. Если у тебя с этим были проблемы, могу посоветовать пару приемов.
Там "сайд-эффект" (если это можно так назвать) был для кеширования вызова метода, путём записи результата в реактивную переменную в data.
После первого ответа (>>73260) речь уже была о том, как без этого обойтись.
Вообще, проблема там совершенно типичная для фронтенда:
У тебя есть голые данные с бека.
Тебе надо к каждому элементу привязать (вычисляемые) свойства, влияющие на его отображение и работу с ним в UI.
Простейший пример - выбор строк в таблице, например, товаров.
Нужно свойство selected для каждого товара, привязанное к чекбоксу, но, чтобы и программно выбирать можно было.
Но, конкретно та проблема с color в реакте вообше не встала бы, т.к. рендеринг делается не по шаблону, а в коде. В vue тоже так можно (через render-функцию), но это нетипично, и требует прикручивания JSX/TSX, иначе неудобно.
В инете попадаются статейки за 2019 год, где пишут, что довольно удобная вещь в качестве headless CMS, но ещё попадаются баги. Как сейчас с этим дела обстоят?
> outatimed7.000webhostapp.com
Наговнокодил свой первый to do list на vue, еще никогда собой так не гордился
>веб-макака не может вырваться из своего манямирка в котором типизация усложняет, а не облегчает
Гордишься тем что ты криворукая макака, которая срёт себе в штаны даже делая тудушку?
>Найс туду ЛИСТ без ul/ol.
Зачем они нужны? Я понимаю что HTML это семантика и все такое, но постоянно выключать стиль и убирать отступы заебывает.
Не пробовал на базовом элементе отключать стиль и отступы?
У тебя кстати в туду листе нет никакой возможности отметить действие как выполненное
<Route exact path="/users">
<Users users={this.state.users}></Users>
</Route>
<Route exact path="/users/:id">
<ShowUser/>
</Route>
Когда захожу на страницу пользователей то все загружается корректно и один раз, а когда захожу на страницу определенного юзера, тогда у меня компонент вызывается бесконечное количество раз. В чем мб проблема? Юзера т.е. информацию о нем при этом корректно отображает
А вне роута нормально работает? Возможно что ошибка в самом компоненте ShowUser, которые вызывает бесконечный луп ререндеров.
что значит "вне роута"? то есть когда я не по линку с /users перехожу а напрямую ?
>ошибка в самом компоненте
а че в нем такого может быть? пик прилагаю.
Ну да, как и я говорил, бесконечный луп ререндеров. Иди читай как пользоваться useEffect.
>>74016
Завтыкал что таски могут вылазить за верстку. Как лучше сделать перенос?
Мне в голову приходит только grid-template-colums: 2% auto 2%
>>74016
>Гордишься тем что ты криворукая макака
Чё такой злой, дядь, я почитал документацию vue и посмотрел как сделана тудушка у них, дошел до момента на пикрелейтед и понял что нихуя не понял. Пришлось делать как могу.
Может я тупой скорее всего, но у них в документации проскакивают вещи, которые не упоминались ранее, например почти в самом начале был момент с watch, хотя его перед этим тоже не объясняли, а я ж не вундеркинд нахуй.
>useEffect?
Вот этот ублюдк - единственная причиная по которой я не перекатился в хуки, видимо я еще не постиг дзен хуков, но это просто лютый ебанный пиздец каждый раз, не указал завимость - жди засранный лог. Указал - улетел в бесконечность. Понятно что код говно, но в этом смысле в классами гораздо проще работать. Указал условия для ререндера, и всё
Так пока не перекатишься - не постигнешь дзен. Думай эффектами (тм).
Перенос это `word-break`. Сейчас бы сетку пихать для переносов, вообще охуеть, да она бы и не помогла, так как количество элементов не изменяется.
>дошел до момента на пикрелейтед и понял что нихуя не понял.
А чего именно ты не понял?
Там выдаётся событие (emit event = выдать событие).
Событие - это способ сообщить родительскому компоненту, что нужно что-то сделать. В данном случае - удалить этот item. Событие имеет тип (название), в данном случае - 'remove'.
В родительском компоненте, соответственно - обработчик @remove (т.е. at-remove, т.е. при-удалить).
В событии ещё могут быть параметры, но, в данном случае - это не нужно, родитель и так знает, какой это item.
>>74254
Спасибо аноны
Как средствами Vue реализовать этот ванильный js скрипт https://jsfiddle.net/qv7gxtbf/21/ ?
Не понимаю почему в Vue событие по клику вносит изменение в html код, а по интервалу - хуй.
Если только фон покрасить, то вообще жс не нужен, делается через `@keyframes` в CSS и там же можно задавать длительность и тип цикла. Плюс выглядит намного плавнее.
https://jsfiddle.net/9yotaqLk/1/
>Так надо было в на ангуляре делать, там такой хуерги нет, всё ясно и понятно.
Так все в один голос заявляли, что Vue лучшее решение для новичка, особенно тупого.
Они просто ничего кроме вуе/реакта не пробовали и живут слухами.
Всё правильно тебе заявляли.
Но, "лучшее" - не значит "бесплатное" или "вообще не требующее усилий".
>Не понимаю почему в Vue ...
Vue - реактивный фреймворк.
Т.е. шаблон рендерится из модели (данных), и автоматически обновляется при изменении данных.
Т.е. класс - это должна быть переменная в data, привязанная к нужному элементу как :class=... Меняй её, и всё будет меняться.
Менять данные ты можешь как изнутри, так и снаружи, из внешнего скрипта, если это нужно. Для этого нужна ссылка на vue-компонент, т.е. при создании надо присвоить результат переменной.
Как ты пытаешься задавать интервал?
И да, для анимации в Vue есть специальные средства, но, лучше бы ты, для начала, разобрался с основами.
Пик1, нажимаю на кнопку, жду 3 секунды и нихуя, класс из data не прилетает в свойства класса.
Пик2, нажимаю на кнопку без таймаута и все работает.
console.log(this)
Тебе уже сказали, но я добавлю пиздюлей, лол:
У тебя там function() {...}. Оно имеет свой this.
Сделай вместо этого () => {...}.
Либо, если бы ты писал без бабеля-хуябеля, а прямо в html, то, перед вызовом setTimeout(...) надо сделать:
const self = this;
А потом в function() сделать self.testDivClass = ...
Можно и сейчас так сделать, но, лучше стрелку.
>this куда указывает?
windows
this.testDivClass = "first" судя по console.log работает, просто оно почему то не попадает из data в template, не обновляется класс.
так если я его убираю и оставляю голую функцию то все равно оставляется луп из рендеров
Насколько длинными могут быть название функций? По стилю, как принято? Если допустим у меня для нормального описания выходит 45 символов это норм?
>во вторых тебе нужен не он.
Таки да, истинный testDivClass что в data по прежнему null. А как к нему достать?
Ну так не удивительно, жаба же энтерпрайз стандарт, пишут сложные программы, а JS так, для макак. Визитку сделать для сайта, запрос в базу сделать, так что можно просто функцию x назвать, все равно это говно потом кому то переписывать
Ну, например:
openApiToJsonSchema(a)
makeJsonSchema(oapiDef)
toJsonSchema(oapiDef)
И так далее
Можно сокращать oapi, jssch.
Я бы выбрал вариант 2 или 3, т.к. название параметра является говорящим, и нет необходимости удлинять название функции.
Только будут еще функции для парсинга тела запроса, параметров в path и возможно в header, нужно конкретизировать.
makeQueryJSchema тогда так назову, спасибо за подсказку.
Просто надо сначала читать доку и статьи, а потом начинать кодить. useEffect - простой.
>useEffect - простой
Вообще конечно добавлю, что абсолютно всё кажется простым, после того как ты поймешь как оно работает. Я вот сейчас даже вспомнить не могу, почему у меня возникали какие-то проблемы в прошлом, над которыми я бился по нескольку дней подряд
Что, ксли я теье скажу, бывает так, когда вообще не возникает таких проблем в фундаментальных вопросах, над которыми ты бьешься несколько дней.
>проблем в фундаментальных вопросах
Я не понял к чему ты это вообще? Что язык лучше учить и знать хорошо, чем не учить и знать плохо? Совет из разряда - выучи наизусть весь CS, всю доку Js, всю доку реакта, все существующие паттерны, алгоритмы, тонкости, жирности и имей опыт работы с этим более 10 лет и всё. Как будто я блядь и без тебя этого не знаю
Динамикоговноед не палится.
Блжат, Реукт, я почему-то забыл об этом написать
Ок, думал просто может есть возможность взять текущий компонент и добавить в него новые какие-то возможности, чтобы у меня был один исходный компонент, но который в ненужных местах был по логике проще, ну ок, сделаю так
Если есть лишние 180 баксов, то в сторону epic react. Какого-то другого места, где были бы собраны и хорошо описаны продвинутые паттерны я не знаю. Твою задачу можно решить кучей разных путей: через передачу ноды в пропсах, через композицию, через clone elements и еще кучей более извращенных.
Анон, подскажи, пожалуйста, бесплатную IDE под Angular. Советуют Atom, но это же ёбаное убожество, даже после this. не работает автоподстановка. Ну и ошибки не подчеркивает.
VSCode жеж
Качай вебшторм, активируй триал на 30 дней. Потом гугли webstorm infinite trial / reset webstorm trial, что-то такое. Вуаля, у тебя бесплатный вебшторм. Он самый топовый для Ангуляра.
Ну или как вариант vs code, но там надо накатывать плагины, такое себе...
На вид все ок вроде. Только ты все равно чем-то не тем занят, гейм луп должен через requestAnimationFrame работать и учитывать дельту времени в анимациях. Гугли как его делать на JS.
В Angular обычно не юзают setInterval. Лучше через RxJs создай timer и работай с ним.
Джвач, а почему в реакте перестают использовать class-based components?
class olol extends Component
Мелочь удобнее на хуках делать. Я что-то нетривиальное по старинке предпочитаю делать.
Функциональные удобнее и лаконичнее. А useEffect так вообще прекрасный швейцарский нож — заменяет сразу пачку методов жизненного цикла и убирает кучу выражений типа if (props.foo !== prevProps.foo) { ... }.
Тому шо они не минимифицируются.
Дальше конечно я сейчас хочу все основы по чистому ЖСу задрочить, а то обосрался на собесе на этой почве. Но вот само портфолио для джуна, что там прям такого крутого должно быть? Подразумевается ведь, что ты не должен вроде бы совсем лютое что-то там делать? Просто я даже на это потратил примерно 3 недели, занимался по 9-12 часов в день, вообще без выходных, ну много хуйни переделывал, когда понимал что не совсем элегантно получилось и если что-то новое пилить, опять времени дохуя уйдет, лучше вместо этого голый Js потеребить?
Пиздец уже пишу как шиз, надо пробздеться немного, сильно уж не бейте
Лучше всего писать в вебшторме используя горячие клавиши вима+все возможности шторма
const a = {
a: 1,
doSmth() {}
}
или
const a = class {
constructor() {
this.a = 1;
}
doSmth() {}
}
Бля. Не помню где прочитал, что нужно не this.doSmth() писать, а нью класс делать, будто бы так правильнее.
Разница - она не здесь, а дальше.
Когда у тебя есть класс - ты можешь потом создавать много его экземпляров.
В жс (фронтенде) такое очень редко нужно.
Если тебе нужен всего один объект - то это 1-й вариант.
Совсем не обязательно.
Он - ангулярщик, скорее всего.
В TS - важнее интерфейсы.
А реализацией может быть любой объект, хоть литерал (как вариант 1 выше), хоть экземпляр класса.
В TS они обретают смысл, когда тебе нужно описать какую-то сущность и гарантировать что в коде ты не будешь обращаться к методам/полям которых у этой сущности нет, а также типизировать методы и функции, что позволит определять их предназначение без необходимости чтения кода тела функции/метода.
Мне нужно чтобы совершенствоваться. Помогите.
Нет, не правильно.
voteIds -> voteTimers
pushForThirtySec - очень плохо.
К-во секунд должно передаваться как параметр.
И, ни в коем случае нельзя делать подобное частью названия, это пиздец вообще.
Слово push имеет вполне определённый смысл. В коде у тебя ничего подобного не происходит.
Вообще смысл того, что ты хочешь сделать, не очень понятен.
Библиотеки, ты хотел сказать?
Дико уёбищный material design, который нормально выгляди только на мобилах и больше ни для чего не годен?
Понимаю.
>Стоит писать свой или стилизовать готовый?
Смотря какова цель. Можно даже совместить.
Пиши свой, все готовые хуйня — то стилизуются косоебо, то работают криво.
написал уже штук шесть для разных проектов
Все там нормально устанавливается. В консоли пустой массив потому что замыкания в JS так работают. Реакт же не мутирует products.
Мне кажется, так нельзя смотреть products.
Попробуй сделать setInterval(()=> console.log(products), 0), например.
Что блин значит «нормально»? С моей точки зрения то как оно у тебя работает на скриншотах это и есть нормально — в products был пустой массив и выводится пустой массив. Стейт в Реакте иммутабелен, я не понимаю чего от него ждешь. Поставь console.log прямо в компоненте, и увидишь, что триггернулся рендер с новыми данными. Что у тебя там в другом компоненте происходило я понятия не имею.
Не ебу что ты там делаешь,, но скорее всего у тебя получение этих данных не происходит мгновенно, а после обновления они у тебя уже не обновляются, потому что ты пустой массив у юзэффекта
Потому что setState() асинхронный, иди читай доку реакта от корки до корки.
И изменение стейта и сам рендер очень даже синхронные, в чем легко убедиться, вызывав в эффекте последовательно setState и лог в setTimeout с 0. Коллбэк в setTimeout приедет в консоль уже после рендера с новыми данными.
Вот якобы перевод http://www.combook.ru/product/12023280/ но на торрентах нет, и сайт какой-то хуйпоймический, на озонах нет
Сразу в статик написать allobjects и добавлять туда при создании?
Создаёшь абстрактную фабрику классов и в неё скидываешь инфу о созданных объектах каждого класса.
Мне нужно ресетнуть все объекты созданные определённым классом.
Я вот думаю:
let a = new MyClass();
MyClass.allobjects.push(a);
И чтобы ресетнуть, нужно будет просто пройтись по массиву. Хуня?
>Сразу в статик написать allobjects и добавлять туда при создании?
И сразу скажи досвидос памяти. Тут нужен WeakSet
>>75635
> let a = new MyClass();
> MyClass.allobjects.push(a)
Без фабрики заебешься после каждого new делать push, где-нибудь обязательно забудешь это сделать, а когда надо будет поменять поведение так же заебешься везде менять
>И сразу скажи досвидос памяти.
Почему? Там же только ссылки.
>Тут нужен WeakSet
Как это поможет? По нему даже итерироваться нельзя.
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
ПЕРЕКАТ >>1875685 (OP)
Чувак, он имел в виду, очевидно, то, что эффект от его выполнения будет виден после обработки всей текущей очереди событий.
Т.е., чтобы увидеть результат, надо делать setTimeout(..., 0);
Создаешь статичное поле-массив у этого класса, в конструкторе класса пишешь MyClass.StaticArrayOfInstances.push(this);
В дополнении к этому создаешь статичный метод ResetInstances который будет делать что то вроде: MyClass.StaticArrayOfInstances.forEach(e=>e.reset());
Что только не велосипедят, лишь бы EventEmitter не использовать
Так конструктор выше делается, чем объявляется статическая переменная.
Помогите новичку в React, пожалуйста. Есть родительский компонент, который содержит несколько дочерних компонентов-форм, которые можно добавлять и удалять по нажатию кнопки в родительском компоненте. Изначально количество компонентов зависит от того, какие данные пришлет сервер. В родительском компоненте есть еще кнопка "Отправить", по нажатию которой нужно забрать данные из всех дочерних форм и отправить на сервер.
Как получить доступ к данным в дочерних формах из родительского компонента? Я хотел создать для каждого дочернего компонента стейт в родительском и передать его в пропсах, но React не позволяет использовать useState в цикле.
Редукс.
Ну и? Функция то не синхронно обновляет стейт, а ставит в очередь, пиздец дожили фронтендеры читать разучились.
>И изменение стейта и сам рендер очень даже синхронные
>в чем можно убедится вызвав асинхронную функцию которая поставит колбек сеттаймаута в конец очереди эвентлупа
Чел, ты сам себе противоречишь, иди читай что такое евент луп и что такое асинхнонные действия и синхронные.
А зачем тебе useState в цикле если ты можешь в главном компоненте динамически создать объект по данным с бека в useEffect и уже его положить в useState? Редукс можно использовать конечно если у тебя приложуха немаленькая, но если у тебя в приложении ничего кроме этой формы нет то никакой редукс там не нужен, можно вполне обойтись пропсами.
Есть какой-нибудь список задач на UI на которых можно реакт тренировать? А то чёт я кроме todo листа никаких идей не нахожу.
Лол, лучшее, что есть в ру сегменте
Бля, на проекте подрузили js abac (Attribute Based Access Control) типо так пизже, но у меня уже глаза вытекают, что это за хрень и нафига нужна? Без нее ж нормально жили
быстро порвался, безкомпонентный
Возможно ли, на скриптах, реализовать минимальный функционал переводчика веб-страниц, в виде какого-нибудь расширения, чтобы просто задать там дефолтный язык - русский, и не пихать каждый раз копипасты в тренслейт гуголь ком?
Чтобы оно переводило абы-как, а что не переводится (например код) - оставляло как есть.
Да, да. И главное, чтобы база для перевода и автозамены - хранилась локально, а не чтобы в сеть куда-то утекала инфа.
А то реакт ругается, когда я вызываю эту функцию...
Мол инфинити луп, много ререндеров
Наверстал галлерею изображений - аж самому нравится.
Я не умею в адаптивную верстку и поэтому поставил бутстрап. Все красиво, но галлерея пошла по пизде, вместо красивой секти, которая даже на телефонах смотрится нормально, там одно изображение на весь экран. Можно ли как-то отменить правило коллапса бутстрапа для контейнера и его потомков?
Первый пик - без бутстрапа.
Второй - с ним.
Вот и хотелось бы как-то отменить ресайз для контейнера. Я второй раз так наверстать не смогу прост.
Пишу на TypeScript и у меня есть класс с большим количеством перегруженных методов.
Декларации перегрузок в полтора экрана меня заебали, и я хочу вынести их куда-нибудь в другое место, а в классе оставить только имплементацию, и разумеется, хочу я это сделать так, чтобы все перегрузки были видны и проверялись компилятором (иначе зачем перегрузки нужны, собственно).
Вопрос таков: могу ли я это как-нибудь сделать, и если могу, то как?
Буду рад любой помощи
Cори, я не знал, что у массива есть push/pop
Дорогой, дневник.
Вопрос, снимается. Нужна была проверка, что в переменной не null. Алсо, почитал доку HTMLElement интерфейс наследует интерфейс Element, а тот наследует Node.
На скриншоте описал вопрос. Извините за больше чем пару строк кода.
JSBin: https://jsbin.com/futoramexe/edit?js,console
Кому делать нехуй, но есть опыт, и время - могу предложить идею.
Наверняка, можно взять, короче,
и перепилить всю серверную часть этой вот наноборды:
https://github.com/nanoboard/nanoboard/releases
на pure JavaScript.
Полностью всю, или по большей части,
вынести всё возможное - на клиентскую сторону,
чтобы всё client-side работало, в браузере.
Парсинг, можно было бы реализовать, парся контейнеры, после конвертации PNG в dataURL.
Стеганографию, тоже можно было бы реализовать client-side,
с помощью async-функций или promise.
Базу данных, и контейнеры, можно было бы сохранять, используя FileSystem API,
с возможностью конвертации базы данных в JSON-формат,
с последующим сливом базы в JSON из браузера.
Если чо, то даже каптчу - можно нарезать, и в браузере, client-side юзать:
https://github.com/username1565/nanoboard-javascript-captcha
Всё равно, всё это вместе: серверная часть (локального сервера) + клиентская сторона (скрипты) -
всё это вместе, одна большая локальная - читалка нанопостов.
Почему бы не сделать её клинтской?
В общем, гляньте, посмотрите код, может всё-таки не всё можно перепилить, а может и всё. Бггыы.
Кому делать нехуй, но есть опыт, и время - могу предложить идею.
Наверняка, можно взять, короче,
и перепилить всю серверную часть этой вот наноборды:
https://github.com/nanoboard/nanoboard/releases
на pure JavaScript.
Полностью всю, или по большей части,
вынести всё возможное - на клиентскую сторону,
чтобы всё client-side работало, в браузере.
Парсинг, можно было бы реализовать, парся контейнеры, после конвертации PNG в dataURL.
Стеганографию, тоже можно было бы реализовать client-side,
с помощью async-функций или promise.
Базу данных, и контейнеры, можно было бы сохранять, используя FileSystem API,
с возможностью конвертации базы данных в JSON-формат,
с последующим сливом базы в JSON из браузера.
Если чо, то даже каптчу - можно нарезать, и в браузере, client-side юзать:
https://github.com/username1565/nanoboard-javascript-captcha
Всё равно, всё это вместе: серверная часть (локального сервера) + клиентская сторона (скрипты) -
всё это вместе, одна большая локальная - читалка нанопостов.
Почему бы не сделать её клинтской?
В общем, гляньте, посмотрите код, может всё-таки не всё можно перепилить, а может и всё. Бггыы.
Опционально, наверняка, серверную часть, можно было бы на Node.JS перепилить, но это уже на крайняк как-бы, если на клиенте нельзя сделать. Потому что такая зависимость как Node.JS это был бы огромный минус для cliet-side софтины, которую можно таскать в zip-архиве, на флешке.
Сам получил, сам решай
Задание:
Разработать "чистую" функцию treeSum, которая получает массив, элементы которого могут быть числами или снова массивами, и так до любого уровня. Функция должна рассчитать и вернуть сумму всех числовых элементов массива со всех уровней. При написании функции не описывать каких-либо вложенных в неё функций. Проверить работу можно на следующем массиве (сумма 50):
[ 5, 7,
[ 4, [2], 8, [1, 3], 2],
[ 9, [] ],
1, 8
]
Заранее, пасиба любому неравнодушному.
Я вообще не вдупляю, как работает рекурсия. Терроризировал и препода, и видосы, и учебники. Вот прям максимально не укладывается в голову, хз. Хотя всё остальное отлично идёт.
В чём проблема из функции f вызвать функцию f, для какого-то "меньшего" аргумента?
Посмотри вот это: >>1871004 →
Но, как показало последующее обсуждение, для восприятия этой метафоры тоже нужно иметь некоторую базу, для тёти маши с улицы она не подходит.
Вот тебе ещё одна метафора рекурсивного алгоритма, из той же книги:
Рекурсия - это делегирование решения.
Т.е. ты не можешь решить задачу сам, потому, что она слишком большая для тебя.
Ты делегируешь решение части задачи своему другу.
Ты не должен думать, как он её решит - он решит, это точно.
Затем - смотришь, можешь ли ты её решить оставшуюся часть?
Нет - снова делегируешь кусочек другому приятелю.
И так далее, пока задача не станет достаточно маленькой, чтобы ты решил её (оставшийся кусочек) сам.
А потом ты собираешь у друзей решения всех кусочков, которые ты им делегировал, и получаешь полное решение задачи.
Подозреваю, что и эта метафора с нуля может не дойти.
Вот тебе рекурсивная сумма массива.
С хвостовой рекурсией.
Смотри и вывод в консоль тоже.
https://jsfiddle.net/hgznmycj/
Чувак, хвостовая рекурсия просто есть или нет.
Она не в js, она сама по себе.
А то, чего нет в js - называется tail call elimination (tail call optimisation).
А мутация там - для наглядности и простоты кода.
Это пример.
Спасибо. В принципе, это совсем на пальцах. Засейвлю и буду подглядывать, подставляя под синтаксис.
Никогда не приходилось думать о хвостовой рекурсии вне контекста tco, но ты прав, да.
Ну, думать о ней вне контекста tco имеет смысл для ручной оптимизации.
Т.е. некоторые вещи удобно осмысливать в рекурсивном виде, а потом просто превратить в цикл.
Это копия, сохраненная 27 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.