Это копия, сохраненная 1 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://jsfiddle.net
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката: https://developer.mozilla.org
Ты посты его читал? Насрал нулом там другой разраб.
а какая собственно разница кто? от ошибки и бага никто не застрахован и по идее язык должен помогать его быстро найти
Вот другой бы и не насрал, если бы они ТС использовали. Либо он бы в своей части увидел, что числовая переменная может быть null
Если значение переменной это не константа, а приходит извне в рантайме, то чем тебе поможет тс?
Всё, что приходит извне должно завалидировано, а значит можно невозбранно повесить на него нужный тип.
Хочу, чтобы быстро и просто. Задача: писать админки. И без всякой ёбки с пакетами.
Ещё кстати думал над Elm, что про него скажите ?
>хули в шапке до сих пор нет, для вкатывальшиков
>Руководство для вката: https://developer.mozilla.org
Ты не очень умный, да?
>жиквери
Разве эта хуйня не устарела ?
>>2244
В том то и дело, я вообще не уверен, что брать. С js знаком плохо, но когда писал на нем, прям плохо становилось, думаю может фреймворки поменяют моё отношение. Кто-то вообще писал админки на чистом js ?
>>2248
>Ты не очень умный, да?
Все так, мне, как обычному мимо-проходящему, понадобилось мнение экспертов, здесь и сейчас.
админка не явлется чем-то особо сложным, а чистый джс сейчас может примерно то же что раньше мог жиквери
Как грамотней организовать эти функции?.
Просто писать функцию и после сразу вызывать? Или сгруппировать вызовы вначале\в конце? Или делать все функции стрелочными, чтобы не всплывали и вызывать по очереди?
Мамкины котлеты 3 штуки в день с горячей пюрешкой.
Писать очередь вызовов, а функции писать внизу, предпочтительно в той же очереди, в которой вызывал.
Вообще странно, у тебя все функции - сайд-эффекты?
>у тебя все функции - сайд-эффекты
Да, это же скрипт для стороннего сайта, функции меняют содержимое.
>в реакте для этого используют передачу вниз функции обработчика
И чем же это принципиально отличается от эвентов в Vue?
В смысле - в лучшую сторону?
Алсо, передать вниз в Vue можно что угодно, просто этого не делают.
Есть другие механизмы.
Вообще, по части гибкости реакт сосёт у Vue не нагибаясь.
Тут даже и обсуждать нечего.
>>1892138 →
И (возможно) правильно делают.
Потому, что такие вещи, как incapsulation и separation of concerns можно понимать очень по-разному, в зависимости от обстоятельств.
Не надо воспринимать как догму всю хуйню, которую пишут Дядя Боб или Фаулер.
В очень многих случаях тупо иметь всё в одном месте выгоднее, чем высосанные из пальца теории о том, что надо делать по 10 файлов на каждый пук.
Просто ньюфагам такое обычно не говорят.
Как детям не показывают, из какого места они появляются.
ивенты с нагрузкой это как-то странно если честно
вот в свелте например просто биндинг по типу v-model можно сделать на проп лол
а то что во вью можно вниз обработчик передать это собственно естественно т.к. как ты запретишь передать пропом ссылку на функцию, это фишка языка, просто это не принято
ну они же инициируются при присваивании переменной а не до исполнения как обычные
fn(); function fn() { console.log(42) }
вызывается
fn(); const fn = () => { console.log(42) }
выдает ошибку
только не пони какая ему разница если критично когда их вызовут а не когда инициализируют
плюс тут важно не то что стрелочные а что присвоены переменной, короче хз что он имел ввиду, не знаю
fn(); const fn = function() { console.log(42) }
тоже выдает ошибку
Для админки сразу бери набор компонентов. С нуля вообще ничего писать не придется. Ебучий конструктор.
Так это не из-за стрелочных функций, а из-за того что ты переменную объявляешь через const, объявляй через var и поведение будет такое же как у function
Спасибо.
Спасибо.
>ивенты с нагрузкой это как-то странно если честно
Это как посмотреть.
Попробуй вместо термина "эвент" использовать "сообщение".
И всё встаёт на свои места.
Аноны, такой вопрос, научился писать я код, работаю в крупной нефтяной конторе, кругом бюрократия, нас 6 чела в команде, начальник нашей группы никакущий управленец, процесс налажен херово, задачи ставятся без четких требований, заказчик сам не знает чего хочет, короче сделаешь нормально, потом приходится переделывать и тут уже говнокодишь, лишь бы быстрее задачу закрыть. Я оцениваю себя как аппер джун, есть пробелы в базе, я их закрываю читая про алгоритмы и все такое. Но вот как и куда двигаться дальше? Я хочу пересесть на мидловский стул, я пишу код самостоятельно с практиками и хорошими манерами, но ведь мидл делает тоже самое? Что отличает мидла и джуна? Читать про архитектуру? Но ведь она уже как правила заложена ранее и лидами. Анончик, расскажи, как рос сам, что посоветуешь?
Хороший код получается только если делать жертвоприношения Великой Кодовой Жабке
Аватаром Жабки был Дейкстра. Почитание Дейкстры открывает пути в высшие миры Кодового Болота
Если пишешь все самостоятельно (и не приходится доделовать именно из-за твоих проебов) то добивай опыт до какой-то красивой цифры и перекатывайся в мидла. Почекай вакансии, если будет возможность походи на тестовые собеседования посмотри что там вообще требуют.
Самое главное, не пиши на Коболе, ибо на Коболе пишут только люди с улицы
«Можно было брать людей с улицы», — рассказывает британский кодер Джон Пайк, изучавший COBOL в 1960-х. «И, по сути, учить их, как писать программы».
Прям таки видится современный формошлеп за 50к который хуячит продающие очередную говноту интерфейсы
А чего тебе чаще всего не хватало?
Чувак, "прямо с улицы" - в программирование - в Америке 60-х, это не то же самое, что прямо с улицы в программирование в России 20-х. Понимаешь?
Чтобы было понятнее - попробуй сейчас вкатиться в какой-нибудь биотех, например. Сможешь?
Да, стоит.
> попробуй сейчас вкатиться в какой-нибудь биотех
Совершенно понимаю, что это охуительно непростая задача. Вкатился бы с удовольствием за госсчет, но пока что только вкатываюсь методами превозмоганий да и то только на чистом энтузиазме. Впрочем хер бы с этими хайтеками, меня смущает что ради таких ремесленных знаний как формошлепинг приходится чуть ли не бароном делаться
Похоже, я не очень понял, о чём ты.
Алсо, формошлёпинг - это не ремесленные знания.
Иначе - это будет хуёвый формошлёпинг.
В любой работе основную массу составляет рутина, которая кажется ничего не стоящей тому, кто привык её делать.
Ты там сисек в тесте переел, что-ли?
Какой графический псевдокод, лол?
Код - это буквы, и их надо знать.
Есус. Гугли yEd, только это тулза, а не сайт. А нахуя тебе?
>esbuild
> The CSS content type is new and is still a work in progress. There is also a known ordering issue with importing CSS files from JavaScript files. You can follow the tracking issue for updates about this feature.
Ох лол
Почему сплайс изменяет "настоящий" массив, а не копию, переданную в функцию?
мутатор мыть надо, негр у тебя родился, геной назвали
https://doesitmutate.xyz/splice/
скопируй передаваемый в функцию массив и передавай копию а не референс на оригинал
>а не копию, переданную в функцию?
Потому что ты передаешь в функцию не копию, а "настоящий" массив.
>>>arr = arr.map(value => value + 1);
Доперло вроде. Таким образом я перезаписываю внутрифункционный переменную просто, а архив висящий где-то в памяти это не трогает. Оригинальный массив можно менять только методами, которые его "мутируют" ( https://doesitmutate.xyz ), правильно?
да
именно поэтому ты не можешь сделать просто arr.map() - нужно присвоить получившееся значение переменной т.к. оригинальный массив не поменяется
тогда как ты можешь сделать arr.splice() и ничего не присваивать
звучит как-то собакоебски
Ссылка: https://source-academy.github.io/sicp/split/
Хуя знает про гит, но в виме шелл команды через :!
Он тебе предлагает отредактировать commit message что ли? Просто выйди черед :wq
Уровень сеньор (прост с фулстака хочу чисто во фронт перекатиться, и не уверен что достаточно шарю)
>фулстак
>сениор
Выбери что-то одно. Фуллстак это максимум мидл на фронте и мидл на бэке. Хотя чаще всего это джун на фронте и максимум мидл на бэке. Поэтому если хочешь на фронт, то готовься откатываться на уровень мидла или ниже.
Проорал с "ментора" который принципиально не ставит ; в конце statement
)) Ты первый день что ли на двачах? Вон смотри какой кадр нарисовался пару тредов назад: >>1885745 →
Главное этот джун/стажер даже не понял, насколько сильно он обосрался. Это как пытаться выпенриться сказав, что ты сдаешь недвижку и владеешь 1-2 дома в каждом регионе России, думая что это типо круто (хотя ни один вменяемый инвестор в недвижку так не сделает)
А как хочу что-то сам сделать с нуля, вижу пустую директорию в IDE или пустое поле в задачках на литкоде и такой тупёж накатывает, что не знаю что делать, смотрю, туплю и закрываю.
Что со мной не так? Как-то можно такое вылечить?
С вероятностью 80% это один и тот же чел
Rewrite from scratch
Потому что объект - дохуя сложная штука. Прототипы, дескрипторы пропертей - всего этого в мапе нет
for (const key in {так:"",узнай:""}) console.log(key)
Я зашел на их сайт, а эта петушня требует авторизоваться и всякую хуйню
Внутри него допустимо аккумулятор мутировать или нужно возвращать новый или похуй? Например, если аккумулятор - массив и нужно добавить в него значение. И будет ли разница в быстродействии?
У меня на проекте юзается ангуляр, там эта datorama со своими сущностями впилена, хрен знает что это такое
async updateData(actor, options) {}
То есть некая асинхронная функция передает какие-то данные на бэк для конкретного actor. У меня есть массив где 20+ таких actor, как мне асинхронно разом закинуть их всех на бэк? Не ждать же мне каждый раз когда закончится исполнение предыдущего await чтобы начинать новый запрос. Асинхронщина не для этого придумана
Ясно. Типичный циклодаун не знающий как работает то о чём он кукарекает.
Мутировать конечно, ты же не собираешься использовать в качестве аккумулятора переменную извне? Разница будет не только в быстродействии, но и в использовании памяти, не в пользу создания нового массива.
Пытался писать не говнокод?
Какое из вне?
Мутировать аккумулятор на итерациях редюса или нет? Вот в чем вопрос.
Вот на пике как правильней? Или например, если аккумулятор - объект.
Но map же принимает только 1 аргумент... А там в функции их два - сам actor и некие options (которые как могут быть дефолтными для всех actor так и быть уникальными для каждого из них)
Я в работе вижу практически всегда второй варик через spread, он и короче и чуть более понятен, можно еще и return убрать. А если ты пушить собрался, то больше смысла имеет определить acc во внешнем скопе и просто внутри forEach пушить. Пушить подозреваю побыстрее будет, но имеет смысл уже на 1000+ элементах.
Всегда есть такое желание, более того, иначе даже не могу заставить себя работать.
Мне за тебя весь код писать? Общий принцип тебе показали, действуй.
Ну а срсли, зачем он тебе нужон? Обычно или что-бы во что-то кжадый элемент конвертнуть (map), что-то сагрегировать (reduce) или отфильтровать данные (filter)
Ну реально придумай плз пример, когда нельзя решить задачу этими штуками
Потому что цикл читается и понимается гораздо лучше чем дрочево редьюсов с рекурсиями. Кукареки "да ты просто не привык к функциональщине" оставь при себе, в любом современном ФП-языке рекурсия - это в 99% случаев антипаттерн и так существуют list-comprehensions, которые читаются как обычный цикл и используются в тех же местах. Никто не дрочит твои маняредьюсы каждый раз когда им надо n раз пукнуть.
Где "там"? Если в качестве аккумулятора ты используешь переменную, значит делай копию этой переменной и работай c копией, мутируя её в калбэке функции reduce.
Писать [...acc, e] вместо (acc.push(e),acc) будет только конченный дебил почему - показано на пикриле.
>Если в качестве аккумулятора ты используешь переменную
Где такое я сказал? Хуле ты слепошарый такой?
[...acc, e] каждую итерацию возвращает новый acc
(acc.push(e),acc) мутирует один acc
В том и был вопрос, что лучше. ФП же требует не мутировать ничего.
Только семантически такая запись внутри reduce никакого смысла не имеет, смысл reduce в том чтобы возвращать новый объект на каждую итерацию, а не мутировать его. Есть хочешь пушить, то внутри forEach.
Хуесосина тупорылая, я тебе изначально объяснил в каких случаях как действовать. Ты высрал "какое из вне?", на что я тебе объяснил какое. Ты хоть сам то себя понимаешь, макакен? Тебе вообще лучше забыть про программирование, даже на JS.
>смысл reduce в том чтобы возвращать новый объект на каждую итерацию, а не мутировать его.
Смысл reduce в приведении массива одного вида, в данные другого вида. Это не обязательно объект, это может быть и число.
>Есть хочешь пушить, то внутри forEach
Показывай пример. Только не говори что собираешься мутировать в forEach какую-то переменную извне.
Я бы лучше забыл, что ебал твою мамашу.
const maxNumber = prompt('Выберите максимально возможное число')
После этого надо выполнить ряд действий, но только если юзер выбрал какое-то число а не нажал на Cancel. Мне явно проверять if (maxNumber !== null) ? Выглядит по-уебански, но я не могу же проверять на if (maxNumber) потому что оно может быть нулем...
let numberSelected = true;
const maxNumber = prompt('Выберите максимально возможное число') ?? numberSelected = false;
if (numberSelected)
>const maxNumber = prompt('Выберите максимально возможное число') ?? numberSelected = false;
вут
Вот в чем суть: есть svg-изображение "стрелочка вверх" при нажатии на которую окно под ним сворачивается, при повторном нажатии - разворачивается, однако я хочу изъебнуться и не делать так чтобы стрелочка всегда показывала вверх, когда нужно развернуть окно, она должна показываться вниз. Как это сделать при помощи ванильного ЖС?
Ну поставь есть трансформом rotate или scale. В чем проблема-то собсна?
>ФП же требует не мутировать ничего.
Но ты не пишешь на ФП языке, шиз. Нет никакого практического смысла дрочить редьюсы вместо for цикла с мутацией, для потребителя API это будет то же самое, ему абсолютно поебать, спавнит твоя функция 1000 ИММУТАБЕЛЬНЫХ массивов чтобы вернуть результат, или создает этот результат сразу и мутирует его в процессе.
В конктексте жопоскрипта - да, более-менее. Мутировать переданные тебе объекты и так моветон, для этого гением ФП быть не надо, а внутри своей функции можешь хоть в жопу ебаться, главное результат отдай. И в жопу ебаться гораздо приятнее прямолинейным циклом, который любой дебил прочитает без проблем, чем дрочить редьюсы чтобы сделать ФП-шизика счастливее.
>внутри своей функции можешь хоть в жопу ебаться
>в жопу ебаться гораздо приятнее прямолинейным циклом
LGBT Pride & BLM: Начало
Например если в компоненте некий actionFlag = true то на элементе висит хендлер: (click) = "myFunction()"
Типо так можно? Какие вообще ограничения на expression внутри кавычек? Я могу многострочную ебень там понаписать и т.п.?
Ануляр вроде как всю эту дрянь в справа умеет в рантайме гонять через свой интерпретатор, поэтому туда можно писать всякую динамическую дичь как будто там всамедлишный жс
Тебе уже ответили.
Но, так лучше не делать. И не только в Ангуляре, а вообще.
Эту проверку лучше делать в функции-обработчике. В шаблоне должно быть логики по-минимуму.
А если ты имел в виду назначать/удалять обработчик у элемента, в зависимости от, как делают в чистом жс - то так в шаблонных фреймворках не делают. Если это критично - можно по-разному рендерить элемент - с обработчиком или без, в зависимости от условия.
Да
И как из реакто-макаки стать программистом?
Я совета спросил, мне твои аналитические навыки нахуй не нужны
Аноны, кто разрабатывал игры при помощи web, вы сами рисовали элементы? Если да, то как?
И объясните пожалуйста как работают фреймворки по типу gdevelop-app? Это типа конструктор или ты код пишешь параллельно?
Кошак скорее всего в редакторе был нарисован, а у всяких квадратиков различие только в стилях, которые можно шаблонизировать.
Очевидный WebGL. На худой конец Canvas.
"Правильно" реализовывать - это использовать http-only зашифрованную куку с сессией и вторую куку с публичной информацией о пользователе(id, имя и т.д), обе из которых должен выставлять сервер, чтобы ты мог по публичной куке в любой момент определить статус сессии. Но если сервер пишет непонятно кто, то скорее всего придется дрочить токены и локалсторы.
Сам спросил, сам ответил. Вот ебанутый.
>import debounce from 'lodash/debounce';
вот так не работает:
>import {debounce} from 'lodash';
импортится весь модуль. Интересно, почему.
Пытаюсь не импортировать весь модуль graphql, используя синтаксис
>import {print as printGraphQL} from 'graphql/language/printer';
но он в бандл тащится весь модуль, когда мне только эта функция нужна.
Я вообще не понимаю как это работает.
Вся суть руснявого комьюнити - выебоны на пустом месте и элитизм. Сходи нахуй, говна кусок
this.readableAgents$.subscribe(
(x) => console.log(x)
);
Но в логах он сначала мне пишет пустой список а затем на следующей строке уже список заполненный объектами, хотя console.log я вызываю 1 раз. Почему так?
Ты вообще отдаешь себе отчет в том, что в приведенных тобою снипетах импорта лодаша, ты импортируешь код из разных модулей?
>Интересно, почему.
По кочану, да по капусте.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import
Просто съеби
Поясните, CMS были изобретены для того, чтобы кабанчики вместо заказа сайта у разраба, платили создателю движка? В чём тогда смысл существований совсем простеньких веб студий третьего сорта, берущие простенькие заказы, если их продукты можно заменить CMS. Свой движок и возможность допилить рокет саенс при желании или просто незнание рынка заказчиком?
Мне нужен для скрипта на на сторонний сайт. Сайт на рякте, поэтому просто добавить элемент по domcontentloaded не получится.
Я делаю так - обсервер с наблюдением за дочерними и др. элементами на основной контейнер. Форичем пробегаюсь по всем мутациям и проверяю - есть ли нужный для вставки элемент-контейнер. И вызываю функцию, которая добавляет мой элемент.
Вопрос - как правильней: вызывать функцию на каждую мутацию и делать проверку в самой функции (и ретурн, если нет элемента). Или сначала проверку, а при наличии элемента вызывать функцию.
По этой теме: в rxjs есть Observable вроде этого:
availableNames$: Observable<string[]> = this.openFields$.pipe(
map(fields => [...fields.keys()])
);
Мне нужно внутрь этого массива добавить дополнительное имя "selector", если значение переменной-флага option == true. Был бы это просто цикл, я б на пофиг подмешал туда if но тут-то надо прогать в реактивном контексте, availableNames$ это Observable а не сам массив. Как туда подмешать новое значение в зависимости от переменной-флага?
Чувакам с хуйцом менее 20 см не понять
Это уже зависит от того, что там авторы модуля нахуевертили с импортами. Забей хуй и только обращай внимание на разросшиеся бандлы.
Анончик, с наступающим, такой вопрос, может где лежат курсы с angular university в бесплатном доступе? Я потом, когда стану крутым разрабом, постараюсь отработать.
https://www.youtube.com/c/TimurShemsedinov/videos
Зависит от того, откуда появился изначальный Observable. Скорее всего за ним стоит BehaviorSubject, который при подписке отдает значение с которым он был создан, а потом уже отдает то, что в него запишется позже.
Не совсем понял проблему.
Можешь просто в map смотреть на флаг и менять данные как тебе надо. Если тебе надо что бы данные из Observable менялись ещё при изменении флага, то тут только делать отдельный Observable с переменной флага и смерджить два obs в один.
>>4635
>>4676
Обычно одни рисуют, другие - пишут код.
Но, в маленьком проекте всё делаешь сам.
Есть огромное количество готового игрового клип-арта в интернетах.
Просто охуевающее количество, погугли game dev clipart.
Если надо - можно подрисовать немножко к готовому.
Также, есть куча книг по разработке игр на JS.
Там этот вопрос тоже рассматривается.
Гуглить javascript game development book.
Также - есть бесплатные туториалы и видео.
Всё гуглится.
Если не очень можешь в английский - на русском тоже должно быть дохуя всего.
Надеюсь я понятно объяснил, пример на пике, у нас есть два пседоОкна, когда закрываем одно, другое автоматически должно расшириться на его пространство
фигня какая-то у тебя а не объяснение
проще всего это сделать скрыв элемент который закрыли а поведение остальных чтобы заполнили пустое место прописать через ксс
ну а если хочешь ебаться то есть всякие методы для дом дерева типа closest ну а айди ты знаешь просто в листенере как this.id
нужен чтобы не писать вручную всякие дипкопи и дебаунсы
Я не знаю как прописать поведение остальных элементов так что бы они сами заполняли пустые пространства. у тебя есть пример?
пиши import { debounce } from 'lodash/debounce'
я знаю что такое флекс, я его использую, и он автоматически расширяется на всю ширину при масштабировании окна, то есть делает то что называется адаптивность, но как сделать так что бы элемент автоматически занимал место ДРУГИХ элементов, это я хз
когда ты скрываешь элемент там освобождается пространство которое можно занять
короче я не буду с телефона пытаться на фиддле пример показать, доберусь до ноута запосчу
Ну у меня спека на работе ебанутая. Надо возвращать номер билета обязательно в формате Number, блять. А номер в свою очередь приходит строкой, к примеру "00011". Естественно, при дефолтной конвертации через +, parseInt, Number и тд. оно нули обрезает. Вот я и спрашиваю может есть какой нибудь трюк, или мне просто отвечать чтоб не выдумывали хуйни и возвращали номер в строковом представлении.
Да я это понимаю. Получается единственный способ сохранить нули в начале номера - передавать его только в строковом формате?
вот тут
https://stackoverflow.com/questions/56186513/leading-and-trailing-zeros-in-numbers/56188557
предлагают использовать
но не факт что тебе пойдет
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
>Надо возвращать номер билета обязательно в формате Number, блять
Куда возвращать?
Число 00011, эквивалентно числу 11, я не понимаю какую разницу между ними ты вообще ожидаешь?
>Куда возвращать?
В ответ сервиса JSON
>Число 00011, эквивалентно числу 11
Да ладно?
>я не понимаю какую разницу между ними ты вообще ожидаешь?
Ты пизданутый или что то? Прочитай еще раз выше пост. Это не моя хотелка, а по идиотски составленная спека.
>В ответ сервиса JSON
Так возвращай 11. В чем проблема?
>Да ладно?
Слушаю список отличий. Вообще, в JS 011 это 9, но я сильно сомневаюсь, что ты имел в виду восьмеричное представление числа.
>Ты пизданутый или что то? Прочитай еще раз выше пост. Это не моя хотелка, а по идиотски составленная спека.
Для задающего такие вопросы ты слишком агрессивен чот.
Я просто реально не понимаю. Вот ты ведь не поленился напистаь эти 13 строк. А то что это никак проблему не решило тебе вообще пахую?)
>>5658
Ну во первых не все.
Во вторых я бы уже давно пихнул и расслабился, если не нужно было бы для этого все пересогласовывать и просить поменять спеку и другие сервисы, зависящие от моего.
Какую проблему, шиз? Ты говоришь, что тебе приходит номер с нулям, ты хочешь с ним работать как с числом, но потом опять вернуть в формат с нулями. Я тебе дал способ это сделать, если тебе еще что-то надо, то формулируй вопросы нормально.
011 и 11 это одно и то же число. Передавая 11 ты передаешь и 011 и 0011 и 00011.
>В том что по спеке нужно вернуть 011, и именно с ебаным нулем, и именно в Number.
Значит тот, кто ее писал такой же дурачок как и ты, что тут скажешь.
>Надо возвращать номер билета обязательно в формате Number
>чтобы начальные нули не обрезались и получилось 00011
>формулируй вопросы нормально.
Как? Ну вот скажи, как мне ЕЩЕ сформулировать? Для идиота даже понятно по моему. Но ты не понял.
>>5667
Ой, а что это у нас такое? Специалист JS треда снова обосрался? Вот не впадлу же вам спорить, когда очевидно что в вопросе ошибаетесь.
Идиоту уже пять раз объяснили, что формата "Number и шобы нули не обрезались" в жопоскрипте, да и вообще в любом языке, нет. Идиот не понял, и продолжает нести свою шизоидную чушь в тред, вместо того, чтобы переформулировать вопрос и сказать наконец, что ему нужно сделать и нахуя.
чтобы парсинг джсона был с нулями тебе нужна строка заебал уже
>В том что по спеке нужно вернуть 011, и именно с ебаным нулем, и именно в Number.
Такое невозможно в жс.
Разве что только в результирующий джейсон вставлять строку, а потом парсить её и убирать кавычки.
Вопрос уровня «как мне передать !false в Bool, но не true, а именно !false».
До ес6 (или 5, не помню уже) числа с велущим нулем - восьмиричная запись числа. Но тами цифры в разрядах могут быть только от 0 до 7.
node.js
делаю реквест на www.twitch.tv/directory/game/Dota%202
получаю респонс
как из него выпарсить названия каналов?
как вызвать больше респонсов от прокрутки?
>Один, ОДИН не-долбоеб в треде нашелся
>>>1895635
>в формате намбер нет нулей вначале нэ
>>>1895651
>Число 00011, эквивалентно числу 11
>>>1895669
>011 и 11 это одно и то же число. Передавая 11 ты передаешь и 011 и 0011 и 00011.
Кури доки к апишечке, там наверняка есть опции типа `page` и `limit`.
Ну или через папитир чисти вилкой, если к апишечке доступа нет.
с api всё понятно, но он хочет client_id для которого надо как девелоперу подрочить. Так не годится.
>Ну или через папитир чисти вилкой
Что конкретно нужно делать?
>Что конкретно нужно делать?
Всё то же, что и в клиентском жс - дёргать дом, выковыривать значения, хранить их в джейсоне/дб, программно нажимать на кнопки и/или листать страницу для дальнейшего ковыряния.
Metaframework.js
heroku
Handlebars JS
Так бля, не понимаю, что еще за функции resolve, reject которые мы передаем в Промисе?
ты в любом случае все что высрет вебпак кинешь на хостинг...
Но я никогда не передавал эти коллбеки никуда, юзал только then/catch (нахрена вообще есть resolve/reject когда есть then/catch ?)
С серверной частью сложнее. Нужен хостинг, переваривающий ноду, так что только всякие хероку, версель и нетлифай.
У CRA нет никакой серверной части, только статика. Вебпак, кстати, тоже никакого отношения к ней не имеет.
Их используют когда нужно сделать новый промис, а не использовать какой-то существующий.
когда внутри промиса выполняется ресолв то исполняется код в зэн блоке, а когда там исполняется реджект то код в кэтч блоке
Как в nodejs сделать GET с параметрами в URL? Сделал get но параметры не прикрепились (first, game_id)
const options = {
hostname: 'api.twitch.tv',
port: 443,
path: '/helix/streams',
method: 'GET',
first: 100,
game_id: 29307
};
Зачем ты сравниваешь две библиотеки с разными предназначениями? Лодаш библиотека с набором полезных функций-утилит, а жквери это библиотека для манипуляций с домом и сетевыми запросами. Жквери устарел, потому что, во-первых, нативный жс хорошо поднялся, во-вторых, все уважающие себя перешли на фреймворки вида Ангуляр, Реакт, Вуе.
Лодаш не устарел, потому что его функционал еще не заменён нативным жс или фреймворками.
Для начала написать, через что ты этот запрос делаешь, а лучше сразу гугли "моялибанейм query parameters", может там есть встроенный способ их прикреплять, а может придется вставлять самому.
Установить нормальный http клиент, от этого ты охуеешь, он слишком низкоуровневый. axios какой-нибудь ставь.
ивенты error и end взаимоисключающие я правильно понял?
?
На хероку все норм шло, не ебу что там у тебя. А если хочешь прям "свой сайт нахой" то покупай хостинг, покупай доменное имя бля а ты че думал?
Бля ну хероку и прочая ебала по моему не серьезно, хули это че за сайт www.хуйнейм.хероку.вочко.com, хочу по настоящему
Покупай бля хостинг я яндекс-хостинг юзал и свою питонопарашу туда заливал, покупай доменное имя бля. Думаешь это тебе кто-то за бесплатно подгонит?
Чувак, 011, c ёбаным нулём, в Number - это число в восьмеричном коде.
Знаешь, что это такое?
011 (oct) = 9 (dec)
Ебаный ноль - это и есть признак восьмеричного кода.
Если же тебе нужен десятичный код, в Number и с нулём - так не бывает.
Есть какой то способ упаковать, или сгенерировать dllлку для nodejs скрипта, чтобы он работал без установки nodejs? dependecies: 'fs' 'querystring' 'https'
Более шарящий в чём?
Кстати, восьмеричные литералы с нулём нынче deprecated, про это я подзабыл, ибо давно не имел дела с ними.
Да и в твоём случае они ни при чём - я почитал с самого начала.
То, что ты хочешь - невозможно.
И это не нужно.
Не может быть никакой причины так делать.
Так что, это у тебя либо не число, а код (строка), либо ведущие нули не нужно сохранять, чтобы работать с этим числом.
Если же это таки число, и тебе потом надо отправлять данные назад в таком же виде, с нулями - значит надо делать кастомный форматтер числа для вывода в json.
Если ты расскажешь больше подробностей - возможно, я тебе что-то посоветую.
>восьмеричные литералы с нулём нынче deprecated
Это вообще легально? У меня вот в новехоньком хромиуме до сих пор <marquee> и <font face=""> нормально работают
Да какая разница. Весь веб это такая хрень где можно только добавлять, но не убавлять, чтобы что-нибудь чужое случайно не сломать
Легально. Они не работают только в strict mode. А то, что ты перечислил это вообще не часть JS. Алсо, иногда из браузеров убирают фичи, которые планировались, но в итоге не попали в стандарт.
У тебя там своя арифметика, я смотрю.
Ты пиздишь.
Открой, блядь, консоль браузера.
Прямо сейчас открой.
И набери туда просто 011
И сразу, тут же, внизу увидишь 9.
Потом - 0011, потом - 00011 - и снова увидишь 9.
Догадываешься, почему это 9, а не 11?
Потом набери туда 0011 === 00011
Потом - 0011 + 12 === 00011 + 12
В обоих случаях увидишь true
Неожиданно, да?
Так мне и нужно, чтобы числа с нулями впереди обрабатывались как числа с нулями спереди, то есть чтобы js не обрезал нули.
Звучит как шизофрения
На namecheap купи себе доменное имя например
это тот же пхп шторм для людей ненавидящих слово пхп, так что да
Очень хорошие лекции. Но больше для того чтобы понимать как вообще работать в Node.js. В общем рекомендую. Сам далеко не все посмотрел правда. Сам Тимур очень шарящий
Есть функция, которая делает свое дело. Как к ней приделать ивент onfinished, так чтобы в нем можно было зарегистрировать другие функции на экзекуцию после неё?
Это восьмеричные числа.
Более того - это, блядь, литералы.
Ты понимаешь что такое литерал?
У тебя там номера билетов, кажется?
Они что, восьмеричные?
Вы там ебанутые?
В любом случае - хочешь восьмеричных чисел из json - нет проблем, используй свой десериализатор, для строк, состоящих из одних цифр, и начинающихся с нуля: parseInt("011", 8)
Никак.
Только создать новую функцию, которая будет вызывать эту функцию, а потом - onFinished().
Как вариант:
const myNewFunction = (someArg) => {
myFunction(someArg);
onFinished();
}
Потом:
myNewFunction('foo');
Просто писать вызов функция() после инициализации или использовать iife?
И как лучше записать одноразовую функцию - обычной или стрелочной.
Как удобнее, так и делай.
Стрелочные от обычных отличаются только обработкой this.
В стрелочных он из внешнего контекста, в обычных - свой собственный.
Стрелочную нельзя вызвать до инициализации.
Имеет ли смысл использовать стрелочные/функциональные выражения вместо обычных для оптимизации?
Скажем, у меня несколько функций внутри другой функции. И часть функций может не вызываться по условию. Если сделать объявления стрелочными после условия или делать обычные функции (которые заранее инициализируются), здесь будет разница?
Вот на пике два варианта.
Что значит "нельзя вызвать до инициализации"?
(() => ...)()
Ты занимаешься хуйнёй преждевременной оптимизацией.
Это большой грех и корень многих зол.
Сделай уже как-нибудь, и не еби мозг.
Что значит "оптимизация"?
Что тебя не устраивает в том, что ты сделал?
Почему ты думаешь, что такая ерунда тебе что-то оптимизирует?
Какую именно? Я вообще не понимаю, в чём проблема.
Функцию инициализации?
Функции внутри функций?
Это зависит от многих вещей.
В любом случае - единственное принципиальное отличие стрелочных от обычных - обработка this.
>>2152 (OP)
class x{
let r
A(callback)
{
onend(,(arg) =>
{
callback(arg)
})
}
B(callback){
onend(,(arg) =>
{
callback(arg)
})
}
C(callback){
onend(,(arg) =>
{
})
}
Do(){
A(B(C)) //Короче вызвать последовательно A B C
}
}
функции синхронные? ну и вызывай переданный в них коллбэк в самом низу
если асинхронные то делай тоже самое только после await
какие-то идиотские вопросы имо
Разберись с промисами. Погугли, почитай что-нибудь.
Ничего особенно сложного, но, в двух словах это трудно объяснить.
Потом можешь задать более конкретные вопросы, если будут.
Начать можешь прямо отсюда:
https://github.com/axios/axios
async|await хороши, когда человек понимает, что это, и как это работает.
И что такое вообще асинхронные операции.
Как-то попадалось правило стайлинга, что не принято использовать continue и break. Так ли это? Часто ли сами используйте?
Я вот часто весьма.
Cпасибо няша!
>И его вполне себе используют и с фреймворками.
Кто? Долбоебы вроде тебя? Возможно. Но любой адекватный программист знает, что нужно избегать прямых манипуляций с DOM и делать всё при помощи специального синтаксиса в шаблонах.
Очевидный switch-case
Ай, спасибо тебе большое, добрый мен
Какие подводные? Кто пробовал такое делать?
Не задавался вопросом, почему до сих пор этот проект не переписан на ваниллу?
Проблема переписывания не столько в самом жикверике, сколько в сопутствующих проблемах, типа переменных в глобал скоупе, на которых может быть завязан огромный пласт логики, прямые манипуляции стилями, плагины к жиквери, которые не совсем очевидно как переписать на ваниллу без ковыряния сырцов.
Это дело может затянутся надолго короче, так что ещё добавь обьяснять кабанчику надобность такого переписывания.
Впрочем, ничто не мешает переписывать отдельные очевидные вызовы типа `$("div")`, пока пилишь очередную фичу в том же файле. И через код ревью проще будет протащить.
Потому что фреймворк сделан для того чтобы эти манипуляции производить наиболее эффективным образом. Делая это самостоятельно, ты нарушаешь его работу и порождаешь малопроизводительный код.
Согласен, ООП это круто. Ведь в ООП варианте ты можешь добавить любую функцию для сравнения и код будет работать, а в варианте без ООП тебе придётся переписывать весь код.
Взял и добавил невероятную функцию сравнения в класс, а потом создал инстанс, и вызвал его метод вместо того чтобы просто вызвать эту же функцию на месте. Ой как удобно, только выиграли
Ну вот в пхп наебались с этой ебаной процедурщиной и вызываемыми по динамически вычисляемому ключу функциями в копилках-массивчиках, ушли в полное джаваподобие, видимо до вас пока не дошло
Из php динамическая диспетчеризация методов и позднее связывание никуда не делось.
Объекты ни в жс ни в пхп ассоциативными массивами не являются.
Ты несешь какую-то дичь.
>php
лол
>вызываемыми по динамически вычисляемому ключу функциями
в чём проблема? Берешь и вызываешь без задней мысли о конструкторах
>вызвал его метод
И сразу понял что у меня там, equal, lessOrEqual. При этом могу менять эту логику/модифицировать в любой момент, не ломая код который использует данный объект.
>эту же функцию
Она возвращает -1, 0, 1 Т. е. тебе помимо вызова разных функций нужно еще и проверки самостоятельно делать для того чтобы определить что там у тебя вернулось, и делать это в любом месте, либо пилить какую-то дополнительную функцию, которую ты будешь вызывать в дополнении к основным, т. е. получается размазанный и непонятный код, который сложно понимать.
При этом если ты захочешь модифицировать вывод, например в случае если значения равны, ты хочешь писать данные в лог, то тебе придётся менять все функции, а в случае с ООП ты делаешь изменения только в одном месте.
Я про то, что справа это нечто типа того что в старом процедурном пхп было бы ассоциативным массивом со стринговыми ключами и значениями-функциями. В плане "удобства" работы так точно одна малина
Не понимаю, зачем нужны классы. Зачем нужно создавать объекты через функцию? В js.
Почему эти функции нельзя было положить просто в объект или вообще без него?
Ну вот у тебя есть какой-нибудь класс вендорский Compare с методами типа compareByZalupa, ты захотел туда что-то добавить типа comparebyZalupa1, тупо экстендишь, добавляешь. Если у тебя в вендорском коде залупа типа const compare = (matcher, zalupa) и внутри она там какие-то свои правила объявления и обработки этих залуп имеет, то ты сосешь хуй
>И сразу понял что у меня там, equal, lessOrEqual
конечно понял, ты же это написал compare.lessOrEqual(5, 10)
Так же как и я вызвал compare('lessOrEqual')(5, 10) и получил тот же результат
>не ломая код который использует данный объект
сейм
>размазанный и непонятный код
размазанный на три лишних строчки. Другое дело чётенький ООП в два раза больший по объему, и уже не страшно если в три станет
>если значения равны, ты хочешь писать данные в лог, то тебе придётся менять все функции
equal: (a, b) => {
const isEqual = a === b;
isEqual && console.log('...');
return isEqual;
}
три строчки, как я и сказал. Какие ещё функции я должен поменять?
>Почему эти функции нельзя было положить просто в объект или вообще без него?
Если ты про фабричные функции, то методы в них создаются заново с каждым инстансом, что не есть айс в плане памяти. Иначе нужно пердолиться с прототипами, что ещё хуже в плане читаемости по сравнению с сахарком.
compare = defaultCompare => (matcher, zalupa) => {
if (typeof defaultCompare === 'function') {
defaultCompare(...)
}
}
можно вынести методы наружу
>и получил тот же результат
Так ты от темы то не уходи. Я же тебе сказал, в случае если логика сравнения будет отличной от той что ты в своём compare указал, результат будет не одинаковый. Тебе нужно будет либо менять код compare, что повлияет на уже существующий, либо лепить еще одну функцию и дублировать в ней то что ты уже написал в compare, меняя только логику сравнения. Из этого мы и получаем:
>ломает код который использует данную функцию
>размазанный и непонятный код
>три строчки, как я и сказал. Какие ещё функции я должен поменять?
А если тебе нужно будет делать лог только в определенных условиях? Дай угадаю, теперь у тебя функция equal принимает не 2, а 3 аргумента? В общем, ты и правда такой тупой, что не понимаешь к чему подобные модификации ведут или просто неумело троллишь?
Алсо
>compare('lessOrEqual')
>'lessOrEqual'
Ты хотя бы в константы выводи подобное, хоть не такой жидкий обсер получится. Иначе другой долбоеб вроде тебя напишет lesOrEqual и вы потом как биба и боба будете неделю искать в чём же у вас там баг, почему сравнение неправильно происходит.
Зачем ты comparisons (правильно comparators бтв) в функции объявляешь, наркоман? Чтобы на каждом вызове просто так по пять функций создавать? А аргументы зачем мутируешь? Алсо, передача магических строк это довольно хуевый API. Переделывай, короче.
>Тебе нужно будет либо менять код compare, что повлияет на уже существующий, либо лепить еще одну функцию и дублировать в ней то что ты уже написал в compare, меняя только логику сравнения
пояснил в >>6809
>тебе нужно будет делать лог только в определенных условиях
в каких? В полнолуние? Для остальных кейсов, когда у тебя функция делает миллион дел, есть параметр с опциями {логать: не}
>ты и правда такой тупой...
потише, дед, не напрягайся, а то сердце схватит
>в константы выводи подобное
Чё за хуйню ты спизданул? Константу хочешь? Держи
const lessOrEqual = compare('lessOrEqual')
lessOrEqual(5, 10)
Сори, что заставил тебя заморать трусы
>есть параметр с опциями {логать: не}
Где он? Что-то не видно. Ах, да, щас только вон по той сотне файлов пройдусь, изменю существующее, дополню нужным, проверю чтобы ничего не поломалось и тогда всё появится! О чём и говорилось изначально: Нет ООП - нет планов на будущее.
это была сарая версия
>аргументы зачем мутируешь
как что-то плохое
>передача магических строк это довольно хуевый API. Переделывай, короче
как скажешь, останусь после работы писать как ты захотел
>долбоеб на полном серьёзе предлагает лепить глобальные переменные
Ты еще хуже чем я думал. Я надеюсь ты не называешь это посмешище которые ты высрал "ФП кодом".
>Где он?
будет, когда придёт время. Или ты пишешь сразу функцию со всеми возможными вариантами использования на 5 лет вперёд? Тогда моё почтение, пророк
>изменю существующее, дополню нужным, проверю чтобы ничего не поломалось и тогда всё появится
нет, я просто напишу ещё одну маленькую функцию или разделю существующую или сделаю обёртку, а может добавлю коллбек. Ведь я пишу в функциональной парадигме у меня конструктор лего, а не дубовый шкаф на века
про модули не слышал? Садись свой первый тудулист писать в таком случае
>нет, я просто напишу ещё
Вот, в общем-то, и вся суть ФП. Можно только порадоваться, что твой горький опыт послужил для кого-то примером.
ведь ты не будешь писать новый функционал. В ооп он сам себя напишет, проверит, и главное ничего не сломает. Ах как хорошо
Именно так, ООП творит чудеса. Осталось тебе только перебороть свою лень и хотя бы основы ООП освоить. Но это конечно сложнее, чем "просто напишу еще".
фанатик, спок
>Ведь я пишу в функциональной парадигме
Бля, баш оказывается это ФП, там же можно функций накидать
Справедливо говоря, в ООП бывает неприятно когда в коде вендора допустим есть метод вроде ок, но там что-то проебано, типа флаг \u не проставлен у регулярки, метод написан хуево и на 500 строк полотном процедурным, и чтобы исправить такую проблему надо делать вообще хз что, то ли переопределять метод и писать в нем почти полную копипасту того что было но с исправлением проебов, либо хз, колдовать
в 2020 какие-то другие сайты?
Как же херово что в жс нет перегрузки
>const
>глобальные переменные
Вся ссуть дебилов с ООП головного мозга. Пиздуй обратно в свою жаву абстрактные однозерновые фабрики писать для вызова одного метода.
колеги потом за такое кейкапы снимут с клавы
Как сделать тут так чтобы промис не throwил, а просто выполнял fail, когда fail коллируется в GameNameToID?
Ебанько, jQuery != "прямые манипуляции с DOM".
Но, дегенератам-сосачерам это непонятно.
Зайди на leetcode и посмотри исходники страниц.
Там будет 1-й Ангуляр + jQuery + jQuery UI.
Естественно для тебя нет разницы.
Dll именно - сильно хз. Есть упаковщики, которые могут это сверху самой нодой обмазать, но исполняемый файл 40 мб получится.
Скрипт - это не только скрипт, но и его зависимости.
А у зависимостей - свои зависимости.
В итоге - получается 100 мегабайт жс-говна в node_modules.
Потому, что жс не предназначен для серьёзного программирования.
Пока ты дрочишь со спчками, где-то в фоне возят слона. Профилирование (оценку времени исполнения разных частей программы) сделай и посмотри, что времени больше всего жрёт.
>Но любой адекватный программист знает, что нужно избегать прямых манипуляций с DOM
Это не так.
Любой адекватный программист знает, что все что нужно, это как можно дальше откладывать рефлоу, если он неизбежен, или избегать его вовсе, если это возможно. А для этого достаточно в дом толкьо писать и никогда из него не читать.
А программирование на шаблонах, диффах, и прочим неявным рендерингом нужно для того, чтобы тупые необучаемые идиоты, которые нихуя не умеют, не понимают, и не хотят учиться, не писали говна. Но они умудряются и без этого его писать.
>на шаблонах
Каким боком шаблоны к неявному рендерингу.
И почему если только писать в дом, то рефлоу не будет?
Браузер его не читает?
>Каким боком шаблоны к неявному рендерингу.
Потому что это абстракция. Любая абстракция - это уровень невяности. Когда ты пишешь fn() - ты тоже функцию вызываешь неявно внезапно. Явно было бы если бы ты аргументы на стек складывал и управление по адресу передавал.
>И почему если только писать в дом, то рефлоу не будет?
Все изменения дома батчатся и применяются единомоментно в рендеринг-фрейме. Принудительный рефлоу вне цикла отрисовки происходит только если ты будешь читать из дома то, что требует пересчета.
Понятно.
У жсоблядков - параллельная эволюция происходит.
Они открывают для себя те вещи, которые нормальные люди уже открыли многие годы назад.
Например, то, что "явно" писать программы в машинных кодах или на ассемблере - неэффективно. Хотя, на первый взгляд, всё выглядит наоборот.
Поэтому, они с остервенением дрочат на "чистый жс" в противовес jQuery, говорят, что фреймворки не нужны, и занимаются прочими подобными вещами.
Т.е. они живут среди нас, но, ментально отстают лет на 30.
>придумываешь такой имя переменной окда
>has already been declared
>ну похуй, я ведь дебил, просто добавлю единичку на конце))))
Когда у тебя эволюция произойдет и ты поймешь, что JQuery это не фреймворк, а библиотека, а также поймешь в чём разница между библиотекой и фреймворком?
Ну собсно я это уже предлагал. Хотя лучше реально поставить ноду, кому от неё хуже будет?
"Именно поэтому" - это почему?
Потому, что leetcode на нём сделан, или почему?
jQuery можно использовать с любым фреймворком.
Я это делал с react и c vue.
Мне насрать на пидарские табу дегенератов-сосачеров, вроде тебя.
Сынок, а где я утверждал, что jQuery - это фреймворк?
Ты русский язык знаешь, вообще?
Понимаешь, что значит перечисление через запятую?
>это почему?
Потому что без параши вида JQuery UI за которым тянется JQuery, не удобно делать хоть какой-то хорошо выглядящий интерфейс.
>jQuery можно использовать с любым фреймворком.
Да, говнокод писать можно используя любой фреймворк в сочетании с любыми библиотеками. Если постараться можно и Vue вместе с реактом использовать.
>Я это делал с react и c vue.
Сочувствую.
>Мне насрать на пидарские табу
Ну если для тебя "писать чистый код" это пидорское табу, то остается только догадываться какой логикой ты руководствуешься высерая подобное.
додик, пропробуй держать всю логику в одном файле
профессионально*
Хуя помидорину разорвало
nodejs-овский рантайм весит ощутимо меньше. Кроме того, заставлять юзверей каждый раз таскать его с собой по-твоему сильно гуманно? Почему майкрософту можно ставить свои redistы, а ноде нельзя?
Дебич, let и const не могут быть глобальными, а то что ты назовёшь переменную дважды, тебя редактор ещё на стадии написания кода обоссыт.
Я посмотрел читшит по нему и редукс и охуел с того, как все отстало и ебано сделано по сравнению с vue. Особенно оподливился с редьюсеров, где коммон практис - это switch/case для мутирования стейта
В чем реакт объективно пиздат? Потому что я не увидел ни одного плюса по сравнению с vue
Почти не в чем, кроме того, что ты куча функционала пишешь сам, и типа можешь написать что-то как ты хочешь, и все будет прозрачно (накастылить и сделать хуево в 95% случаев)
Думаю взять macbook air 13 2020. Хватит производительности для IDE + вкладочек браузера и еще какого-то говна сверху? Не будет гудеть, лагать, греться сильно спустя пол года?
Или подскажите свои ноуты бесшумные и не греющиеся особо
>ты куча функционала пишешь сам, и типа можешь написать что-то как ты хочешь
Так а плюс в чем?
Это как говорить, что плюс велосипеда по сравнению с машиной в том, что на велосипеде ты ногами педалируешь сам, а не какой-то там шайтан ДВС везет тебя
Ну о том и речь, что тут спорный плюс)
По факту вью покрывает 99.9% кейсов и потребностей и продуктов.
Если ты хочешь писать что-то супер большое и массовое, где требуется гибкость пиздец и производительность (например свой алиэкспресс, блять, ага). То наверное реакт будет поинтереснее, но шанс на это пиздецки мал.
>поясните, схуяли вообще реакт популярен?
Потому что предлагаю понятную модель работы без магии.
Я за час разобрался как работает во вью реактивность (через подписки и геттеры/сеттеры в object.defineProperty) и в сорцах даже нашел где какие хуки в какой последовательности дергаются
Где там магия? Даже v-model - это просто сахарок над :value + @input
есть какая-то (полу)готовая библиотека, которая бы позволяла решить задачу создания чего-то типа автокомплита или выпадающего по хоткею/правой клавише мыши списка, который должен генерироваться из csv/json/плейнтекста, лежащего на сервере?
(Я криворукое животное, js не знаю)
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/datalist
С мышью надо пердолить один из мышиных ивентов.
>Реактивность на неявном создании геттеров и сеттеров (собсна сложное и неявное поведение и есть магия).
Что в этом сложного и неявного-то?
>Но иногда эта абстракция протекает и на помощь приходят костыли в виде Vue.set.
Уже давно нет, конкретнее с того времени как начали там юзать proxy
>Алсо абсолютно лютые шаблоны со своим встратым DSL и биндами через магические строки.
вкусовщина
>>7375
Конечно
>Что в этом сложного и неявного-то?
В смысле что неявного? Ты задаешь плейн объект, а вью под капотом его неявно преобразует в свою структуру, которая работает уже не как плейн объект.
>Уже давно нет, конкретнее с того времени как начали там юзать proxy
Это с v3? Ну молодцы, новый набор костылей завезли. Вроде обычный объект, но ой, деструкция-то не работает. Алсо в консоли прокси красиво смотрятся.
> вкусовщина
В смысле вкусовщина? Использование левого DSL вместо собна JS это хорошо что ли? Как там типизация, нормально работает? Или магические строки в какой-то момент стали вопросом вкуса?
Во-первых пример вынут из жопы и если ты такое дерьмо пишешь в реальной жизни, то ты долбоеб без вариантов, во-вторых если ты хотел показать, что "мам строк кода меньше", то это решается плагином на стрелочные методы, и слева их можно сделать ровно столько же, сколько и справа, в-третьих если ты меряешь качество кода по количеству строк, то смотри пункт 1.
Спустя полгода ничего не будет.
Только сегодня видел у знакомой маши Air, которому 6 лет - пашет, как конь.
У меня 9-ми летний Pro на i7 хуярит за всю мазуту - сейчас с него пишу.
И есть 3-х летний Pro, тоже на i7 - основной, там вообще всё летает.
>Air
Лучше возьми 2-3-х летний Pro б/у.
У них характеристики могут быть даже лучше, чем у сегодняшних прошек.
Я свой 3-х летний не обновляю вовсе не потому, что денег нет, например.
>Аноны, кто кодит с каких ноутов?
Десктоп с двумя мониторами. Ломать глаза за ноутом нет никакого желания.
Ты не поверишь, чувак, но, мой 32" монитор отлично подключается к макбуку. И второй, 27" - тоже, но, уже к другому.
>В чем реакт объективно пиздат?
Появился, раньше. Практически без конкурентов, на тот момент. Дальше эффект снежного кома. Сейчас просто дешевле стартовать на реакте проект, чем на вью, вот и все.
Тогда бери, что нравится. 16+ памяти есть в любом ноутбуке, а процессор у них у всех говно. Только экран лучше 15 дюймов, на всякий случай. Если нравятся макбуки, то бери прошку.
Не дешевле.
Единственная реальная причина - react native, поддержка мобильной разработки.
И то - все плюются на это тупое и тормозное говно, но, под него есть инфраструктура, много наработок и т.п.
Тут другое - инерция мышления.
Люди вообще очень консервативны и инерционны.
Вчерашняя инновация сегодня становится несокрушимым железобетонным барьером на пути следующих инноваций.
Это ты немного промазал - надо было вот ему - >>7343 - писать.
И да, ты совершенно прав.
>>7489
Вообще, да, лучше десктоп.
Но, могут быть причины брать ноутбук.
ИДЕ нормально работают на современных ноутах, но, на десктопе - это другое.
У меня (помимо вышеописанных макбуков) есть ещё десктоп 8-ми летний, на i7 3770K, так вот, на нём всё работает несравнимо быстрее, это вообще земля и небо. И надо бы его уже обновлять, но, скорее по имиджевым причинам, т.к. хуярит он как заводной, с быстродействием вообще ниикаих проблем.
Но. это i7 3770K 3.9 GHz + 16 GB + SSD Samsung 850+960 Pro.
>Не дешевле.
Реакт в три раза популярнее Вью и Ангуляра. Разработчиков выше. Средний уровень зп соответственно выше + на реакте можно быстро склепать мвп, ну а дальше уже по ситуации действовать.
Нет, шизики, в мире айти популярность проходит в одно мгновение и никакие "снежные кома" и "привычки" ваше говно в присутствии объективно лучшей альтернативы не спасут, неважно насколько оно большое и популярное. Если с чем-то легче и эффективнее работать, то с этим будут работать, а инертные и менее эффективные конкуренты как всегда останутся на обочине истории, примеров тысячи, начиная от прогрессии языков программирования, заканчивая фреймворками и либами.
А причина непопулярности вью кроется не в том, что "люди тупые и ленивые и не видят что для них лучше" как любят плакать адвокаты любого псевдоинновационного дерьма, а в том, что он объективно громоздкий, неповоротливый и не приносит ничего нового в сферу. Инновационность реакта заключается в том, что они не пошли по стандартному пути "есть html-шаблон, есть жс-код, соединим их магией", а просто выкинули нахуй html-шаблоны как таковые и сделали полностью ориентированную на жс либу, где все, что ты делаешь - это пишешь обычный жс-код. Именно эта ориентированность на код(плюс интуитивно понятный и удобный DSL с минимумом отсебятины) и подняла реакт на его полностью заслуженное место.
>неповоротливый
Понятно всё с тобой.
Пройди на хуй, пожалуйста.
Вью быстрее реакта.
И это, блядь, невооружённым глазом заметно.
И это вытекает из его природы и природы реакта.
Так что, ещё раз, иди на хуй, сынок.
Он мне будет тут рассказывать про сик транзит глория мунди.
Да я код писать начал, когда тебя ещё на свете не было, лол.
>Вью быстрее реакта.
Я ни слова не сказал про производительность, это вообще десятое дело при выборе фреймворка.
>И это, блядь, невооружённым глазом заметно.
Отличный способ измерить производительность, сразу видно вью-шизика.
>вью
>выкинули нахуй html-шаблоны как таковые
Щито бле?! Монжо чуть меньше бояры в следующий раз употреблять плиз
>Если с чем-то легче и эффективнее работать, то с этим будут работать
Ты наивен. Рулит маркетинг в первую очередь. Ember.js был отличным фреймворком, но его до сих пор мало кто знает.
Phoenix на беке, позволяет супер быстро лепить стартапы + высокая производительность, но его тоже мало кто юзает, так как нет хайпа за ним.
С реактом тоже самое. У него куча минусов, но его продолжают юзать.
Я пропустил слово "даже".
Даже невооруженным глазом заметно.
Реакт (концептуально) - типично левацкая ебанина.
Коту под хвост пустили все принципы и best practices, наработанные десятилетиями.
Мешанина из говна - наш новый марксистский идеал.
Мы наш, мы новый мир построим.
Но, тут пришли китайцы, и дали пососать.
Потому, что, в отличие от западных полезных идиотов - леваков, они знают что такое марксизм-ленинизм-маоизм не понаслышке. Они сыты этой хуйнёй по горло.
Поэтому, они делают не сферическую хуиту в вакууме, а _практичный_ (практичный, блядь, сука, нахуй) продукт.
А левакам, естественно, неприятно.
>Рулит маркетинг в первую очередь
Это смешно, когда шизики с шапочкой из фольги рассказывают про то, что рекламой можно заставить человека купить что угодно, но еще смешнее, когда они говорят, что рекламой можно заставить разработчика против его воли пользоваться бесплатным опен-сурс фреймворком.
>Ember.js был отличным фреймворком
Не был.
>Phoenix на беке, позволяет супер быстро лепить стартапы
Писал на нем хоть что-то или маняфантазируешь? Я вот случайно так получилось писал и пишу, и хоть фреймворк и язык действительно отличные, но для "быстрой разработки стартапов" до рельс и их инфраструктуры им еще грести и грести. Так что популярность рельс и непопулярность пеникса в этом отношении абсолютно объективны.
>У него куча минусов, но его продолжают юзать.
"Куча минусов" не говорит ни о чем, потому что а) в 99% случаев выясняется, что это твой субъективный манямир и реального минуса ты назвать не сможешь б) оценка производится не в вакууме, а в контексте. И в контексте текущей ситуации фронтенд-разработки, лучше реакт нет ничего.
>>7539
>Коту под хвост пустили все принципы и best practices
Во-первых пук в лужу без конкретики, во-вторых реакт - это либа, и его способность определять бест практики и структуру твоего приложения очень ограничена по определению. В отличие от.
>аряяя китайцы леваки марксизм
Таблетки выпил?
>заставить разработчика
Так разработчик ничего не выбирает. Выбирает СТО или владелец бизнеса если шарит. А уж эти товарищи смотрят именно на хайп и тренды. Да и разрабы честно говоря тоже. Много кто знает про hotwire и stimulus например? Нет, конечно, ведь сейчас же SPA подход суется в любое очко, даже там где он вообще нахуй не нужен. Но хайп есть хайп.
>Phoenix
Медленнее, чем руби, это еще не значит что меделенее чем на Node.js или Java.
>Ruby
Вообще не популярен. Очень мало вакансий в сравнении с всеми остальными и новые проекты на нем уже почти не стартуют вообще.
>реального минуса ты назвать не сможешь
Да пожалуйста.
1). Хоть это все голишь и либа, как любят задвигать адепты реакта, но на выходе сайт на реакте весит просто овер дохера. 500-600 килобайт на первую загрузку, как нехуй делать.
2). Отсутствие встроенной архитектуры, из-за чего кодобаза на реакте очень быстро скатывается в говно.
3). Самосборный фреймворк на базе реакта, состоит чуть более чем полностью из пакетов рандомных васянов.
4). Сама по себе разработка очень долгая, в связи с черезмерным оверинжинрингом, как и у всех СПА решений, кроме свелте разве что, (но там свои проблемы)
>Это смешно ...
К сожалению, это нихуя не смешно.
Вокруг множество примеров того, как побеждают откровенно неэффективные решения и подходы, как людей вынуждают потреблять некачественные товары, и они соглашаются с этим. При этом эффективные решения предаются забвению, производители качественных товаров разоряются и т.п.
Люди - тупое стадо.
Ты видел эти BLM баннеры на сайтах крупнейших разработчиков?
Ну и вот.
>популярность рельс
Ты рубист, перекатившийся в жс?
Золотая классика, лол.
Всё понятно с тобой, только надо было раньше сказать, чтобы я время на тебя не тратил.
проиграл
алсо мне тоже кажется что будущее за темплейтными фреймворками вроде вью и свелте, а подход реакта немножко не взлетел
>Так разработчик ничего не выбирает. Выбирает СТО или владелец бизнеса
Владельцу бизнеса, которому хватило мозгов этот бизнес организовать, всегда хватит мозгов на то, чтобы проконсультироваться по поводу технических альтернатив и вариантов с технически подкованным человеком. Ты же несешь шизу уровня "я бы писал хороший код, да менеджер не разрешает" и пытаешься представить себя(и других разработчиков) в виде безответственного безвольного дрона, в которого менеджер/тимлид/директор загружает команды, а дальше хоть трава не расти, надо выполнять.
>но на выходе сайт на реакте весит просто овер дохера. 500-600 килобайт
Действительно огромная проблема, но ты лет на 15 с ней опоздал.
>Отсутствие встроенной архитектуры
Я просил минусы, а не плюсы.
>Самосборный фреймворк на базе реакта, состоит чуть более чем полностью из пакетов рандомных васянов
Из чего состоит любой опенсурс фреймворк, если не из "пакетов рандомных васянов" по твоему определению? Или если рандомные васяны собрали свои пакеты в один репозиторий, то это сразу меняет дело? И так же не вижу, при чем тут сам реакт.
>Сама по себе разработка очень долгая
Ты сказал или примерно почувствовал?
Знал бы ты, сколько сил и времени я в своё время потратил на это ваше руби.
Дурак был, потому что.
Интуитивно понимал, что это хуета.
Но, думал, что не может же быть, чтобы столько уважаемых людей продвигали откровенную хуйню. Думал, что это я не понимаю чего-то важного.
Потом поумнел.
А потом и время расставило всё по своим местам.
Но, в качестве концептуальной вещи (а не рабочего инструмента), руби оказался мне весьма полезен, в своё время.
Это намёк на нерелейтед?
Нет, в данном случае - всё в тему.
Тогда - руби, сегодня - реакты и редуксы.
Накал анала примерно тот же самый, лол.
Это намек на то, что история твоей жизни в подобном описании имеет к обсуждению программирования примерно такое же отношение, как консистенция твоих покакулек.
Где ты увидел историю моей жизни, сынок?
Я рассказал о совершенно конкретных вещах, и провёл совершенно конкретные параллели.
С нуля это невозможно.
Надо сначала вкатиться в разработку простых веб приложений.
И не надо пытаться сократить путь, это даст совершенно обратный результат.
Рекомендую использовать Vue для фронтенда.
На этом пути тебя не будут ждать никакие подводные камни - их там просто нет.
Всё ровно и предсказуемо.
В отличие от реакта, например.
Вообще, это обширная тема.
И с чего начать - зависит от многих факторов.
Например - знаешь ли ты английский?
Что ты умеешь на данный момент?
Каков личные предпочтения в технологиях и т.п.
>>Коко, реакт даёт нам возможность писать как мы хотим и все видеть и понимать
Это нахуй не нужно почти всегда. Ты платишь эту прозрачность кучей проблем. Кодовая база везде разная, Либы везде разные, код стайл разный, архитектура разная, все почти везде разное. Новые проекты стартуют куда больше чем на вью, потому что это ебаная лиьа которая толком нихуя не умеет.
>реакт даёт нам возможность писать как мы хотим и все видеть и понимать
Это фальшивый аргумент.
На Vue я пишу так, как хочу.
И мне совершенно всё понятно.
При этом, большинство реактоблядей не могут сказать то же самое про реакт, про хуки, контексты, редуксы и прочее.
Аргумент про (якобы) "неявные" реактивные привязки в Vue - просто смешон.
Это что-то на уровне "я не знаю, что там компилирует этот ваш компилятор, поэтому, буду писать прямо в машинных кодах".
Любого, кто предъявляет подобные аргументы, нужно смело посылать на хуй, не вступая в дискуссию.
Это когда менеджер не заебывает вопросами "Ну когда сделаешь? Ну когда же? Когда?"
>Вью скоро сместит реакт на многих нишах веб разработки
Да-да, пять лет уже смещает, а скачиваний в npm все еще в 4.5 раза меньше. Прям не могу смириться с такой несправедливостью.
Любой бек с нуля я бы начинал дддшным
Фронт зависит от задач и фреймворка. Если есть грамотно составленные тз с нормальной разметкой - можно навернуть atomic
р-рантайм? дай ссылку плз
>При этом, большинство реактоблядей не могут сказать то же самое про реакт, про хуки, контексты, редуксы и прочее.
Хуки и редуксы к которым у вью шизиков всегда почему-то есть претензии - это способы менеджить стейт в реакте, причем очень прямолинейные, контролируемые и понятные, как только поймешь их принцип. Не вижу, почему они должны быть сложнее для понимания, чем вью-система для стейта, которая по сути является неявным setState, работающим через жопу и кучу оберток-проксей.
Лол неужели все так тяжело
useCallback will return a memoized version of the callback that only changes if one of the dependencies has changed. This is useful when passing callbacks to optimized child components that rely on reference equality to prevent unnecessary renders (e.g. shouldComponentUpdate).
useMemo will only recompute the memoized value when one of the dependencies has changed. This optimization helps to avoid expensive calculations on every render.
Помогло?
Ты просто не видел некоторого дерьма. У эпл под тысячами новых апишек красуются пустые страницы с No overview available и списком методов, а гайдам которые за ручку водят под сраку лет
Я понимаю как работает vue
У меня претензии в реакте не к тому, что там что-то НЕПОНЯТНО, а к тому, что скорее убого
https://github.com/reduxjs/redux/blob/master/examples/todos/src/reducers/todos.js
Вот офишл экзампл, простейший туду апп. Что блять за свичт-кейс? Почему перезапись стейта сделана через ВОЗВРАТ значения из редьюсера?
Сравни с тем же vuex, где во-первых мутации сделаны отдельными функциями, а не пердоленьем со switch/case в 2020 (я чо бля, на первом курсе снова и пишу лаба2.цпп?) и прозрачно понятно, откуда БРАТЬ стейт, а какая хуйня его ИЗМЕНЯЕТ
Отклеилась ссылка на vuex
Тут разбили на отдельные файлы экшны и мутации, я обычно в одном файле делаю, но суть понятна
https://github.com/vuejs/vuex/blob/dev/examples/todomvc/store/mutations.js
https://github.com/vuejs/vuex/blob/dev/examples/todomvc/store/index.js
Нет, я понимаю конечно что реакт топит за функциональное программирование, и его подход в этом плане более трушный
Но ФП в промышленной разработке хуево взлетает, работает в лучшем случае какой-то гибрид типа скалы
А в реакте вангую в реальных проектах есть овердохуя костылей для сайд-эффектов, которые в реальном, а не кукаретическом программировании очень нужны бывают
Так а какие претензии могут быть к самому реакту, если он сам по себе - маленькая либа по выплевыванию html в зависимости от переданых в него данных?
Существуют разве в природе проекты на реакте без стейт-менеджмента, роутинга и прочего?
Ну и я правильно понял, что тебе нечего возрозить на этот пиздец в редаксе и ты признаешь что это злоебучий высер по сравнению с vuex?
Стейт-менеджмент не равно редакс. Глобальный стейт, для которого редакс и сделан, нужен примерно никогда, а в тех редких случаях, когда он нужен(сессия, например), есть менее нагроможденные альтернативы типа эффектора.
>>7804
На редакс у меня дохуя возражений, но речь идет не про него, а про реакт, и я не вижу, с чего ты начинаешь перескакивать с темы на тему и ставить знак равенства между двумя независимыми либами.
без роутинга делать спа уныло
но роутинг ничего особенного страшного
без глобального стейта сложно написать большое приложение
>без глобального стейта сложно написать большое приложение
Что ты собрался в нем хранить и нахуя, расскажи?
информацию которая нужна во многих частях приложения
зайди например на сайт какого нибудь озона - корзина, город и т.п. настройки почти наверняка хранятся в стейте
>корзина, город и т.п. настройки почти наверняка хранятся в стейте
Не знаю где там что у озона хранится, но должны они храниться на сервере или в крайнем случае в куках, если это что-то простое и глобальное, типа города.
>Вот офишл экзампл
Редакс это не часть Реакта, алое. Но поскольку в Реакт входит useReducer, то не вопрос, отвечу.
>Что блять за свичт-кейс?
В чем проблема?
>Почему перезапись стейта сделана через ВОЗВРАТ значения из редьюсера?
Потому что в этом смысл редьюсера — принять старый стейт и ничего не мутируя вернуть новый.
>Сравни с тем же vuex, где во-первых мутации сделаны отдельными функциями
Сравнил. Чем создание функции increment с this.count += payload принципиально лучше case actions.increment: return state + action.payload?
>прозрачно понятно, откуда БРАТЬ стейт, а какая хуйня его ИЗМЕНЯЕТ
И чем же обращение по this прозрачнее чем state из аргумента?
Вуедебил даже свою мамашу засунет в стор, если это просто.
В каком верхнем скоупе, наркоман? Если пишешь с асинк/эвейт, то код у тебя в модулях лежит.
На самом деле для сайта стейт - это dom.
Ебать оказывается есть валенки тупее меня в разы, сука я за пару недель освоил редакс после работы занимаясь пару часов в день, а ты пидр тут вроде и вью свое толкаешь а тупо почитать доку про сраный редакс не можешь? Ххарк пьфу в твое жирное ебло
usememo это реактокостыль из-за того что у них нет computed свойств которые не вычисляются каждый ререндер
ну город в куках ок, хотя читать куки из любого места где может город понадобится как-то не очень удобно а вот корзину и в куки не засунешь, типа предлагаешь ее каждый раз запрашивать?
Computed свойства это костыль из-за того, что у них нет useMemo, который не вычисляется на каждый рендер.
Все фреймворки и либы это костыли, до сих пор пишеш на ваниле и html?
>ну город в куках ок, хотя читать куки из любого места где может город понадобится как-то не очень удобно
Город может понадобиться только в одном месте - на сервере, который его учитывает в формировании ответов, а фронт этот город должен максимум отобразить. Если ты считаешь, что читать город из локалстора и передавать его в каждом запросе удобнее, чем просто хранить в куках, то тебе надо пересмотреть свое понимание удобности.
>а вот корзину и в куки не засунешь, типа предлагаешь ее каждый раз запрашивать?
Разумеется запрашивать, или ты думаешь, что клиент должен иметь разные корзины на мобилке и в веб-версии? Корзина гостя - это просто вариант корзины клиента и реализовывать ее через локалстор, вместо такой же серверной реализации, смысла нет. Запрашивать не каждый раз, а один раз при первом рендере(или когда надо явно обновить).
Задачка
У тебя есть компонент Рынок который в конкретный момент времени показывает один из дочерних компонентов
1) Огурцы
2) Помидоры
3) Бананы
Для отображения компонента Огурцы тебе нужно забрать с сервера список с огурцами, для Помидоров список с помидорами и тд
Какой вариант ты выберешь?
1) Держать все три компонента в памяти с их списками
2) Каждый раз при показе дочернего компонента создавать новый и снова запрашивать данные с сервера
3) Держать списки помидоров, огурцов и тд в родительском компоненте Рынок
Как раз есть мемоизация
Держать в стейте списки полученные с бэка, при переходе к компоненту огурцы запарашивать новые данные на сервер и если они есть получать, а что?
Любой компонент, который прямо основывается на данных с сервера, должен эти данные дергать каждый раз, когда маунтится впервые, кроме невероятно редких случаев. А на твой вопрос можно выбрать и 1 и 2, потому что в такой формулировке это один и тот же вариант, разницу между ними ты сформулировать не сумел.
Это зависит от сервера.
Сервер должен на списки возвращать облегчённый джейсон из индекса, а для детальных запросов - отдельный эндпоинт с запросом.
1) 2) данные хранятся в дочернем компоненте.
1) При показе компонент не создается заново В vue нужно обернуть компонент в кееpalive
2) создается
В любом случае пользователю придется ждать рендеринга, причем время ожидания зависит от интернета пользователя
Ты еще кучу данных в гет запросе будешь отправлять? Или состояние предыдущего запроса на сервере хранить?
Нахуя? Если есть локальный стейт и там лежит все что нужно. Прилетаю новые данные в стейт они отображаются, если нет значит нет. Ты совсем валенок видно?
Значит ты всегда запрашиваешь все данные при рендеринге компонента? Ну и что ты хотел этим сказать? Что выбрал 2)
ты думаешь только об одном обращении к апи, а ведь это все нужно и просто для отображения
простейший пример, у них например при наличии товараов в корзине на иконке корзины появляется количество товаров в ней
ты предлагаешь делать такой запрос на корзину отдельно для этой кнопки из ее компонента? а как она узнает что его снова надо сделать? может туда еще и сокет прикрутить лол
в разы проще хранить корзину в стейте
Если под локальным стейтом ты подразумеваешь что-то не являющееся состоянием компонентов Огуцы, Помидоры, то ты выбрал п 3) Непонятно почему ты назвал это локальным
Локальный значит локально на пк, а не на сервере
при перезагрузке он должен снова запрашиваться
а при спа перезагрузка должна быть редкой только если f5 нажать
Единственный нормальный вариант это сокет. Или в общем server events
И что это меняет? Предварительный запрос на сервер тебе нужен так и так, а где ты его будешь вызывать, в компоненте корзины или на самом верху приложения и передавать вниз - суть остается одна и та же.
Ошибся нитью?
...
Но ведь записи в консоли браузера это и есть "вне функции"? Не один ли хуй где именно ты это напишешь: в файле index.js который ты подгрузишь на страницу или в консоли? Концептуально разницы ноль
Консоль браузера - это debugging tool и ее разработчик может туда засунуть что угодно, включая возможность для удобства писать await вне функции(который под капотом все равно выполняется внутри функции, потому что в жаваскрипте в принципе нельзя по-другому).
>потому что в жаваскрипте в принципе нельзя по-другому
Можно. Скрипты и модули исполняются в контекстах vm. Ты и сам можешь эти контексты создавать если рантайм пробрасывает тебе нужные апи (в ноде например проброшены апи от v8, в jsшелле от spidermonkey)
Только это уже не жаваскрипт, а работа с его движком.
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
ПЕРЕКАТ >>1897984 (OP)
Это копия, сохраненная 1 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.