Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
- Напишите аналог функции console.count но вовзращающая число в виде результата, а не выводящая его в консоль - Напишите ленивые map, reduce, filter, every, some, чтобы для цепочки вызовов этих методов, фактически происходила только одна итерация - Напишите range(start, end, step) где step может быть нецелым, start и end как положительным так и отрицательным, и бесконечным в том числе - Напишите класс итерируемой слабой коллекции, напримиер WeakSet, который был бы наследником оригинального WeakSet, имплементировал все его методы, но при этом по элементам множества можно было бы итерироваться.
Каким образом лучше всего задрочить чистый JS, если я довольно неплохо знаю реакт? Просто книжки читать это пиздец, я вообще нихуя не запомню же. Лучше курсы какие-то проходить одновременно практикуясь, или лучше вообще просто начать что-то писать на чистом и там постепенно научишься? Ну а может лучше codewars? Еще был бы хороший вариант, это брать какие-нибудь проекты гитхабовские, и переписывать. Но есть такая проблема, что ты можешь уметь сделать что-то рабочее, но при этом не будешь знать каких-то нюансов. При этом без какой-то работы над большим проектом хуй что запомнишь же, сука. А пилить новый проект просто на ЖС без реакта я в рот ебал. Что делать?
>>1870960 >>1870950 Да потому что тут начали в прошлом треде писать, что тебе чуть ли не на ассемблере реверс инженирить нужно, чтобы джуном куда-то пойти. У меня изначально подход к изучению был практический. Сначала делал большой курс по реакту, и сделал несколько проектов паралельных. Потом думал сделаю то же самое с чистым жсом и все, можно катиться. Но тут блядь оказывается, что >>1870887, еще нашел какие-то тестывые задания у кого-то на ХХ, там вопросы из разряда чему равно +!NaN, или можно ли после Catch еще разок Then вписывать, ну вот как нахуй всю эту хуетристику можно в теории выучить? Я понимаю что конкретно эти вещи гугляться за 2.5 наносекунды, но получается же что ЭТО КЛАССИКА, ЭТО ЗНАТЬ НАДО. А я по сути придумываю себе задачи, и дальше начинаю ходить по докам, гитхабам и и стаковерфлоу. В итоге понимание происходит гораздо лучше, да еще и определенные патерны начинаешь понимать в практическом виде. А потом вот возьмут и ебанут какие-нибудь подобные вопросы. И выходит так, что ты можешь запилить какую-нибудь SPA с редаксом, а кто-то нихуя сделать не может, но зато знает блядь, что оказывается вот после catch можно еще раз then делать. И хули делать со всеми этими мелочами? Просто как стих выучить язык что ли нахуй?
Добавляю элемент на странице где-то сверху над вьюпортом. Содержимое во вьюпорте съезжает вниз. Как этого избежать? Чтобы было незаметно, что сверху что-то добавилось, чтобы как-бы элементы отодвинул содержимое не под ним, а над ним.
Двигать вьюпорт? А если добавление с анимацией? Как синхронизировать?
>>1870977 >делал большой курс по реакту, spa, редуксы
Типичный набор говноеда, который нихуя не понимает и не знает, какие нахуй проекты вася, туду или буксервисы и старыарсбд от говноедов это крупные проекты? Ххарк пьфу в твое ебло
>>1870977 >но зато знает блядь, что оказывается вот после catch можно еще раз then делать. Это ты неудачный пример привёл. Такое надо знать, иначе ты не понимаешь сути промисов до конца.
>>1870990 Да он нихуя не понимает. Если бы релаьно делал что-то на рякте, такое постоянно попадалосмь бы. А он тупо смакакил хуету с курсов и уверен, что вот все, теперь он про-реактёр.
>>1870977 > как нахуй всю эту хуетристику можно в теории выучить? А всё дело, что ее надо не выучивать, а изучать. Если ты что-то понимаешь, ты это блядь просто понимаешь. Это не надо как-то надрываться и помнить. Тебя не просят перечисялть названия методов библиотек и сигнатуры функицй, тебя про принципы спрашивают. Это азы, блядь. Так же, как ты не силишься каждый раз вспоминая, по какому принципу работает сложение,и что умножение можно выразить через него, так же, ты не должен надрываться при вопросах почему при неявном приведение типов получилось именно так, а не иначе, и почему у тебя исключение в микротаксе не отловилось в основном потоке.
Ты вот спрашиваешь НУ КАК. Задайся вопросом, а откуда блядь все остальные это знают? Или по-твоему все сидят и дрочат отдельные кейсы какие-то?
Чтобы понять как работает жс, ДОСТАТОЧНО прочитать ебаную спеку от корки до корки, с дочитыванием непонятного в сопутсвующих источниках (хоть той же википедии, для определения терминов) Всё. Но нихуя, никто, никогда, этого не делает. Всем хочется, чтобы все на блюдечке с голубой каемочкой. Увы и ах. Сверх-высококровневое программирвоание это высокие абстракции. И поясняют тебе принципы такими же высокими абстракциями, расчитыва на то, что ты сука такая,у же вкурил какого-нибудьТаненбаума или что-то в таком духе, и знаешь, как у тебя пекарня работает. А потому никто не ссылается в каждом абзаце на пояснение что такое control flow. Никто не разжевывает тебе в чем суть тех или иных концепций, потому чтов 2020 тебе уже написали целую энциклопедию, в которую ты можешь зайти на любой новый для тебя кейс с понятием и вкурить информацию, просерф все сопуствующие ссылки и темы. Поэтому когда от тебя просят написать ленивую реализацию какой-то хуйни, никто тебе в тз не вписывает четыре листа поясненяи с определениями концепции строгости вычсилений и чем вызов по имени отличается от вызовва по требованию или по значению. И все в таком духе.
У тебя, есть голова, и практически бесконечный, блядь, БЕСПЛАТНЫЙ, истоник знаний - целый, мать его нахуй, интернет. Но ты хочешь сидеть в треде, и вместо того, чтобы идти вбивать в гугл свои вопросы и ключевые слова, и ЧИТАТЬ, просить чтобы тебе дали что-то блядь почитать.
Ой блять это ДОРАСТИ нужно до ыункцианального пограмирования, уже блять дорасли без типизации что надо тайпскрип прикручивать если чтото сложнее туду делаешь
>>1871010 Тебе кажется что этот список огромен, потмоу что ты дальше собственного носа не видишь. В основе там лежит с гулькин хуй концепций, которые надо понять, а все остальное строится и выражается через них. Уровни абстракций - ты понимаешь, твою мать, что это такое?
>>1870999 Куда больше заебали токсичные снобы, которые предлагают всем прочитать спеку JS, десять книг по паттернам и алгоритмам и собрать свой процессор из песка прежде чем что-то писать в треде.
устраивался на первую работу на 100к+ не зная что такое event loop, но умея что-то писать на реакте
>>1870999 > >У тебя, есть голова, и практически бесконечный, блядь, БЕСПЛАТНЫЙ, истоник знаний - целый, мать его нахуй, интернет. Но ты хочешь сидеть в треде, и вместо того, чтобы идти вбивать в гугл свои вопросы и ключевые слова, и ЧИТАТЬ, просить чтобы тебе дали что-то блядь почитать. Да в том и дело, сука, что информации овердохуя. Начиная от всех тонкостей CSS, заканчивая различными изъебствами фреймворков, да чтобы сраную кнопку передвинуть тебе уже ноду надо запускать, чтобы у тебя sass работал, ты же блядь прекрасно понимаешь, что я имею ввиду. И проблма блядь в том нахуй, что даже написав несколько сайтов на JS ты можешь ни разу не столкнуться с какими-то мелочами, по которым тебя потом будут ебать раскаленной кочергой в жопу на собесе, ПРОСТО ПОТОМУ ЧТО ТЕБЕ КОНКРЕТНО ЭТО НЕ ПОПАДАЛОСЬ И ТЫ НЕ ШЕЛ В ДОКУ ЧИТАЬ О ТОМ, ЧТО ТАМ БЛЯДЬ ЕСТЬ И КАКИЕ ТАМ БЫВАЮТ ИСКЛЮЧЕНИЯ, А ПОТОМ ЕЩЕ ПОНЯТЬ ЧТО ЭТА ДОКА БЫЛА НАПИСАНА 10 МИНУТ НАЗАД И ЗА ПОСЛЕДНИЕ 9 ЭТА ФИЧА ОБНОВИЛАСЬ 30 РАЗ И ТЕПЕРЬ ТАК ВООБЩЕ НИКТО НЕ ДЛАЕТ УЖЕ ЦЕЛЫХ 8 МИНУТ. Я блядь целыми днями учусь нахуй последние 4 месяца пидор ты ебанный и выдрочил весь реакт, все что это говно окружает и верстку вдоль и поперек сука, да можешь пиздеть о том как это просто, все просто от лени же в кодеры не идут наверное, заебал уже этот высокомерный принебрежительный тон, сука ну вот просто 100%й детектор пидорахи поднявшей своё обосранное рыло из корзины с свинячим кормом, и возомнившим о себе уже хуй знает что. Так что не надо тут пиздеть мне о том, что я не могу найти в интернете инфу, и тем более пиздеть о том, в каокй последовательности нужно это всё учить, потому что сейчас у меня куда больше практического понимания о том, как проектируются приложения и как вообще всё это изнутри работает. Вопрос был исключительно в том, какой из вариантов наиболее эфективный. Блядь, чтоб я еше раз о чем-то тут спросил, пиздец
>>1871020 Ты тупой куско говна, который не обращает внимание на то, когда и в каких контекстах это предлагают сделать. Когда человек пиходит и спрашивате - а как блядь? А почему? Всем похуй на вас долбоёбов. Никого вообще не ебет будете вы что-то учить или нет. Ттут люди сидят и тратят сове время поясняя вам, что следовало бы сделать, а ваше право прислушивать или нет.
Ты можешь дальше бегать по тредам и сгорящей жопой проецировать свою ошибку выжевшего причитая -ррря, душнилы, снобы, ррряя. Это тоже твое право. Только ты на вопрос - а как понять почему это работает так - не отвечаешь. Ты лишь отрицаешь. Ты - ебаный кукаретик, которому повезло залетеь на рутиное место и ты сидишь в нем не развиваясь. Ты никогда не поднимешься выше, ты - червь, которого можно заменить. А меня нельзя. И в этом разница между нами.
>>1871012 БЛЯДЬ, да как я должен это загуглить, если это вообще НИ РАЗУ НИГДЕ мне не встретилось? Я что блядь телепатически должен был понять, что это вообще существует?
>>1871028 >, по которым тебя потом будут ебать раскаленной кочергой в жопу на собесе Ты же ебанько, сойбой. Твоя задача - не пройти ВСЕсобеседования, блядь. А пройти одно. Где-то спросят одно, где-то другое, а скорее всего вообще дадут тестовое - делай и все, никаких вопросов лишних.
Ты вообще хоть на одном собеседовании был-то, чтобы вот так решать?
>>1871024 В посте, на который я отвечаю. Сидит какой-то дед в треде вкатывальщиков и пердит на всех мол «у вас есть целый интернет, хули вы сюда пришли, заставили меня бедного что-то писать, ох-ох». Хотя этот тред точно такая же часть интернета, как и Гугл со SO.
>>1871028 Я вот на это передергивание даже отвечать не буду. Ты просто не вникаешь даже в то, что тебе пишут. Короче, мне похуй, сиди дальше. Задавайся вопросами.
>>1871034 Если тебе это не встречалось, значит ты ровно нихуя не делал с асинхронностью и получением данных с сервера. А значить знаний по теме у тебя не более 30%. Просто сидишь дальше учишь, теребишь пет-проджект. Со временем встретится.
>>1870977 >там вопросы из разряда чему равно +!NaN 1, потому что ! инверсит булевое значение NaN, которое равно false, которое становится true, которое благодаря унарному оператору + переводит true в числовое значение, которым является 1.
Как такое "в теории" выучить? Ну, например, читать книги.
>>1871033 Подожди, ты правда думаешь что своими охуительным поучениями типа «иди прочитай спеку от корки до корки», или «прежде чем подходить к высоким абстракциям надо вкурить Таненбаума» кому-то помогаешь, лол?
>Ты никогда не поднимешься выше, ты - червь, которого можно заменить. Ебать прорвало. Ну съеби с треда на годик, инфа 102%, что никто этого даже не заметит.
>>1871048 Блядь, всё что мне встречалось с асинхронностью в 6 курсах, каждый из которых больше 10 часов по длительност, и 4 гитхаб проекта которые я разбиралсь и переписывал самостоятельно это - запросы уровня : fetch/axios.then.then.catch И никаких нахуй ни разу я не встречал примеров с then.catch.then... Но конечно я с ассинхронностью не работабл бялдь
>>1871054 Когда я съебал на месяц, у вас тред за 1,5к постов в бамплимит ушел, потому что вы мудаки его даже перекатить не можете, чем я уже не первый год занимаюсь. Так что соси хуй дальше.
>>1871052 >булевое значение NaN, которое равно false
И еще 100500 забавных историй, еще может номер страницы из спецификации выучить, как студенты языковеды могут по иероглифу сказать какой у него номер в словаре
>>1871063 То есть ты съебал, а тред внезапно не умер, общение продолжилось и на вопросы людям отвечали? Oh well. Не хочешь повторить? Я перекачу, обещаю.
>>1871072 Это базовые основы языка, и знаешь что самое смешное? Я даже не знаю что такое промисы сейчас. Не дочитал в спеке про это. То есть вот есть ты, макака которая учит язык по видеокурсикам каких-то даунов с Юдеми, а есть я, который учит язык по годным книжкам. И между нами девочками ты на стороне тех, кто не знает что NaN, undefined и null равны false. Может ты ещё и не знаешь про то какая разница между +0 и -0?
>>1871001 Он тоже не очень понял про лямбды. Это не "усложнять концепцию". В математике у функции один аргумент. Несколько аргументов - это тоже один аргумент (кортеж).
Все помнить не надо. Основные вещи и так осядут в голове со временем, малоиспользуемая хуита выветрится. Вон как-то чел выше гордится знанием про +0 и -0, например, а я вообще не ебу в чем там отличия, хотя на JS уже почти 10 лет пишу.
>>1871001 >13 дней назад Вот пиздить канделябрами надо пидоров, которые такое придумали. Высосали из хуя user expirience, лол. А потом смотришь на скриншот, и видишь фигу.
>>1871096 Это не обязательно (если вообще правда). Зависит от реализации. Просто catch может быть объявлен в любом месте. Я часто делаю просто в самом начале.
>>1871098 Так это у него и не табличка, а хуета уровня wtf, которой ему подобные любят кичиться, не понимая, что все сводится к определенной логике этого самого приведения.
>>1871094 >== Даже не смешно тебя разъёбывать. Всё, что тебе нужно знать об этой картинке, это то что non strict equality operator имеет left-to-right ассоциативность.
>>1870999 >Поэтому когда от тебя просят написать ленивую реализацию какой-то хуйни, Это легко, когда ты постоянно занимаешься реализациями "ленивой хуйни", скажем чтобы олимпиадные задачки решать. А если таким не занимаешься или занимался давно, то сложно. Магией с NaN, неявным приведением типов и т.п. лучше избегать, писать более чёткий и понятный код, не закладываясь на специфику языка. Иначе ты делаешь багоёмкий неподдерживаемый код.
Программирование вообще широкая специальность, можно писать одновременно на разных языках, так сложно помнить всю специфику конкретных платформ.
>>1871059 >И никаких нахуй ни разу я не встречал примеров с then.catch.then... >Но конечно я с ассинхронностью не работабл бялдь Вообще совершенно нормальная ситуация, когда ты ожидаешь ошибку и продолжаешь какие-то осмысленные действия после неё. Естественный workflow, если подумать. И в принципе, если нужен спец на чисто асинхронные задачи, вполне разумно эти вещи спрашивать. Это довольно базовая вещь для асинхронности. А это довольно большое направление.
Хотя сейчас, мне кажется, всё-таки больше уходят в async/await, чем then/catch.
ИМХО дрочево на специфику языка разумно, если твоя работа делать какой-нибудь фреймворк или библиотеку. Там уже хочется, чтобы разработчики действительно хорошо понимали язык, а не просто хорошо делали прикладные вещи.
>>1871094 Ну давай разберём по порядку: "" == "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.
>>1871105 Да какая разница, что ты принесёшь. Это только скажем всем о твоём невежестве.
>>1871138 false преобразуется в 0 по дефолту. true преобразуется в 1. Строки преобразуются в числа, если один из сравнимых типов является числом. Сначала false стал 0, "false" попытался конвертироваться в число, но это всё равно что попытаться конвертировать "zero" в 0.
>>1871020 >устраивался на первую работу на 100к+ не зная что такое event loop, но умея что-то писать на реакте Когда это было? Лет десять назад вообще достаточно было по html одну книжку полистать.
А возможно через JS удалить например на ютубе все элементы, кроме первой строки с роликами? Тут суть именно в том, что по мере удаления, динамически будут подгружаться новые превьюхи видосов. Вот пример удаления обычных элементов, например если их более 3-х в списке: https://qna.habr.com/q/405031 А реально ли удалить как на примере с тем же ютубом?
Я бы в теории сделал что-то вроде content.remove(); А потом подгрузил первую полоску. Только вот не знаю реально ли так сделать?
>>1871151 А ты как хотел? На вакансию по сто-двести человек выстраивается, как думаешь кого возьмут, студня посмотревшего курс по реакту или господина способного пояснить за лямбда-исчисление и IEEE 754?
>>1871160 >или господина способного пояснить за лямбда-исчисление и IEEE 754 А такие не выстраиваются. Таких немного. За таким компании сами охотятся. У них и требования будут, что обосрешься. Плюс такие задроты всегда немного ёбнутые и нужно под них подстраиваться, а не наоборот.
>>1871164 >У них и требования будут, что обосрешься. У таких тоже когда-то не было практического промышленного опыта, а только теория. Так что ты неправ.
У меня асинхронная функция делающая xmlrequset и вызывающая промис. В случае fullfilled делает одно, в случае rejected делает другое. И вот проблема. Я могу в процессе выполнения сделать xmlrequest.abort() и промис вернёт rejected. Но в случае если я остановил реквест, нужно делать совсем другое.
>>1871210 Он ощущался будто подгретый студень, я обернулся на него - да это ж Путин, ахуеть. Тот час затанцевали тараканы мураши, пока Владимир проникал в меня рывками я решил дробить себя на выдохе постыдно, лопотать, и тут он вынул хер и на лицо спустил мне, благодать.
>>1871223 > When a request is aborted, its readyState is changed to XMLHttpRequest.UNSENT (0) and the request's status code is set to 0 Надо тогда проверять вот на это и если выполняется, то не режектить а резолвить
Позвали на собес на следующей неделе, сверхвысоких практических знаний не нужно, но можете написать какие самые основные моменты нужно понимать хорошо? Помню в прошлых тредах были Reflow, Hoisting, Closure, CSRF, какие еще такие глоабальные базовые вещи необходимо знать, без особого вникания в детали? Особенно я думаю подтянуть то, что касается работы с сетью
>>1871572 >Он был включен в несколько очень популярных библиотек Нет, серьезно, кроме шуток, целый модуль, который просто проверяет x%2===0? Он что-то еще делает? Зачем ставить модули, которые настолько очевидные и простые? Какой в этом смысл? Есть вообще какие-то ограничения по использованию модулей, или можно делать с ними все что хочешь, и использовать их в любых количествах?
>>1870977 >там вопросы из разряда чему равно +!NaN Все эти эти вопросы с подъёбами легко гуглятся по запросу "вопросы на собеседовании по js" или по типу того. Причём читать нужно и в рунете и в ангельском. Вопросы могут казаться тупыми, но они отражают твоё погружение в язык. И да, они учатся.
>>1871609 >Как будешь выучив отвечать на вопрос - почему? Ты вместо того чтобы такими тупыми вопросами в треде срать, лучше шёл бы учить язык, доболоёб. А то если ты выучил, а на вопрос "почему" ответишь не можешь, означает, что ты инвалид.
>>1871614 Это значит, что ты языка родного не знаешь. Выучить - это вызубрить. А то, что ты имеешь ввиду - это изучить. Выучивая ты ничего волшебным образом понимать не начинаешь, хуесос.
>>1871621 Мне конечно похуй на ваш срач, но отвечаешь вообще не тому человеку, который этот ворос изначально задавал, так что не понятно, о чем вы тут вообще спорите
>>1870885 (OP) Так блин, зашел на один сайт, захотел посмотреть что в консоли будет выводиться при общении с сервером, через chrome dev tools отредачил главный жс-файл (там ванильный жс был) и поставил лог в одну из js-функций типо processServerResponse Но по факту нихрена не произошло, лог не работал будто его не было. Что за хрень, мне казалось так можно вносить изменения в жс-код на клиенте
>>1870887 Для всего этого есть куча говна типа рыксы и итерабл экстеншс от тех же создателей. В JS дефакто нет ленивости в классическом понимании (рантайм не обеспечивает), есть генераторы и механизм подписок (висит в пропозалах спеки уже который год, если не считать кастомных решений).
>>1871724 Думаю, что дело в том, что жс уже загружен из кода. Т.е. (пере)определить в консоли фукнцию или переменную, например, ты можешь. И она будет (пере)загружена в этот момент. А когда ты редактируешь скрипт в тексте страницы - он не перезагружается. Но, это не точно.
Есть ли смысл коммитить каждый хеллоуворд на гитхаб, или лучше что повменяемее туда сохранять? Просто хочется чтобы там показывалась какая-то активность, чтобы было видно что я не в доту гонял всё это время, но и в то же время как будто бы смысла особого в этом нет для меня. Хотя может быть так будет потом проще вспомнить что я там учил
Есть список с объектами вида: {"objectType": "", "name": ""}
Мне надо чтобы в начале такого списка всегда были объекты с "objectType": "action" а если таких нет то ничего не делать. Как это наиболее изящно в жс сделать?
>>1871903 Ангуляр, конечно. Остальные фреймворки слишком запутанные и не понятные. Ангуляр, помимо адеватной структуры, еще и заточен под работу с тайпскриптом, что не может не радовать.
>>1871903 Реакт только если какая-нибудь совсем простая хуйня с графкулем. Ну или если фронт на кложе какой-нибудь Ангулар единственный полноценный веб фреймворк сегодня
Вот что мне делать дальше, как изучать JS когда я знаю основы и умею в реакт? Делать проекты сложнее и по мере реализации разных фич читать подбробно и разбирать как что работает? Или вообще забить на реакт и проекты, и какую-нибудь книгу навернуть? Трудно понять в каком направлении эффективнее всего будет двигаться дальше, с одной стороны без практики трудно что-то запоминать. С другой просто практиковаться не очень хорошо, потому что можешь сделать что-то рабочее, не зная о том, сколько там на самом деле уязвимостей и возможных ошибок
>>1872004 Делай своё, после чего смотри на чужое и сравнивай оба, стремись чтобы твоё превратилось в чужое, с поправкой на то что чужой код это код грамотных и опытных специалистов.
>>1872004 Делай проекты по тому что знаешь Не нравится или не получается - перекатывайся в другой язык, хотя бы средненькие знания жса уже будет большим плюсом
>>1872030 >>1872038 Все больше прихожу к тому, что нужно продолжать учить так, как я учил до этого -> практикой и просмотром кода на гитхабе.
>>1872039 Это всё прекрасно, я бы и вопросов не задавал, проблема тут только одна, без практики, т.е. хоть сколько-нибудь реального применения знаний на проекте это всё выветривается так же просто как и прочитывается.
>>1872049 >без практики, т.е. хоть сколько-нибудь реального применения знаний на проекте это всё выветривается так же просто как и прочитывается. А ты уверен, что это не надуманная мантра, которую ты повторяешь сам себе?
>>1872051 Ну я не первый день учусь же. Кроме того, прочитывание всего того, что ты скинул никак не конфликтует с практикой само по себе. Но за ресурс спасибо, я до этого только MDN считал официальной докой ЖСа, эту не видел
>>1872049 Всё так Если тебе в реальном проекте на реальной задаче и понадобится какая-то теория, полностью осозновая цель ты осилишь любую хуергу вплоть до вышмата за пару дней Только еще одна хуйня: барахтаясь на галерном дне за бутерброды на самом деле проекты могут быть даже легче твоих петов, так что не перенапрягайся сильно
>>1872082 >полностью осозновая цель ты осилишь любую хуергу вплоть до вышмата за пару дней Кек, нет. >>1872064 Расскажи мне про "процесс обучения", ибо я на 100% уверен что под этим набором букв нет никакого смысла, и ты используешь его как баззворд. >>1872068 >Ну я не первый день учусь же Практика и просмотр кода на гитхабе это далеко не "учусь". +!NaN, как мы выяснили в этом треде, на практике понять ты не сможешь.
>>1872286 Документация на сайте охуенна. Куча инфы в интернете. Куча курсов, видео и т.п. - гуглишь vue tutorial 2020 Например - https://scrimba.com/topic/vue
Тут всё зависит от того, что ты на данный момент знаешь. И насколько тебе понятны основные идеи.
>>1870885 (OP) Когда говорят про React, то везде, начиная с его документации, заканчивая собесом в веб студию в Бердянске, будут говорить (спрашивать) о его эффективности. Типа виртуал дом, перерисовка, вау. Когда я только начинал учить, то думал, что речь идёт о сравнении с Ванилой (лол), потом оказалось, что с фреймворками того времени (2013) Но поясните, зачем сейчас ставить это в главу угла, если тот же Ангуляр и вью обгоняет Реакт в разных ситуациях? Логичней было бы на месте фейсбука рассказывать про его мобильность и легкообучаемость, что так завлекает всех от вайтишников до умелых спецов, которым просто лень сидеть за докой.
>>1872340 У Реакта маркетинг. Мы всеголишь библиотека. Посмотрите как мы мало весим и вообще какой мы гибкий инструмент. То что на этой либе нихуя вообще нельзя сделать умалчивается конечно.
>>1872340 >Когда говорят про React, то везде, начиная с его документации, заканчивая собесом в веб студию в Бердянске, будут говорить (спрашивать) о его эффективности. Реакт создавался с фокусом не на производительность, а на удобной и предсказуемой модели преобразования стейта в DOM. С чем он собсна и справляется. Хуй знает откуда ты взял эту телегу про его невероятную эффективность.
>>1872340 Потому что в фаанговых поделках хватает ебовости архитектуры для выстраивания однонаправленного флоу на фронте Или ты думаешь что 250к$/год жс инженер редаксы к реакту коннектят?
>>1872340 >а на удобной и предсказуемой модели преобразования стейта в DOM Но, потом что-то пошло не так, лол. На практике - стало не очень удобно, и не очень предсказуемо.
Единственно правильный ответ, почему люди продолжают использовать реакт - хуй знает почему, вот почему.
Для игры понасоздавал разных объектов с разными собственными функциями. Все они самостоятельны и не используют другие объекты. Работают только сами с собой. Например объект информации об игроках и объект, отвечающий за перемещение игроков в команды.
Теперь мне нужно чтобы эти объекты взаимодействовали друг с другом, типа:
Есть блок. В нем два элемента. Оба скрыты. Одновременно показать можно только один. Каждый элемент показывается и скрывается с анимацией.
Суть проблемы, что если переключаться с показа одного на другой, они на время анимации скрытия\появления показываются одновременно и растягивают блок и страницу.
Нужно как-то это исправить.
Добавить max-heigth родительскому блоку нельзя, так как в блоках есть растягиваемая textarea и max-heigth будет мешать ее тянуть.
>>1872286 >Анон, как ты вкатывался в vue? Придумываешь себе пет-проект нормальной сложности не очередной туду-лист и начинаешь его делать, попутно читая документацию и пользуясь гуглом для решения проблем. Видеоуроки для вкатывания хуйня - без практики все равно ничего не запомнишь.
>>1872459 >Видеоуроки для вкатывания хуйня - без практики все равно ничего не запомнишь. Хуйня не видеоуроки, а обрывочные уроки вне контекста. Лучше проходить какой-нибудь большой курс, где объясняется все от основ до продвинутых тем. Дальше проходишь какой-то большой блок курса и делаешь свой проект, в котором применяешь полученные знания. Дальше снова делаешь проект по уроку, и снова в своем применяешь знания придумывая себе задачи. Ну это именно для охватывания какой-то технологии с нуля
Тред не читал, конечно же. Устроился тут на новую работку не связанную с погромированием. Госструктура и очевидно работы особо и нет, сидишь ебланишь целыми днями, отсюда вкатился в изучение новых языков, выбрал JS, тк он самый популярный и самый распространенный, собственно если у меня какие-то проблемы возникнут - я с большой долей вероятности смогу ее только найти решение, но и описание почему и как это решение работает. В общем, чтобы вкатиться, мне показался этот язык - идеальным. Обоссыте если не прав. После JS укачвсь на следующий язык, пока не знаю какой, но знаю, что по итогу я хочу в бэкэнд укатиться, но и фронт знать, поэтом начал с js.
Ткните носом где взять нормальную литературу с задачами, которые помогут закреплять усвоенные знания, потому что ебаный codeacademy все понятно объясняет, но даже сейчас я сижу и далеко не все помню из того, что изучил а это мало, там научился в case, else if и не более короч.
>>1870960 >Если у тебя реакт, то зачем тебе чистый? >Правильно - для сервисов и редуксов различных. Вот щас проходил собес, думал щас меня по реакту спрашивать начнут и я их разъебу. А у меня спросили чем отличается var от let и const, и я жидко обосрался поняв, что ни разу нахуй не пользовался var, потому что он нахуй не нужен, и я вообще блядь ничего про var не помню, не знаю и не знал, кроме того, что он имеет глобальную область видимости, и это старое говно и им вообще не нужно пользоваться. Прооритесь с меня нахуй, таким куском говна сейчас себя чувствую, хоть в петлю нахуй лезь хоть я потом конечно немного реабилитировался начав рассказывать про реакти вроде бы не обосрался ни в одном вопросе, но все равно это был пиздец, я в ближайшие 20 лет вообще нахуй ни на один собес больше не пойду пока не смогу по памяти написать свой свой браузер на c++, внутри которого будет открываться полностью самописный алиэкспресс, внутри которого будет продаваться вся документация js написанная по памяти
>>1872538 Привет, я в жизни не учил никаких языков, кроме английского и ссу тебе на ебало, потому что var это variable, т.е переменная, т.е > var TvoiHui x Который ты задаешь
Let - это ПУСТЬ > let TvoiHui 5
Const - константа.
Этим они и отличаются, в остальном это глобальные операторы и нихуя более
>>1872538 var имеет локальную область видимость, let и const блочную.
Если ты объявляешь var в глобальном скоупе - то у тебя globalThis и есть локальная область видимость. Все области видимости в жс - это объекты, а переменные это поля этих объектов, именно поэтому поле в глобальном объекте (или любом из его прототипов) - это глоабльная переменная. Если ты объявишь var в пределах модуля - поле в глобальном объекте присвоено не будет, потому что у модуля своя локальная область видимости. Если ты объявишь var в теле функции - то ее локальная область видимости будет ограничена этой функцией. Объявления var всплывают, но инициализация происъодит по месту.
let и const имеют блочную область видимости. Они объявляются и инициализируются по месту, и за пределами блока, в котором они объявлены их не видно.
>>1872563 >Они объявляются и инициализируются по месту Справедливости ради, TDZ работает благодаря подъему, но кого это ебет, когда в userland коде все равно это никак не использовать.
>>1872565 Будет попытка присвоить переменную на уровень выше по цепочке наследования областей видимости, пока не дойдет до самого верха. В случае если код выполняется в строгом редиме и переменная в итоге не объявлена нигде будет эксшепшен, в противном случае будет присвоено поле в globalThis. Все модули выполняются в строгом режиме, так что там всегда будет экспшен при попытке присвоить необъявленную ранее переменную.
>>1872576 Он просто душный, простое объяснения выглядит в виде наглядного примера:
function scope() { { var x = 10; let y = 11; const z = 12; } console.log(x); console.log(y); console.log(z); }
В консоль выведется 10, а потом вылетит эксепшн который скажет тебе, что переменная "y" не определенна, если поменять y и z местами, то будет тоже самое.
>>1872576 Он действительно очень простой. В основе всего яызка лежит абстракция объекта (описанного в спецификации) который имеет слоты, которые дергаются при каждом геттер, сеттере, и вызвое некоторых операторов. Все взаимодействие со всеми сузностями происхоит через дерганье этих слотов. Области видимости - это тоже объекты, которые так же связаны в цепочку, по типу протипной, с единственной разницей в том, что переменная это не поле, а аксессор - при сеттере переменной она присваивается в той области где объявлена в ецпочке, а не в текущей, а объявление переменной - это объявление акссесора у текущей области видимости в случае если это блочная переменная, или локальной, в случае если это var.
Абсолютно все операии - это дерганье слотов через отправку сообщений get\set\call\getProperty\hasOwnProperty и так далее. Если понять как это устроено все с низу, то никаких сложностей нет вообще вс понимаием как это сустроено сверух. Сверху у тебя много сущностей - всякие контексты, модификаторы, операторы, хуяторы - которые на деле выражаются одними и теми же конструкциями и операциями на нижнем.
>>1872578 В отличии от тебя он пояснил, что будет при объявлении var за пределами функциии, в строгом и нестрогом режиме, и почему hasOwnProperty - это глобальная переменная.
>>1872585 >что будет при объявлении var за пределами функциии
Проиграл с дебила. В JS функция это объект, твои "за пределом функции" это тоже самое что и в пределах функции. Как вы вообще код пишете, если таких основ не понимаете? Для вас это не написание кода, а магия?
Ну все понятно в общем нахуй блядь, 10 постов, считай целая статья с нюансами одного только var. Осталось только все то же самое выучить наизусть для примерно 10000 остальных сущностей в js и всё, можно бежать устраиваться за 30 тарелок гречи в месяц.
>>1872593 Тебе пояснили, что можно вызубрить 10000 сущностей по отедльности, а можно изучить несколько простых принципов и понять разом всё. Но ты, как я вижу, сделал свой выбор.
>>1872595 Где можно узнать об основных принципах? Вот что нужно читать чтобы понять основные принципы? В основном все начинается от перечисления переменных и заканчивается всякими асинк авайтами. Ну а дальше сам по мере необходимости. Причем еще и ор в том, что все, что ты пишешь может прекрасно работать и без всех этих нюансов. Так что в конечном итоге все выливается в то, что ты чуть ли не до уровня сеньера должен доучиться, чтобы на тебя как на говно не смотрели
>>1872589 Функция это callable объект. У которого пределен хэндлер на сообщение call. Еще есть конструкторы - это обхекты у которых определен хэндлер на сообщение construct. Области видимости не являются вызываемыми объектами, и конструкторами они тже не являются. Они вообще относятся к типу Exotic Object. Ни глобальный скоуп в которм выполняются простые скрипты, ни модули не являются функциями. Исходный код скриптов и модулей выполняется в контекстах vm. В общем, ты несешь чушь.
>>1872601 Нигде это полноценно и всеобъемлюще в одном месте не расписано. Или во всяком случае я ничего такого не читал. Я просто 20 лет пишу на жс, и помню его еще со времен es3.
Я бы порекомендовал просто прочесть спеку es5 (она самая простая и при этом актальна, потому что уже описывает текущие принципы, но не полностю, потому как ей болле пяти лет и язык сильно развился) У кантора есть отличный перевод https://es5.javascript.ru/
Потом плотно изучить такие вещи как Symbol (в том числе well-known symbols) и Proxy (поняв, как работают хэндлеры сообщений из юзерспейса модно придти с пониманию всего чисто интуитивно). Еще очень рекомендую почитать статьи про устройства самих движков (хотя бы v8 - есть отличный блог v8.dev и куча переводов на хабре - так же есть конфы от разрабов самого v8 в том числе рускоязыные).
Ну и попутно все шлифовать просто добирая материал (изуя те же символы заглянуть в актуальную спеку). Изучить финализаторы и слабые ссылки. Можно почитать сорцы движков, котя бы изучить runtime built-in functions в v8, которые весьма низкоуровневы, доступны из жс кода за флагом, и позволяют формировать все структру жс в ручную (словно ты пишешь на высокоурвневом ассемблеере).
В ноде есть отличный модуль vm - поиграйся с ним, чтобы иметь представление о контекстах ( это даст понимание почему рендер-процессы и воркеры не имеют общей памяти, если сепарированы, и напротив почему при необходимости иметь общую память рендеры разных фреймов (оконо) запускают в одном процессе).
Ну и попутно просто играйся с сами жс, у тебя он прямо под рукой, достаточно нажать f12.
>>1872609 >as Ты же сам берешь на себя ответственность, выполняя принудительное приведение типов, в чем проблема? Ассершены, по-хорошему, должны быть запрещены на проекте, исключение отводится только на "as const".
>>1872601 >что ты чуть ли не до уровня сеньера должен доучиться, чтобы на тебя как на говно не смотрели Все эти знания вовсе не сениорские. Подобное не является необходимыми скиллами для промышленных градций ждун\мидл\сениор. Ждуны\мидлы\сениоры - это кодомакаки. Вся эта беллетристика это удел евангеистов, language hackers и прочих людей, у которых цель не формочки клепать, а созидать. Или быть как минимум умнее пробки и понимать что как работает и почему именно так.
От тебя никто не требует всего этого понимания, если единственная твоя цель это на работу устроиться. У тебя есть тот самый путь - заучивать отдельные кейсы и не задаваться лишними вопросами. Возможно он для тебя действительно будет проще (даже точно будет проще. в случае если тебе программирование как таковое не интересно)
>>1872634 >цель не формочки клепать, а созидать Но ведь конечная цель языка и есть решение прикладных задач. В чем созидательность глубокого понимания его работы?
>>1872638 Прикладные задачи не ограничиваются клепанием формочек. У всего прикладного есть разные сферы применения. Ты, как программист - тоже пользователь. Для тебя пишут инструменты другие программисты, для которых эти задачи являются прикладными. Есть еще такие вещи, как написание транспиляторов и компиляторов. Тех же самих линтеров, и language серверов. Пользовательских рантаймов, и в конечном счете просто библиотек. Ты же не думаешь, что все это появляется само по себе? А еще есть такие вопросы как развитие языка. Чтобы протащить в спеку новый пропозал, тебе не будет достаточно понимать, чем var отличается от const.
>>1872638 От уровня твоего понимания зависит то, что именно ты способен созидать. Все люди различаются между собой лишь широтой знаний\взглядов\эрудицией. Кем быть именно тебе выбираешь исключительно ты сам.
>>1872648 >Ты же не думаешь, что все это появляется само по себе? Конечно, не думаю, просто не понимаю с чем связан изначальный снобизм. Мол написать линтер это созидание, а написать, например фронт CRM для КЦ — формошлепство. Там же тоже нужны знания, просто другой предметной области. Причем не сказать что одна из них как-то особенно лучше или сложнее другой. Правда первое, как правило, оплачивается звездочкой на гитхабе и стабильным потоком ишьюс, а второе деньгами, страховкой и оплачиваемым отпуском.
>>1872662 Зависит от твой архитектуры. Скорее всего у тебя будет куча разных менеджеров, типа PlayerManager, SceneManager, и т.д. которые объединяют простые строительные блоки. И всем управляет какой-нибудь GameManager.
>И ещё в конце игры нужно будет очищать всякие переменные. Как это обычно называют? Зачем их в конце очищать? Иногда делают в каждом менеджере или объекте метод destroy, который подчищает за собой. Но это далеко не всегда надо.
>>1872664 Как правило те. кто способен писать линтеры, способны писать и CRM, а обратное не верно. При этом первые не испытывают никаких wtf разрабатывая с использованием любого языка или технологии, в отличии от вторых. Это не та разница предметных областей (как писать круды или графические редакторы, сервер-сайд или гуй, игры или нейросети). Это перманентная широта специализации. У людей глубоко-эрудированных нет сложности с вопросами написания фронта или бека, консольных утилит или десктопа, писать на жс или на си - они разберутся во всем и очень быстро, потому что умеют это делать. Умеют изучать, а не заучивать.
>>1872673 >Как правило те. кто способен писать линтеры, способны писать и CRM, а обратное не верно. Не очень понятно на чем вообще основаны эти измышления. Из хорошего знания языка и умения изучать вещи еще не следует хороший код и уж тем более хороший продукт. Нужно знание предметной области, представления о том как работают люди, вкус и другие вещи. Есть штуки созданные прекрасными разработчиками которыми невозможно пользоваться без слез и есть продукты написанные плохими разработчиками, которые работают прекрасно.
>>1872623 А при чём здесь тайпскрипт, долбоеб? Тайпскрипт за тебя не проверит пришло ли тебе в ответе на запрос строка или объект, несмотря на то что ты прописал, что должна была прийти строка.
>>1872801 function func(a) {return a || 42;} или const func = (a) => { return a || 42; }
Хорошо по стилю оборачивать блок if в скобки, даже если один оператор. Некоторые стандарты кодирования явно требуют.
Вот этот вариант лично мне не нравится >>1872801 Если в конце блока if есть return, или continue/break внутри цикла, то делать else не нужно, получается немного противоречивая логика, при этом конструкция if-return довольно типовая, воспринимается без напряга, чтобы дополнительный else делать. Но return должен быть сдвинут на одном уровне с операторами if-else, тогда легко читается, в том числе поэтому код на картинке не нравится, всего 4 строки, а читается тяжело.
>>1872817 >>1872831 Казалось бы, если ты вкатыш, то постоянно следишь за новостями языка, должен знать все новые свистоперделки. Хуевые вкатыши получаются. Ладно бы старье не знали бы какое-нибудь, а тут...
>>1872842 >Синяя кнопка скрывает\открывает красный красный блок. Что будет с красным блоком, когда он скрыт? Как будет использоваться место слева от синей кнопки в этом случае? Там будет пустое место или туда заедет какой-то текст?
>>1872854 Ну тогда там скорее будет красный блок со скрытым содержимым. Соответственно твоя кнопка не должна убирать родительский блок, она должна скрывать его содержимое, кроме синей кнопки.
Если сделаешь на float, то туда какой-нибудь мусор залезет.
Если тебе нужно, чтобы текст обтекал синюю кнопку, тогда нужен float по идее. Если нет, там слева заголовок, тогда тупо вложенные флексы
Бля, какое же Вуй костыльное говно, реакт по сравнению с этим просто ванильный жс. Настало время ставить плагины на модули, модули на плагины сами не поставятся.
>>1872931 Даже гены не помогут, если не начать специализированное обучение с 12 лет. Ну по аналогии с другими областями, не будешь нормально кормить пиздюка - вырастает низкорослый дебил-коммунист.
>>1873042 Если очень нужен - нанимают. У нас вот - наняли. Но, большинство - уходит в спячку.
Также, умные люди понимают, что это время года не очень хорошо для принятия важных решений - можно совершить ошибку, т.к. мозг работает в довольно своеобразном режиме. Надо перетерпеть до конца января.
>>1873064 >pagehide а не unload Хуита какая-то. Если вешаю на него обработчик, то он не срабатывает при закрытии вкладки. Если дополнительно вешаю на unload, то срабатывают оба
Как проверить существует ли вообще сейчас определенный объект или его нет? Вот например у меня в том случае, если приходит ошибка от сервера создается в редаксе такое поле state.user.error.message, а если ошибки нет, то изначально объект user у меня пустой, соответственно и error и message у него вообще не объявлены. Что в этом случае можно сделать? Каким образом можно проверить, появился ли объект если изначально на него никак невозможно сослаться? Либо в любом случае нужно создать всю структуру объекта с пустыми полями, и потом уже проверять что в них пришло?
>>1873124 Тебе же сказали - у тебя должен быть класс, являющийся моделью игры. Вот там и должна быть эта функция. Потому, что Игрок у тебя не должен знать, в каком он месте. Это должна знать модель игры.
Есть пустой объект const emptyUser = {id: "", username""}, как лучше делать его копии когда надо гдето его копию подставить чтоб сам пустой объект никогда нельзя было изменить.
[...emptyUser] сойдет или надо там через new emptyObject(), или object.assign?
>>1873131 >На оф. сайте? Да >Там же с нуля всё расписано, просто отдельная докуметация. Я начинал сначала читать документацию по vue v2, потом узнал что есть v3 и начал изучать ее, только вот она на англ и ее труднее понять и самое главное что там примеры кода уже не такие полные как в туторе второй версии.
Я вкатываюсь с нуля, это мой первый фреймворк, если чё.
Как писать код где в теории идут запросы на сервер если я фронт учу? Я ж ничего в бекэнде не понимаю толком. Ну типо, мне еще учить какой нить пхп или ноду надо что бы во фронт залезть?
>>1873148 Читай по v2 на русском. Отличий много, но, для полного ньюфага они не принципиальны. Более того, v2 - проще.
>>1873147 Тебе лучше сделать так, чтобы твой рендерер, и другие части программы, нормально воспринимали именно пустой объект {}. Т.е., чтобы не надо было явно пустые поля задавать. Обычно так делают.
>>1873126 Если собираешься что-то кроме петов делать, то забей на v3. Один хуй будешь ковырять проекты на v2, которые ещё и не факт будут мигрировать на новую версию.
Есть элемент VUE. Он отрисовывается, только если метод возвращает нужное значение. Также возвращаемое методом значение используется, чтобы задать элементу аргумент и само содержимое элемента.
Немного не догоняю, как здесь можно не запускать три раза метод, а один раз? Вычисляемое свойство не подходит.
>>1873177 Там где-то выше должон быть хук, который срабатывает при изменении param, и делает methodParam = method(param), а в шаблоне заменить method(param) на methodParam
>>1873177 1. Так делать точно не надо, это лютейший говнокод. Просто эссенция говнокода. 2. Как надо? Это зависит от того, что такое твой param, и нахуя тебе сайд-эффекты при рендеринге. Что-то у тебя там не то.
>>1873218 Всё равно не очень понятно. Но, если что-то реально хитрое, то, возможно, стоит использовать не шаблонный рендеринг, а рендер-функцию, как в реакте. JSX|TSX прикручивается несложно, но, один раз можно и без него.
Ну, или запоминай в переменной в data, и используй не вызов метода, а эту переменную во всех случаях, кроме первого, как советует >>1873189 Причём, как-то так: v-if="method(param) && methodResult != 'ass'" :arg="methodResult" ... Т.е. method(param) просто возвращает true, а реальный результат записывается в this.methodResult. Назвать это всё надо по-человечески, разумеется.
>>1873222 И да, делать method(param) && methodResult != 'ass' надо чтобы ясно дать понять тому, кто это будет читать, что тут происходит. Т.е. чётко выразить намерение.
Ты еще не пробовал в реакте программно выделить строку в таблице и показать, закрыть модальное окно с анимацией. react-bootstrap последней версии ждут каких-то новых api чтобы transition работал без ошибок
Там я сделал просто явный вызов метода, как сайд-эффекта при рендеринге: {{getColor(item.calories)}} Метод возвращает пустую строку, т.е. не рендерится ничего.
Можно сделать иначе: <v-chip :color="getColor(item.calories) + itemColor" dark>
Но, мне кажется, лучше бы сделать цвет частью данных. Т.е. ты с бека получил эту хуергу, и далее, через map и через extend или композицию добавляешь свойство color к каждому элементу.
Вычислять такое в шаблоне - не очень хорошо, и не очень быстро, кстати. И, самое важное - все оптимизации Vue при этом идут по пизде. Так что - делай лучше сразу в данных.
Если нет массива, можно и как в первом варианте: >>1873260 Тут смысл в том, что метод (результат вызова) не кешируется, в отличие от computed property. И таким образом его можно кешировать вручную.
Если есть массив, и он рендерится в цикле - лучше добавить доп. свойства для рендеринга, вычислив их один раз. Это очень быстро работает.
И, более общее соображение - если уж у тебя MVC|MVVM фреймворк, надо это использовать, по возможности.
Если у тебя массив поступает через prop, то мутировать его нельзя. И получишь warning. Т.е. надо создавать новый - а это накладно, так лучше не делать. Поэтому, наверное, лучше просто закэшировать вызов метода.
Но, в таком случае, почему бы не вычислить всё, что нужно, в parent компоненте? Это зависит от задачи. Если у тебя всегда заранее известен child компонент, который это использует, то да, лучше вычислить в parent или ещё раньше.
>>1873237 Вообще, в этом примере с цветом есть принципиальный дизайнерский просчёт. Дело в том, что там должен быть не цвет, а некий тэг, признак - низко-средне-высоко-калорийный продукт. И этот признак и надо рендерить - в цвет и ли ещё какую фигню. Поэтому, это лучше вычислить ещё на беке. Иначе получается, что в шаблоне заданы бизнес-правила, а это очень плохо.
>>1873138 >Загибается же в конце. >>1873136 Ну там загибы и посильнее были, сказать, что реакт вот прям взял и умер это уж совсем толстота, тем более вы забыли про бульён native, тут vue просто пинает труп
Помогите начинающему долбоебу. У меня в ангуляре есть кнопка, на которой висят 2 метода, один работает на подсчет кликов по кнопке, другой - запускает таймер с setinterval-ом, после которого кнопка станет disabled. Как сделать так, чтобы не плодились setinterval-ы? С меня нефть и все такое.
сап погромач, изучаю потихоньку реакт и вот пытаюсь сделать простое создание пользователя. у меня локально крутится только реакт, шлю запрос на удаленный REST API сервак в конторе сделали обучающие попрактиковаться, все данные валидные но я ловлю ошибку Access to fetch at 'http://my.servak/api/v1/register' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled. и вот вопрос как такое фиксить? по статьям в инете вроде как понял что это должны фиксить люди сами на серваке, но при этом если я шлю абсолютно такой же запрос через postman то получаю success. как фиксить? я запутался
>>1873700 Уверен, что у тебя плагин не тупит? Переключись на scss и посмотри подсветку синтаксиса, так как сейчас у тебя по сути всё одним цветом выделено.
>>1873701 >>1873709 так куда в итоге смотреть лол? у себя или у них? алсо какой заголовок в итоге то подставлять? пробовал 'Access-Control-Allow-Origin': '*' второй строчкой добавить - в итоге такая же хуйня
>>1873291 >Но, в таком случае, почему бы не вычислить всё, что нужно, в parent компоненте? А если повесить эту функцию добавления в дату на mounted, она же второй раз рендеринг вызовет? Это норм?
>>1873716 Эта строчка должна в ответе приезжать. Пиздуй гуглить зачем корсы вообще придумали, а то на собесе за такое мигом мы вам перезвоним получишь.
Я придумал свою модель голосований и создал для него класс.
Голосование конструктор { количество голосов текст уведомления = количество проголосовавших за что-то винколбэк = функция(){} }
--проголосовать() ----увеличить количество голосов на 20 секунд ----вывести уведомление в чат ----если набралось достаточно голосов ------выполнить винколбэк
Проблема в том, где логично будет расположить переменные которые будут отвечать за уменьшение голосов через 20 сек (иды таймаутов) и айди проголосовавших голосов.
Так в конструкторе и писать что ли? зис.айдиигроков зис.иды таймаутов
Правильно ли ставить вспомогательные переменные и переменные отвечающие за количество? И текст вроде как тоже вспомогательный.
Помогите. И дайти пожалуйста что почитать о расторжении переменных.
>>1873748 Создаёшь класс, который отвечает за список игроков и всякие их подсчёты, и перекидываешь счётчики голосовалке в виде примитивов. А голосовалка в свою очередь прокидывает примитивы списку. Условно говоря если твой класс начинает включать в свойства массивы, особенно если это массивы объектов, то настало время создавать новый класс.
Я, собственно, из этих соображений и сделал это в mounted в том примере (>>1873267). Думаю, дело в том, что реальный рендеринг происходит асинхронно, после nextTick. Вообще, надо попробовать задебажить это дело и убедиться, что конкретно там происходит.
>>1873726 >>1873849 Проверил только что. Сделал компонент с render-функцией, чтобы была 100% уверенность когда там что рендерится. Результат такой:
mounted: Если в mounted делать синхронное или асинхронное изменение data, то рендеринг вызывается второй раз. Почему же рекомендуют делать fetch в mounted? Потому, что рендерится пустой компонент (быстро), а потом уже наполняется данными. Т.е. проигрыша в производительности нет, ибо виртуальный дом, и медленные операции рендеринга в настоящий DOM делаются только на child-компонентах. Думаю это подходит не для всех случаев. Но, для таблиц данных и т.п. - нормально. Также, можно ставить флаг "данные загружены" и без данных рендерить пустой див.
created: Если в created делать _синхронное_ изменение data, то рендеринг _не_ вызывается повторно. И для каких-то случаев это может быть предпочтительнее. А если делать асинхронное (даже с timeout = 0), то - вызывается 2-й раз. Т.е., если делать fetch, то нет разницы, где.
Итого, по данному примеру с цветами - вычисление свойства color для всех элементов массива там - синхронная операция, и его надо делать в created.
>>1873864 Но, Vue - это действительно просто и понятно. Двухминутный эксперимент - и все ответы получены. Подобный же вопрос в реакте/ангуляре выебал бы мозги по-взрослому.
>>1873867 >Подобный же вопрос в реакте/ангуляре выебал бы мозги по-взрослому. Вопрос «где вызвать сайд-эффект» выебал бы мозги? Или «как отрендерить пропсы с вычисляемыми параметрами»? Не знаю как там в Ангуляре, конечно, но в Реакте они давно уже не стоят.
>>1873877 Речь давно уже не про сайд-эффект. Да и изначально это можно было назвать сайд-эффектом весьма условно. Перечитай, если интересно, там не так много.
Сейчас речь была про то, где трансформировать (реактивные) данные, синхронно и асинхронно, чтобы это не вызвало лишний рендеринг.
>в Реакте они давно уже не стоят Вот в прошлом треде неоднократно жаловались, что хуй его знает, где вообще делать асинхронные вещи в этих ваших редуксах. И что Абрамов молчит на эту тему, как партизан.
Алсо, в Реакте, насколько я помню, вообще вопросы лишних рендерингов стоят мощно, как конский хуй от конского же возбудителя.
>>1873880 Конечно, я прочитал ваш диалог, перед тем как отвечать. В реакте это делается прямо в рендере, если что, потому что мало данные один раз вычислить и записать на маунте — они же могут обновиться и производные, очевидно, надо будет пересчитать. Может в этих ваших вью какая-то другая магия, но я не понимаю зачем вообще нужен сайд-эффект если операция полностью синхронная и чистая.
>Вот в прошлом треде неоднократно жаловались, что хуй его знает, где вообще делать асинхронные вещи в этих ваших редуксах. И что Абрамов молчит на эту тему, как партизан. Дэн написал вместе с редаксом redux-thunk и выпустил по всем этому бесплатный курс на egghead, так что обвинять его в этом как-то совсем уж странно. В редаксе что-то асинхронное вообще можно только в одном месте делать (экшен криэйторе), так что странно, что такой вопрос вообще возникает.
>Алсо, в Реакте, насколько я помню, вообще вопросы лишних рендерингов стоят мощно, как конский хуй от конского же возбудителя. Не знаю, у меня не стоят. Если у тебя с этим были проблемы, могу посоветовать пару приемов.
>>1873893 Там "сайд-эффект" (если это можно так назвать) был для кеширования вызова метода, путём записи результата в реактивную переменную в data. После первого ответа (>>1873260) речь уже была о том, как без этого обойтись.
Вообще, проблема там совершенно типичная для фронтенда: У тебя есть голые данные с бека. Тебе надо к каждому элементу привязать (вычисляемые) свойства, влияющие на его отображение и работу с ним в UI. Простейший пример - выбор строк в таблице, например, товаров. Нужно свойство selected для каждого товара, привязанное к чекбоксу, но, чтобы и программно выбирать можно было.
Но, конкретно та проблема с color в реакте вообше не встала бы, т.к. рендеринг делается не по шаблону, а в коде. В vue тоже так можно (через render-функцию), но это нетипично, и требует прикручивания JSX/TSX, иначе неудобно.
Кто-нибудь по-серьёзному пользовался Strapi? Как оно? В инете попадаются статейки за 2019 год, где пишут, что довольно удобная вещь в качестве headless CMS, но ещё попадаются баги. Как сейчас с этим дела обстоят?
>>1874023 >Найс туду ЛИСТ без ul/ol. Зачем они нужны? Я понимаю что HTML это семантика и все такое, но постоянно выключать стиль и убирать отступы заебывает.
Колупаююсь в реакте. И вот такая проблема в главном App я выстраиваю роутинги: <Route exact path="/users"> <Users users={this.state.users}></Users> </Route> <Route exact path="/users/:id"> <ShowUser/> </Route> Когда захожу на страницу пользователей то все загружается корректно и один раз, а когда захожу на страницу определенного юзера, тогда у меня компонент вызывается бесконечное количество раз. В чем мб проблема? Юзера т.е. информацию о нем при этом корректно отображает
>>1874108 что значит "вне роута"? то есть когда я не по линку с /users перехожу а напрямую ? >ошибка в самом компоненте а че в нем такого может быть? пик прилагаю.
>>1874025 >>1874016 Завтыкал что таски могут вылазить за верстку. Как лучше сделать перенос? Мне в голову приходит только grid-template-colums: 2% auto 2%
>>1874016 >Гордишься тем что ты криворукая макака Чё такой злой, дядь, я почитал документацию vue и посмотрел как сделана тудушка у них, дошел до момента на пикрелейтед и понял что нихуя не понял. Пришлось делать как могу. Может я тупой скорее всего, но у них в документации проскакивают вещи, которые не упоминались ранее, например почти в самом начале был момент с watch, хотя его перед этим тоже не объясняли, а я ж не вундеркинд нахуй.
>>1874118 >useEffect? Вот этот ублюдк - единственная причиная по которой я не перекатился в хуки, видимо я еще не постиг дзен хуков, но это просто лютый ебанный пиздец каждый раз, не указал завимость - жди засранный лог. Указал - улетел в бесконечность. Понятно что код говно, но в этом смысле в классами гораздо проще работать. Указал условия для ререндера, и всё
>>1874191 Перенос это `word-break`. Сейчас бы сетку пихать для переносов, вообще охуеть, да она бы и не помогла, так как количество элементов не изменяется.
>>1874191 >дошел до момента на пикрелейтед и понял что нихуя не понял. А чего именно ты не понял? Там выдаётся событие (emit event = выдать событие). Событие - это способ сообщить родительскому компоненту, что нужно что-то сделать. В данном случае - удалить этот item. Событие имеет тип (название), в данном случае - 'remove'. В родительском компоненте, соответственно - обработчик @remove (т.е. at-remove, т.е. при-удалить). В событии ещё могут быть параметры, но, в данном случае - это не нужно, родитель и так знает, какой это item.
Как средствами Vue реализовать этот ванильный js скрипт https://jsfiddle.net/qv7gxtbf/21/ ? Не понимаю почему в Vue событие по клику вносит изменение в html код, а по интервалу - хуй.
>>1874281 Если только фон покрасить, то вообще жс не нужен, делается через `@keyframes` в CSS и там же можно задавать длительность и тип цикла. Плюс выглядит намного плавнее. https://jsfiddle.net/9yotaqLk/1/
>>1874329 >Так надо было в на ангуляре делать, там такой хуерги нет, всё ясно и понятно. Так все в один голос заявляли, что Vue лучшее решение для новичка, особенно тупого.
>>1874281 >Не понимаю почему в Vue ... Vue - реактивный фреймворк. Т.е. шаблон рендерится из модели (данных), и автоматически обновляется при изменении данных.
Т.е. класс - это должна быть переменная в data, привязанная к нужному элементу как :class=... Меняй её, и всё будет меняться.
Менять данные ты можешь как изнутри, так и снаружи, из внешнего скрипта, если это нужно. Для этого нужна ссылка на vue-компонент, т.е. при создании надо присвоить результат переменной.
Как ты пытаешься задавать интервал?
И да, для анимации в Vue есть специальные средства, но, лучше бы ты, для начала, разобрался с основами.
>>1874500 Пик1, нажимаю на кнопку, жду 3 секунды и нихуя, класс из data не прилетает в свойства класса. Пик2, нажимаю на кнопку без таймаута и все работает.
>>1874550 Тебе уже сказали, но я добавлю пиздюлей, лол: У тебя там function() {...}. Оно имеет свой this. Сделай вместо этого () => {...}.
Либо, если бы ты писал без бабеля-хуябеля, а прямо в html, то, перед вызовом setTimeout(...) надо сделать: const self = this; А потом в function() сделать self.testDivClass = ...
>>1870885 (OP) Насколько длинными могут быть название функций? По стилю, как принято? Если допустим у меня для нормального описания выходит 45 символов это норм?
Или если более конкретно как бы вы назвали функцию, которая получает на входе блок метода формата openApi а возвращает объект в формате Json Schema, блока содержащего параметры запроса.
>>1874628 Ну так не удивительно, жаба же энтерпрайз стандарт, пишут сложные программы, а JS так, для макак. Визитку сделать для сайта, запрос в базу сделать, так что можно просто функцию x назвать, все равно это говно потом кому то переписывать
>>1874692 >useEffect - простой Вообще конечно добавлю, что абсолютно всё кажется простым, после того как ты поймешь как оно работает. Я вот сейчас даже вспомнить не могу, почему у меня возникали какие-то проблемы в прошлом, над которыми я бился по нескольку дней подряд
>>1874772 Что, ксли я теье скажу, бывает так, когда вообще не возникает таких проблем в фундаментальных вопросах, над которыми ты бьешься несколько дней.
>>1874796 >проблем в фундаментальных вопросах Я не понял к чему ты это вообще? Что язык лучше учить и знать хорошо, чем не учить и знать плохо? Совет из разряда - выучи наизусть весь CS, всю доку Js, всю доку реакта, все существующие паттерны, алгоритмы, тонкости, жирности и имей опыт работы с этим более 10 лет и всё. Как будто я блядь и без тебя этого не знаю
Короче такая ситуация, есть компонент который отрисовывает список в корзине. Тот же самый компонент отрисовывает списки товаров, которые отображаются на странице в поиске. Как сделать так, чтобы только когда список товаров отрисовывался в корзине, добавлялись кнопки "удалить" на каждом товаре? Есть ли какая-то возможность менять существующий компонент? Либо просто банально добавить внутрь самого компоненты отрисовщика пропс, который бы принимал снаружи что-то вроде inBasket и тогда уже добавлял кнопку? Какой вариант более правильный? Знаю что есть cloneElement но я до конца не могу понять как он работает, из доки пример его использования не совсем понятен
>>1874844 Ок, думал просто может есть возможность взять текущий компонент и добавить в него новые какие-то возможности, чтобы у меня был один исходный компонент, но который в ненужных местах был по логике проще, ну ок, сделаю так
>>1874852 Если есть лишние 180 баксов, то в сторону epic react. Какого-то другого места, где были бы собраны и хорошо описаны продвинутые паттерны я не знаю. Твою задачу можно решить кучей разных путей: через передачу ноды в пропсах, через композицию, через clone elements и еще кучей более извращенных.
>>1870885 (OP) Анон, подскажи, пожалуйста, бесплатную IDE под Angular. Советуют Atom, но это же ёбаное убожество, даже после this. не работает автоподстановка. Ну и ошибки не подчеркивает.
>>1874967 Качай вебшторм, активируй триал на 30 дней. Потом гугли webstorm infinite trial / reset webstorm trial, что-то такое. Вуаля, у тебя бесплатный вебшторм. Он самый топовый для Ангуляра.
Ну или как вариант vs code, но там надо накатывать плагины, такое себе...
>>1875001 На вид все ок вроде. Только ты все равно чем-то не тем занят, гейм луп должен через requestAnimationFrame работать и учитывать дельту времени в анимациях. Гугли как его делать на JS.
>>1875026 Функциональные удобнее и лаконичнее. А useEffect так вообще прекрасный швейцарский нож — заменяет сразу пачку методов жизненного цикла и убирает кучу выражений типа if (props.foo !== prevProps.foo) { ... }.
Я тут сделал себе приложение небольшое на реакте для портфолио, заодно учился. В общем подключается к tmdb апишке я вообще не ебал, что есть курсы с примером этой на апишке, делал сам, мне об этом на собесе сказали, лол, в нем выводятся популярные фильмы, есть регистрация и логин, есть возможность добавлять фильмы в избранное с общей страницы поиска и если внутри перейти к фильму то изнутри тоже можно добавить, после добавления кнопка меняет внешний вид, все это сохраняется в базе firebase, даже обновляется все синхронно если с телефона зайти и с компа одновременно. Все сделано вроде бы вполне грамотно, с редаксом, роутером и рабочими ссылками, с переиспользованием компонентов, с HOC и всеми такими штуками, пагинацией и даже поиск работает вживую, обновляя результаты каждую секунду при вводе, еще использован бутстрап и material ui ну тут я скорее учился просто, можно было только на последнем делать. Собственнов вопрос - это совсем днищенская ссанина, или норм для порфолио? С таким вообще можно куда-то соваться? Выложил на хероку, мог бы конечно скинуть показать, чтобы вы потыкали, но мне стыдно пиздец.
Дальше конечно я сейчас хочу все основы по чистому ЖСу задрочить, а то обосрался на собесе на этой почве. Но вот само портфолио для джуна, что там прям такого крутого должно быть? Подразумевается ведь, что ты не должен вроде бы совсем лютое что-то там делать? Просто я даже на это потратил примерно 3 недели, занимался по 9-12 часов в день, вообще без выходных, ну много хуйни переделывал, когда понимал что не совсем элегантно получилось и если что-то новое пилить, опять времени дохуя уйдет, лучше вместо этого голый Js потеребить?
>>1874967 В торрентах недорого покупается WebStorm. Это топовая иде для веба. Ангуляр - сложная вещь, и лучше иметь нормальную иде, а не хуиту типа VSCode.
>>1874999 Чувак, те, кто может писать в vim, не задают таких вопросов. И ангуляр лучше таки писать в иде. Да и вообще современный веб.
>>1875128 Разница - она не здесь, а дальше. Когда у тебя есть класс - ты можешь потом создавать много его экземпляров. В жс (фронтенде) такое очень редко нужно. Если тебе нужен всего один объект - то это 1-й вариант.
>>1875130 >new class ... Бля, я этого сразу не заметил. Вот такую хуйню точно никогда не надо делать - это не просто бессмыссленно, это лютый антипаттерн. Класс - отдельно, создание экземпляров (нескольких!) - отдельно.
>>1875159 В TS они обретают смысл, когда тебе нужно описать какую-то сущность и гарантировать что в коде ты не будешь обращаться к методам/полям которых у этой сущности нет, а также типизировать методы и функции, что позволит определять их предназначение без необходимости чтения кода тела функции/метода.
Я правильно реализовал? Можете подсказать ошибки может в названии, расположении переменных, в стиле кода. Мне нужно чтобы совершенствоваться. Помогите.
pushForThirtySec - очень плохо. К-во секунд должно передаваться как параметр. И, ни в коем случае нельзя делать подобное частью названия, это пиздец вообще.
Слово push имеет вполне определённый смысл. В коде у тебя ничего подобного не происходит.
Вообще смысл того, что ты хочешь сделать, не очень понятен.
>>1875273 Библиотеки, ты хотел сказать? Дико уёбищный material design, который нормально выгляди только на мобилах и больше ни для чего не годен? Понимаю.
>Стоит писать свой или стилизовать готовый? Смотря какова цель. Можно даже совместить.
Имею код с первого пика. Пытаюсь установить данные которые прилетают я точно знаю что они не пустые. В консоли хуйня со второго пика. почему он мне по нормальному устанавливать не хочет ?
>>1875367 Что блин значит «нормально»? С моей точки зрения то как оно у тебя работает на скриншотах это и есть нормально — в products был пустой массив и выводится пустой массив. Стейт в Реакте иммутабелен, я не понимаю чего от него ждешь. Поставь console.log прямо в компоненте, и увидишь, что триггернулся рендер с новыми данными. Что у тебя там в другом компоненте происходило я понятия не имею.
>>1875339 Не ебу что ты там делаешь,, но скорее всего у тебя получение этих данных не происходит мгновенно, а после обновления они у тебя уже не обновляются, потому что ты пустой массив у юзэффекта
>>1875531 И изменение стейта и сам рендер очень даже синхронные, в чем легко убедиться, вызывав в эффекте последовательно setState и лог в setTimeout с 0. Коллбэк в setTimeout приедет в консоль уже после рендера с новыми данными.
>>1875629 >Сразу в статик написать allobjects и добавлять туда при создании? И сразу скажи досвидос памяти. Тут нужен WeakSet
>>1875635 > let a = new MyClass(); > MyClass.allobjects.push(a) Без фабрики заебешься после каждого new делать push, где-нибудь обязательно забудешь это сделать, а когда надо будет поменять поведение так же заебешься везде менять
>>1875585 Чувак, он имел в виду, очевидно, то, что эффект от его выполнения будет виден после обработки всей текущей очереди событий. Т.е., чтобы увидеть результат, надо делать setTimeout(..., 0);
>>1875629 Создаешь статичное поле-массив у этого класса, в конструкторе класса пишешь MyClass.StaticArrayOfInstances.push(this); В дополнении к этому создаешь статичный метод ResetInstances который будет делать что то вроде: MyClass.StaticArrayOfInstances.forEach(e=>e.reset());
>>1870885 (OP) Помогите новичку в React, пожалуйста. Есть родительский компонент, который содержит несколько дочерних компонентов-форм, которые можно добавлять и удалять по нажатию кнопки в родительском компоненте. Изначально количество компонентов зависит от того, какие данные пришлет сервер. В родительском компоненте есть еще кнопка "Отправить", по нажатию которой нужно забрать данные из всех дочерних форм и отправить на сервер. Как получить доступ к данным в дочерних формах из родительского компонента? Я хотел создать для каждого дочернего компонента стейт в родительском и передать его в пропсах, но React не позволяет использовать useState в цикле.
>>1875582 >И изменение стейта и сам рендер очень даже синхронные >в чем можно убедится вызвав асинхронную функцию которая поставит колбек сеттаймаута в конец очереди эвентлупа Чел, ты сам себе противоречишь, иди читай что такое евент луп и что такое асинхнонные действия и синхронные.
>>1875958 А зачем тебе useState в цикле если ты можешь в главном компоненте динамически создать объект по данным с бека в useEffect и уже его положить в useState? Редукс можно использовать конечно если у тебя приложуха немаленькая, но если у тебя в приложении ничего кроме этой формы нет то никакой редукс там не нужен, можно вполне обойтись пропсами.
>>1870885 (OP) Бля, на проекте подрузили js abac (Attribute Based Access Control) типо так пизже, но у меня уже глаза вытекают, что это за хрень и нафига нужна? Без нее ж нормально жили
>>1870885 (OP) Возможно ли, на скриптах, реализовать минимальный функционал переводчика веб-страниц, в виде какого-нибудь расширения, чтобы просто задать там дефолтный язык - русский, и не пихать каждый раз копипасты в тренслейт гуголь ком? Чтобы оно переводило абы-как, а что не переводится (например код) - оставляло как есть.
Есть ли вариант заменить всю коллекцию в базе данных одним HTML реквестом? Проходится по каждому элементу с помощью PUT пздец как влом, хотелось бы что-то типа axios.PUT(localhost:8080/notes, newNotes) но мне выдает 404.
Аноны, подскажите, мне нужен какой нибудь небольшой клиентский шаблонизатор для JS. Что бы разные данные, которые AJAX запрос возвращает отрисовывать удобно.
Подскажет кто-нибудь по верстке? Я в этом совсем не специалист. Наверстал галлерею изображений - аж самому нравится. Я не умею в адаптивную верстку и поэтому поставил бутстрап. Все красиво, но галлерея пошла по пизде, вместо красивой секти, которая даже на телефонах смотрится нормально, там одно изображение на весь экран. Можно ли как-то отменить правило коллапса бутстрапа для контейнера и его потомков? Первый пик - без бутстрапа. Второй - с ним. Вот и хотелось бы как-то отменить ресайз для контейнера. Я второй раз так наверстать не смогу прост.
Господа жсобояре, мне лень идти регистрироваться на стаковерфлове, поэтому печатаю здесь.
Пишу на TypeScript и у меня есть класс с большим количеством перегруженных методов. Декларации перегрузок в полтора экрана меня заебали, и я хочу вынести их куда-нибудь в другое место, а в классе оставить только имплементацию, и разумеется, хочу я это сделать так, чтобы все перегрузки были видны и проверялись компилятором (иначе зачем перегрузки нужны, собственно).
Вопрос таков: могу ли я это как-нибудь сделать, и если могу, то как?
В стандартной библиотеке (или как там у вас это называется) есть структура данных стек? Или его всегда нужно самому пилить на массиве? Я просто с плюсов
Ананас. Поясни на пальцах плс. Какая нахуй разница между интерфейсом HTMLElement и Node? Я квериселектором получаю элемент. Квериселектор не может вернуть конкретно только элемент, подходящий к интерфейсу Node (только если так HTMLElement Node | null, а так не подходит следующей функции) . Дальше мне этот элемент нужно вкинуть в функцию, которая ожидает элемент, подходящий только под интерфейс Node. Как это соединить вместе? Может хуёво объяснил, но я только недавно начал ковырять тс.
>>1880241 Дорогой, дневник. Вопрос, снимается. Нужна была проверка, что в переменной не null. Алсо, почитал доку HTMLElement интерфейс наследует интерфейс Element, а тот наследует Node.
Полностью всю, или по большей части, вынести всё возможное - на клиентскую сторону, чтобы всё client-side работало, в браузере.
Парсинг, можно было бы реализовать, парся контейнеры, после конвертации PNG в dataURL. Стеганографию, тоже можно было бы реализовать client-side, с помощью async-функций или promise. Базу данных, и контейнеры, можно было бы сохранять, используя FileSystem API, с возможностью конвертации базы данных в JSON-формат, с последующим сливом базы в JSON из браузера.
Всё равно, всё это вместе: серверная часть (локального сервера) + клиентская сторона (скрипты) - всё это вместе, одна большая локальная - читалка нанопостов. Почему бы не сделать её клинтской?
В общем, гляньте, посмотрите код, может всё-таки не всё можно перепилить, а может и всё. Бггыы.
>>1880943 Опционально, наверняка, серверную часть, можно было бы на Node.JS перепилить, но это уже на крайняк как-бы, если на клиенте нельзя сделать. Потому что такая зависимость как Node.JS это был бы огромный минус для cliet-side софтины, которую можно таскать в zip-архиве, на флешке.
Помогите, пажаламста, начинающему, который перелез и не понимает рекурсию от слова совсем.
Задание:
Разработать "чистую" функцию treeSum, которая получает массив, элементы которого могут быть числами или снова массивами, и так до любого уровня. Функция должна рассчитать и вернуть сумму всех числовых элементов массива со всех уровней. При написании функции не описывать каких-либо вложенных в неё функций. Проверить работу можно на следующем массиве (сумма 50):
Я вообще не вдупляю, как работает рекурсия. Терроризировал и препода, и видосы, и учебники. Вот прям максимально не укладывается в голову, хз. Хотя всё остальное отлично идёт.
Посмотри вот это: >>1871004 → Но, как показало последующее обсуждение, для восприятия этой метафоры тоже нужно иметь некоторую базу, для тёти маши с улицы она не подходит.
Вот тебе ещё одна метафора рекурсивного алгоритма, из той же книги: Рекурсия - это делегирование решения. Т.е. ты не можешь решить задачу сам, потому, что она слишком большая для тебя. Ты делегируешь решение части задачи своему другу. Ты не должен думать, как он её решит - он решит, это точно. Затем - смотришь, можешь ли ты её решить оставшуюся часть? Нет - снова делегируешь кусочек другому приятелю. И так далее, пока задача не станет достаточно маленькой, чтобы ты решил её (оставшийся кусочек) сам. А потом ты собираешь у друзей решения всех кусочков, которые ты им делегировал, и получаешь полное решение задачи.
Подозреваю, что и эта метафора с нуля может не дойти.
>>1881461 Чувак, хвостовая рекурсия просто есть или нет. Она не в js, она сама по себе. А то, чего нет в js - называется tail call elimination (tail call optimisation).
А мутация там - для наглядности и простоты кода. Это пример.
>>1881496 Ну, думать о ней вне контекста tco имеет смысл для ручной оптимизации. Т.е. некоторые вещи удобно осмысливать в рекурсивном виде, а потом просто превратить в цикл.