Это копия, сохраненная 15 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в ад.
Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката: https://developer.mozilla.org
Или написание кастомных for лупов теперь дохуя алгоритмы?
Когда исправишь расскажи что в твоем говнокоде не так было, интересно
Манюнь, я понимаю, что в твоем манямирке все окружающие тебя люди это такие же вкатуны как ты, но реальность такова, что есть и те кто уже работает. Так вот, код который я пишу защищен NDA, погугли что это такое. Я не хочу нарушать договоры ради того чтобы доказать что то сычу, сидящему на мамкиной шее. Мог бы конечно придумать что то похожее, сгенерировать набор данных и написать рабочий код, но не думаю, что у тебя хватит денег для оплаты хотя бы 10 минут моего времени.
>Так вот, код который я пишу защищен NDA, погугли что это такое.
NDA не распространяется на названия алгоритмов.
вопрос на засыпку, что сначала выполнится: 32-ая строка или 35-ая?
просто все любят нюхать газики :3
Ну хер его знает, я не такой профи. Наверное да, то, что я его под этим аяксом написал, не знгачит, что он после него выполнится. Но это вроде не должно влиять на проблему, да?
>названия алгоритмов
Тебе в прошлый раз написали название, долбоеб, ты начал кукарекать о том что в гугле ничего не нашел и требовать примеров.
Самое смешное, что даже увидев пример, твой манямирок взбунтуется и начнет сыпать оправданиями, потому что такие как ты осознают важность изучения алгоритмов только когда к жопе прижмет, т. е. когда встретишься на практике.
Всега 35, 32 только после выполнения запроса.
Ну так у меня даже "Click!" не появляется, то есть вообще кнопка не срабатывает получается.
вешай по нормальному на все в том числе будущие сразу
https://api.jquery.com/on/
$('body').on('click','.deleteTaskButton',function(){...
тредю зашкварен
> Смотреть про погромирование, когда тебя заебало погромирование.
Ничего страшного. С возрастом это пройдет.
Ну дударь ладно есть что то годно, но вторый который там же хуйня какая то для детей
Привет.
Пикрил норм книжка, чтобы вкатиться в жс тому, кто уже на другом прогает?
Если нет, посоветуйте что-нибудь для освоения особенностей языка.
Спасибо
Да это мем на уровне "мерцбау масонна" из /mu
IT-KAMASUTRA, JavaScript.Ninja, Тимур Шемсединов, freeCodeCamp, Brad Traversy, Dev Ed, Aaron Jack, Kent C. Dodds, Web Dev Simplified, Ben Awad, Shai UI, Chris Hawkes, The Coding Train, Simon Dev, Ania Kubow, DevTips, Frontend Weekend, Фронтенд Юность, Tim Ermilov, Low Level JavaScript, Coding Garden, подкаст «Мысли и методы» Рахима Давлеткалиева, TechLead, S0ER, Senior Software Vlogger, Сергей Немчинский, АйТиБорода, Victoria Borodina, Юрий Дудь, Джастас Уолкер, Адвокат Егоров
Почему? У неё же класс такой же. Или вот я не понимаю как оно работает, типа в какой-нибудь ДОМ не попадают элементы и оно их там не видит?
>>44424
А так кликает да. Только теперь у нового элемента data-id андефайнд...
>>44386
...потому что блядь кавычки забыл закрыть в имени класса, в коде, который рендерит карточку после добавления в жс коде.
Так что наверное и так бы сработало.
Ну типа что значит "не повесил хендлер на созданную кнопку", когда созданная кнопка такая же как и те, что до этого были? Почему хендлер на тех висит а на эту не вешается типа?
Потому что она была создана после обвешивания хендлеров.
Посмотри в доме, чем она отличается от присутствующих.
$(selector).click() работает так: он ищет все элементы в доме удовлетворяющие селектору и вешает на каждый из них функцию, в новых нодах которые ты добавишь потом естественно хендлера не будет, вызываешь ты его один раз на дом-рэди, либо вешай на создании кнопки на неё хендлер либо используй $().on
>>44496
Ну понятно, спс. А в документации вроде написано, что клик - это синоним он(клик).
>>44498
Да я же и написал сразу, что уже нашел обсер. Сраная кавычка вот тут. Поэтому он так странно и подсвечивался, лел, а я не видел в упор. Но из-за того, что я вместо клика написал "он", я хотя бы это заметил и нашел.
Выше нас есть симуляции высшего уровня там другие законы
Мы должны создать симуляцию проще нашей насколько хватит вычислительных возможностей
Зачем функция getHash? Лишнюю строку кода засирает. Тебе здесь filter не нужен, просто в новый чёт спредишь старый стейт и добавляет новый элемент
У меня нет NDA, так что в общих чертах отвечу. За все время работы был один случай, когда пришлось чуть-чуть вспомнить дискретную математику - это когда я заартачился и написал движок для поиска и визуализации пути, простой как пень., и редактор точек к нему. На все ушло в районе... двух дней что ли, если алгоритмы считать. Вот и прикинь, сколько времен человеку-энтерпрайзу нужны алгоритмы.
мимокрокодил
>>1944152 →
>У твоего расширения есть репозиторий? Был бы не прочь поконтрибуцировывать код в него.
Да не, это я чисто для себя написал. Благодаря подсказкам ИТТ, работает сейчас всё так, как я хотел бы.
А кстати, интересно вдруг стало. Если я, к примеру, со временем расширю базу и захочу вынести этот json в отдельный файл, то это неполияет на производительность или ещё чего?
Верстал, плиз. Любой поиск - алгоритм. Любая выборка - алгоритм. Работа с таблицами - алгоритм. Просто работа со списками уже алгоритм.
Можно конечно обмазаться либами, но в интепрайсе ты не можешь либы брать, потому что каждая либа проходит ревью у безопасников.
Алсо, половину этих алгоритмов проходят в 10-11 классе, так шо похуй.
>>44708
Не, во второй версии говна, рандомизация по индексам. Ща сделаю и скину. Хорошо выходит, ух.
А когда на толчке сидишь - это тоже алгоритм? И расскажи-ка мне, что ты там в 10 классе проходишь, какую "половину алгоритмов"? Хоть один назовешь или опять сольешься, верстала?
то есть допустим у меня
this.options = arr.map(...)
this.options2 = [...this.options]
На мой взгляд выглядит как говно. Можно ли сделать это в одну строку?
Зачем? Что мешает просто просто использовать this.options?
В твоем коде ты не «присваиваешь результат map», а делаешь поверхностную копию массива. И это, пожалуй, самый идиоматичный способ ее сделать.
Лучше всего будет поднять простенький сервер на ноде, как было сказано выше уже.
Как еще один вариант - написать два менеджера/сервиса запросов. Один для сервера, другой чисто мок-заглушку, который на любые запросы будут асинхронно возвращать какие-то тестовые данные. И переключаться между ними по надобности.
В этом случае, у тебя будет готовый инструмент для тестирования/разработки фронта независимо от того, какой сейчас треш творится на беке. Но это имеет смысл только если ты там собираешься долго работать и тебе вообще не похуй.
Верстал, вот скажи, ты хоть раз отличал json от object? О чем ты вообще споришь-то?
Алгоритм токов. Ты изучаешь математику, жс, программирование, книжку логики, немного философии. И потом сможешь json от object отличать.
Иначе ты так и будешь обсираться в каждом треде десяток раз.
алгоритмы не нужны
>Верстал, плиз. Любой поиск - алгоритм
Алгоритмы, мальчик мой, это не то же самое, что бизнес-логика. Алгоритм - это какой-нибудь сраный муравьиный поиск, который ты пишешь самостоятельно. Или сортировка. Или еще что-нибудь подобное, требующее знания математики и CS, а не умения код набирать. Всё остальное к алгоритмам в программистском смысле не относится.
Ну собственно. Слава ноде и слава жс, которые позволяют это сделать с полпинка.
>Нормально ли юзать local/session storage для обычных сайтов ?
Да. А для каких сайтов он предназначен по-твоему? Каких-то необычных?
>И какой обьем приемлем?
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
Нужны. LS можно прочитать только через JS, а куки вшиваются в каждый запрос, это важно для SSR, например.
Кроме того, у кук есть атрибуты Secure и HttpOnly которые защищают пользователя от ряда атак.
>Если я, к примеру, со временем расширю базу и захочу вынести этот json в отдельный файл, то это неполияет на производительность или ещё чего?
Конечно влияет, отдельный файл нужно будет каждый раз парсить, а при добавлении новых элементов - перезаписывать. Если не нужно заморачиваться сортировкой джейсона, то можно ограничиться записыванием нового элемента в конец массива.
Но там должно быть дохуя записей, чтобы влиять на что-то. Для сравнения - `package-lock.json` свежеустановленного Create React App - 700КБ размером и 17к строк. И ничего, всем норм. Он, впрочем, нечасто дёргается, только при установке/удалении пакетов в проекте.
И если у тебя не совсем днищепэка, то ощутимой разницы не будешь чуять, пока пилишь под себя. Проблемы могут начаться, когда подумаешь поднять сервер для своего расширения, но там уже не будет проблемой этот джейсон в бд мигрировать.
Анончики, посоветуйте годноту почитать по nodejs для вкатыша. Хочу понять, как серверная часть работает.
Мдн, метанит
Наебень какой-нибудь проект, одним из компонентов которого будет сервак на экспрессе. Использовать MDN как справочник можно, как учебник - нет.
Приходит запрос, сервер стартует экземляр твоего скрипта. Всё.
Асинхронно чуть сложнее, но суть та же.
>перезагрузке странице, либо переходе на другую страницу сайта
Освой доя начала азы роутинга в спа, если это не спа нахуя тебе редакс?
Чтобы удобно шарить общий стейт между компонентами. Юзай redux-persist если тебе сейв в локал сторадж нужен
В 2021 ничего не делается ни через лс, ни через костыли.
А почему ты решил что редакс это делает? И где он должен хранить стейт если не в ls?
Делают только те кому нужно, по дефолту ЛС не юзается. В чём твоя проблема? У тебя в спа нет роутинга и из-за этого редакс стейт сбрасывается при переходе на другие страницы? Так установи сраный роутер.
Джейсон... Объект...
У меня стоит роутер!
Ну условно у меня 3 компонента с разными роутами.
Первый рендерит все карточки товара.
Второй рендерит карточку товара.
Третий - корзина, которая показывает товары, которые были в нее добавлены и рендерит их.
При клике на добавление в корзину -> имя товара, цена и прочее сохраняются в стейт. Но при переходе в корзину он сбрасывается...
Значит у тебя страница перезагружается. Роутер поставил, а ссылки из роутера использовать не догадался?
Скрины почему-то не кидаются. Что я не так делаю?
<Router>
<Route path="/" exact component={Home}/>
<Route path="/login" component={Login}/>
<Route path="/registration" component={Registration}/>
<Route path="/cart" component={Cart}/>
</Router>
<a href="/login"">Log in</a>
<a href="/registration">Sign Up</a>
<a href="/cart"">Cart</a>
Спасибо. Теперь редакс имеет смысл, лол.
Нахуя нужна реактивность, если у меня есть глобалстор? Глобалстор лучше реактивности же. Но если реактивность нинужна, то можно вообще обойтись только шаблонизатором + стореоном? Но ведь стакать вызовы рендера нужно. Или типо это стореон будет делать? Или для этого отдельная либа нужна? Или реактивность нужна чтобы в шаблоны пукать, а стор чтобы переменные хранить?
Блеадь. Что за хуйня.
Ясно. Спс. Понял даже больше, чем мне нужно. Спросил потому, что мой код будет инжектится на каждую открываемую страницу в браузере. Файл микроскопический, так что зря я парюсь в общем-то.
В ангуляре можно добавить директиву, и в нее руками передать все что надо, но хотелось бы чтобы работало на все компоненты само.
>как встраиваться в лайфсайкл чужих компонентов снаружи
Через внешнее API этого компонента. Если же таких возможностей компонент не предоставляет, то сосешь хуй и пишешь свое.
{
"item1": {
"description": {
"value": "1000"
},
"flag": 1,
"errors": 0
}
}
Вывожу в консоль item1 > объект выводится как показано выше. Если начинаю лезть вовнутрь, начинает на любой глубине выдавать undefined. Если вывожу в консоль любую его вложенность прямо во время фетча типа - .then(data) => console.log(data.item1.description.value), то в консоль доступ к объекту выводится нормально, показывает 1000. Но если я потом его куда-то записываю и хочу получить к нему доступ через записанный объект, точно так же, весь объект внутри undefined. Но при этом сам объект item1 и его структура выводится в консоль, а вот все что внутри недоступно. Что я не так делаю? Что там ломается у жсона при записи в переменную?
Это зависит от того, как реализован эндпоинт. Самый наотъебись вариант - высирать весь список в джейсон и пусть фронт там сам ебётся с пагинацией и фильтрами.
В более рабочем варианте ты сначала решаешь, будет ли твой эндпоинт реагировать на GET или POST запрос. При гете фильтры парсятся через https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams или эквивалент на питоновском серваке, и ты отправляешь джейсон в ответ. Ну а с постом всё понятно, клиент присылает тебе джейсон, ты его анализируешь и выплёвываешь джейсон в ответ. Собственно твоя работа состоит в написании эндпоинта и что на него должен отправлять фронт, а уж что он там делает с ним после получения ответа - похуй.
А если не хочу сосать хуй? Внутри фреймворка то все ивенты в любом случае файрятся даже если на них сами компоненты не подписывались, значит можно же что-то задекорировать так, чтобы они просачивались наружу?
А шо это? Это разве не просто что-то вроде обсервера, который сообщает "подписчикам" об изменениях?
Лол, проиграл с варианта, чтобы отдавать полный список, но да, вроде в голове сложилось что через параметры урла просто отдавать отфильтрованные данные, а уже фронт пусть их втавляет в нужные места, кстати, пагинация на беке делается, тоже важный момент, надо запомнить
Создай скрипт открытия новой вкладки, и на новой вкладке твой этот что там у тебя, санйап. Совсем ебанулся с аниме своим?
>>45560
А еще нужно кэширование сделать и алгоритмы формирования json. А авторизацию вынести на сервер. А еще можно через вебсокет. А json через бинарные данные передоват. Да и хранить всё в бинарном формате в бд, через индексы кэша.
А можно просто найти можно проверяй)) бд которая всё это делает безстрочкикода.
await наверняка забыл и записываешь в переменную промис, а не то, что пришло из него. Должно быть либо
let responseBody = await fetch('/').then(r => r.json())
либо
fetch('/').then(r => r.json()).then(storeResponseBody)
Там написано про редирект, на который юзер переходит после атунтификации. Это не то.
1. Нужно ли дробить по компонентам - отдельно таблица, отдельно чек-бокс, который идет полем в этой таблице и который принимает каждую сущность по отдельности? Или все говно слепить в кучу и булевое заменять на чек-бокс?
2. Каким инструментом пользоваться? NgModule? Формы? Вроде бы простая задача, но толковой реализации не могу придумать.
добавлю - как форма будет понимать, с какой срочки пришел запрос на Change, если в таблице куча чек-боксов?
я получаю массив объектов, у которого по нескольк полей, в том числе булевое, которое в таблице должно показываться как чекбокс. Я знаю, как пользоваться (change), если в случае статического объекта. А тут массив.
https://jsfiddle.net/qz82n9pg/
вот такая шляпа у меня. Последнюю колонку нужно как то заменить на чек-бокс. Твой кусок закоментил, ибо нихуя не работает
Да нет, не промис, в том и дело. Причем повторюсь, этот объект даже вывести в лог можно, а вот всё, что внутри него - нельзя
>Что я не так делаю?
е понимаешь как работает ассинхронность и чем отличаются моменты когда ты читаешь свой объект внутри обработчика в then, и когда ты его пытаешься прочитать там, куда записал.
>Что там ломается у жсона при записи в переменную?
Ничего нигде не ломается. Ты пишешь код, непонимая, что он делает и как он на самом деле работает. Перестань относится к программированию, как к магии, где успех зависит от того, насколько тебе повезет. Начни пытаться понимать ЧТО ИМЕННО ты делаешь.
Спасибо конечно, но именно это я и пытаюсь сделать
От реализации и настроек зависит. Обычно создается css декларация и подключается на страницу и на элементы назначаются сгенерированные названия стилей вроде .aBcd . Эти стили учитывают повторяющиеся декларации в исходниках, потому если ты создаешь овер дохуя элементов с одинаковым набором стилей, на выходе они все будут ссылаться на один и тот же css-класс, дабы не злить Окама. При желание можно перенастроить на инлайновые, но лучше не надо.
Чтобы получать конкретные практические ответы, нужно научиться задавать конкретные вопросы, и если они касаются конкретного куска кода, то приводить этот код. А задавая "почему эфемерное у меня не работает", ты получаешь соотвествующий ответ. При чем пользы он несет намного больше, чем твой вопрос. Но даже этого ты понять не способен, или не пытаешься, как и то, то же именно ты делаешь, когда пишешь тот или иной код, вместо попыток удачно составить синтаскически корректное выражение.
>Я делаю так, как здесь показано во втором примере
В этом "втором" примере нет никаких "сохранений чего-угодно в переменную" и "работы с этой переменной где-то потом".
У меня к тебе вопрос. Почему у меня нога чешется?
Или реактивность в каком-нибудь солиде ограничена областью видимости функции или компонента?
Блядь шож так непонятно всё. Ебала.
Но вообще не ладно, понятно что нужно разбираться и я сам прекрасно это понимаю. Просто сразу бы и сказали, что недостаточно исходных данных, а вместо этого начали мне басни читать
>>45919
Верстал, ты ебанутый? Нахуй ты пытаешься строить из себя эксперта? Не забывай что ты не знаешь даже что такое ДЖЕЙСОН и объект.
>>45459
Ты должен сначала распарсить json. Гугли как это делается. Json должен иметь корректную структуру. Потом просто делаешь что-то уровня json['item1'][4]['hui'] и получаешь свои данные.
Короче, проверь сначала что ты вообще делаешь и корректнуть структуры.
такой вопрос написание нейросетки для написания сайта (интернет магазина,визитки,бложика) насколько реально?
фронт энд уже преставил но чуствую с бекэндом ебнусь
1280x720, 0:01
Заебись, чотко
>фронт энд уже преставил но чуствую с бекэндом ебнусь
Берёшь и пишешь парсер тех. заданий для фронта и энда. Не забудь ещё модуль ObkashlivatelVoprosikov написать.
ну я так и представлял
парсер-бд синонимов слов-привязваем каждый элемент функционала к определенному слову
было бы неплохо базу данных с тех заданиями существующих или готовых сайтов но не думаю такая существует
CSS модули что ли? В них нет такого понятия, как ".class1.class2". Называй селектор одним словом и не выёбывайся.
Селектор вида:
class1 {
&.state1 {}
&.state2 {}
}
Выглядит так в коде:
`className={`${styles.class1}` ${props.something ? styles.state1 : styles.state2}}`
>&.state1
В scss во вложенных стилях можно же не ставить & все равно вложенность будет учтена, или нет?
>В scss во вложенных стилях можно же не ставить & все равно вложенность будет учтена, или нет?
Необязательно, но я его всегда ставлю, так как позволяет взглядом отличить вложенный селектор по потомкам от доп. селекторов на класс.
Спасибо анон
Там VS Code на полэкрана открыт, если че.
Это HR агент, который хочет получить долю от твоей зп.
Он уже все распарсил, долбоеба ты кусок.
Делает он примерно следующее
let a
fetch(url).then(r => a = r.json()).then(r => { a = r; console.log(a) })
console.log(a)
И не понимает (как и ты, который не способен уловить суть типичной проблемы вкатывальщка), почему у него внутри then все работает, а потом внезапно не работает.
Есть отправка формы, после того, как приходит ответ с сервера о том, что значение в форме правильное - форма проверяет ответ, и форма начинает светится зеленым светом.
Компонент весь целиком остается тот же самый, но если после фетча я отправлю полученное с сервера значение еще и в мобХ, при том, что нигде это значение на самой странице еще не используется, вся страница полностью сбрасвает локальные стейты и отображает только то, что записано в глобальном стейте. preventDefault в отправке формы прописан, страница не перезагружается, а только сбрасывает все локальные стейты на изначальное состояние Блядь как же я ненавижу мобх, даже если проблема вообще не в нем это самая пидорестически ебанутая хуета из всего, с чем мне приходилось иметь дело, с абсолютно ублюдской докой и коммьюнити, которая была устаревшей еще в прошлом веке, просто одна громадная куча пидоров человеконенавистников людоедов
Если это не какая-то платиновая классика, то код конечно покажу
Нахуя ты бампаешь дебил? Тут тебе не Б, никто по всей доске с порванной жопой не бегает, все и так сидят тут. Сейчас еще подумают, что это я бампаю тот кто задал вопрос выше и совсем меня обоссут
Все стало гораздо хуже - проблема пропала сама собой, пиздец, надо пробздеться похоже
Пользуются. Все охуели от производительности реакта и теперь пишут обсерверы вручную, лишь бы лишних рендеров не было
Вот это ты мнительный омежкин
Например если я хочу обновить total перемножив два предыдущих значения? Такое допускается вообще? Или лучше внизу в самих компонентах это все обрабатывать и экшеном перезаписывать?
Почему? У меня просто это перемноженное значение потом в разных местах может отображаться, и так было бы удобнее
Так, я кажется нашел то что мне нужно, называется computed
//Почему так нахуй?
Что там отличать то, блядь? Любой JSON, который ты встретишь, в рантайме будет иметь строковый тип. Алгоритм - проверить тип у прилетевшей сущности? Дегенерат, блядь.
Потому что ты дегенерат, блядь. Что по твоему вернет f.apply(), результат которого передается в setTimeout на втором скрине?
>Есть отправка формы, после того, как приходит ответ с сервера о том, что значение в форме правильное - форма проверяет ответ, и форма начинает светится зеленым светом.
Что за наркомания? Ссуть клиентской валидации - проводить проверки инпутов, не требующих запроса с сервера.
Хули ты доебался? Я вообще-то здесь язык учу. И когда мне в офф. доках пишут что принимается "строка кода для выполнения" то я и рассчитываю на то, что моя строка кода внезапно! выполнится.
Так она и выполнилась. Вот только она не строку кода и не функцию вернула.
Кантор кстати не офф. дока.
>Вот только она не строку кода и не функцию вернула.
А что?
>Кантор кстати не офф. дока.
Я про мдн.
Я бы на своем, родном .NET даже не думал - вынес бы репозиторий (если БД, в моем случае это сфитченая дата) и в DI добавлял бы в каждый класс, который в нем нуждается.
Как поступить в ангуляр? Я могу пойти по пути наименьшего сопротивление, все свалить вкучу (там таблица, кнопка, диалоговое окно и т.д.) , но жопа чует, что говнокод лепить не кошерно. Теперь к конкретике:
1. Есть таблица, в которой отражаются данные (там же и изменяются)
2. Есть диалоговое окно, которое отражает результирующие данные.
Какую связь построить между этими двумя компонентами?
В доках и спеке написано про литерали строку. Сущность, которую оператор typeof при вызове обзовет как 'string'. А не строку кода, дегенерат ебаный.
Тебя это ебать не должно.
Совсем тяжёлые вычисления надо пихать в воркер, промисы всего-лишь пропукивают свой код между циклами основного потока.
Делаешь page component, в него инжектишь стор, говоришь стору «загружай данные». Кладёшь на page table component, суёшь данные из стора в table через input. У table есть output «нажали кнопку 1 (на такой то строке)». В page подписываешь на этот output, показываешь модалочку. Модалочку можно показывать через ngif конеш, но у тебя же АМ, инжектишь модал сервис, открываешь модалочку через него. Контент модалочки это естественно ещё один компонент. Модал сервис дот опен ретурнит модал реф, у него есть какой там стрим с результатом, в page на него подписываешься, снова говоришь стору «что то произошло, выполняй эффекты, обновляйся». Коробочка жужжит, белье с тянок само сваливается.
По итогу таблица умеет только красиво показывать данные, модал контент умеет только красиво показывать данные, стор умеет только получать и отправлять данные, страница сама ничего не умеет кроме лэйаута, но его тоже можно вынести в отдельный компонент, зато управляет всем остальным
Классика крудов
Я типо такого делал на реакте, я правда не сильно продвинулся - есть родитель, в него входят разные компоненты. Родитель - хранитель всех "общих" данных. Еще можно было через Redux прокидывать и из него вытягивать.
>ngif
>AM
Это что?
Спасибо за ответ
>По итогу таблица умеет только красиво показывать данные
Но нахуя? Содержание таблицы - локальные для этой таблицы данные, стор в частности и страницу в целом ебать не должно, что в ней лежит и как манипулируется.
Ты передаешь не строку, а результат вырадения функции, который строкрй не является. Пиздуй в начало учебника к опрелелениям типов данных изучать что такое СТРОКА, ЧИСЛО, БУЛ, ОБЪЕКТ
>И где по-твоему оффдока находится?
В спеке.
https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers
Короче нужно js код с пика 1. Вставить в группу theread-links с пика 2. Как правильно прописать путь от js скрипта, а то у меня не линкуется ничего.
да в шаблон нужно вставить элемент через js. в тэг span thread links как в js Корректно путь к нему указать?
В реакте нужно ебстись с поиском элемента в массиве, в vue как бы пожно пушить сплайсить т.к там magic
Там введение промокодов, я же не могу их в клиент зашить
Мля, лол, это ты тот шизик, который назвал несуществующий алгоритм, а потом когда я попросил дать любую ссылку, где он освещается, ты просто ничего не ответил?
Советую принять таблетки, ты наглухо ебанутый шизофреник.
мимо анон, спрашивающий у этого овоща про несуществующий алгоритм и так и не дождавшийся ответа.
Комбо говноеда.
Конечно там одна магия
Допустим, пустая вкладка у меня в хроме ест 40 мегабайт (смотрю память по shift + esc). Если я создаю массив из миллиона строк, память вкладки прыгает к 200 мб. Если я через консоль чищу этот массив, память быстро возвращается к изначальным 40 мегабайтам.
Но если я заполняю массив не миллионом строк, а миллионом элементов (document.createElement('div'), например), при этом даже не вставляя их в DOM, то после чистки массива память с 450мб падает только до 120. То есть референсы почищены, а утечка памяти в 80 мб откуда-то взялась.
Это какой-то сайд-эффект от создания DOM-элементов?
Вообще в хроме вроде есть профайлеры памяти, поищи что-нибудь про них. А нахрена тебе миллион элементов?
У меня просто довольно жирное SPA, и я хочу, чтобы даже через несколько часов вкладка не делалась "тяжёлой".
Используй профайлер, он и покажет куда 80 мб делись.
Понял. Перформулирую позже и повторю пост.
> думал, что знаю программирование более-менее, начал решать задачку на кодварс
> узнаю про какие-то regular expressions и обтекаю
>в программировании невозможно знать всё, поэтому вам нужно спокойно относиться к тому что вы чего-то не знаете
Бьёрн Страуструп. Расслабься и кодь на здоровье, пошли нахуй всех душных мудаков которые тебя расстрелять готовы за то что ты забыл как называется какая-нибудь хуйня. Я вот кодингом для удовольствия занимаюсь, не вкатываюсь, нихуя пишу что хочу. Бегаю по вашим тредам то сайты пилю, то прикладное по, что мне надо то и пилю. Книги читаю, но в основном наискосок и точечно по содержанию то что мне нужно знать именно в данный момент. И ты также делай, рекомендую.
>в программировании невозможно знать всё,
Не ну не знать как регулярки работают этож пиздец. Хотя для совсем уж вкатуна простительно.
Во-первых, что за селектор такой "thread-links" без префикса id или класса? У тебя создан кастомный тег <thread-links>? Что-то сомневаюсь.
Во-вторых, судя по {% шаблонам %}, это не чистый HTML, а какая-нибудь джанга. Если там всё рендерится на сервере, JS тебе для твоей задачи вряд ли нужен.
А вообще, да, сформулируй вопрос получше.
Я к сожалению в вебе никогда не писал даже не понял что ты написал. Спасибо, анон, я подумаю и сформулирую вопрос получше
Это готовый код, не я его писал. Там нужно только отредактировать то что находится в самой левой скобке из-за этого элемент один не там находится где должен
<ng-container [ngSwitch]="true">
<ng-container ngSwitchCase="state === 'checked'">
<img src="/images/checkbox-checked.svg">
</ng-container>
<ng-container ngSwitchDefault>
<img src="/images/checkbox.svg">
</ng-container>
</ng-container>
В левой скобке находится строка-селектор. Почитай про css-селекторы, что это такое.
Навскидку попробуй: $('#thread-links') или $('.thread-links')
Управление с клавиатуры проебано, ControlValueAccesor проебан. Svg через img. Switch(true).
0/10
+ checkbox-checked-ff0000-30_light-red.svg
да я вчера уже пробовал и с решёткой и с точкой не сработало...
ну да стараюсь не отчаиваться анончело
заработало через # но с контейнером div родительским, а в список включиться на удаётся, но спасибо вам аноны, я более менее освоился почитал про css селекторы, думаю дальше сам уже справлюсь.
Выполнение кода никуда не "выпрыгивает", await - это ожидание, и делает он ровно то, что написано - ждет.
>На каждый li вешать модалку с обработчиком? Бред же
Почему бред? Модалку конечно нужно в одном месте держать, но обработчик у каждого элемента будет свой, это абсолютно нормально. То есть что-то вроде:
<li>onClick={() => showImageModal(image)}</li>
Где showImageModal - это какая-то функция, приходящая из родителя.
Если придумаешь причину, по которой готовое тебе не подходит, то пиши свое. Иначе бери готовое.
https://jsfiddle.net/ctygwLnd/1/
Ждет только внутри асинк функции, то что следом после нее сразу начигает выпрлняться, и только потом то что внутрии функции после аваита.
Что если делегировать событие на ul и по клику обрабатывать на какую лишку был клик ?
Окей. А если берут готовое - часто приходится редачить компоненты готовые? Или могут использовать прям предложенные стили из фрейма?
Если это какой-то админский ресурс, то берут готовое решение, если для массового пользователя, то чаще свои компоненты пилят, иногда на основе тех же material, bootstrap и т.д.
Ну проект внутренний, для сотрудников, скажем так. Админка тоже нужна будет, поэтому я думаю не париться и взять какой нить react-admin или аналогичное что то на vue.
>Ждет только внутри асинк функции, то что следом после нее сразу начигает выпрлняться
>внутри асинк функции
>асинк
Значение-то знаешь?
Теье самому насколько приятно на суржике разговаривать?
>часто приходится редачить компоненты готовые?
Примерно между "никогда" и "очень часто". Чтобы точнее сказать, нужно дождаться провидца, который по постам тебе нагадает, насколько часто надо будет.
Самая мякотка начинается когда делаешь на готовом, а потом говорят "хорошо получилось, сычушь, пора бы и кастомный интерфейс запилить"
А что не интерпретатор сразу? Каким хуем я должен создавать свой реакт не зная нихуя о реакте?
Для такого случая как раз делегацию событий придумали, но Абрамов посчитал, что это слишком сложно для макак. Так что будешь костылить колбэк в родительском компоненте, который пропсом передаётся потомку, а тот уже через обработчик событий подставляет нужные аргументы в колбэк.
Пригодится 80% всего что там написано. Не пригодятся только некоторые моменты, например которые описаны в конце первой главы, в разделе разное.
Вот https://ru.code-basics.com/languages/javascript в принципе список той базы, плюс там же можно ее практиковать. Рякт учить только базы(2 главы кантора - должен знать основы(1 глава), и ДОМ события(2я глава)). После прыгаешь на рякт, когда на рякте напишешь апишку, уже можно щупать ТС и перепиливать апи на тс.
Юзабельны. Axios и redux-thunk это не необходимая часть редакса. Redux-thunk это типа такой middleware прослойка позволяющая использовать axios с async await в экшенах.
асин хронно
Стаж в JS десять лет, к слову.
Зачем?
Нет
Пиздос я 2 дня не могу понять что за хуйня происходит и только сейчас до меня дошло. У меня некоторые компоненты лежат внутри одного и того же файла. Но я сделал тупейшую глупость и держал инициализацию дочерних компонентов внутри родительских. И разумеется когда у родителя обновлялся стейт, сбрасывались стейты и дочерних, потому что они не просто обновлялись, а сам компонент пересоздавался заново. Какая беспросветная тупость с моей стороны. Но как я рад что смог найти причину проблемы
Расист угнетатель насильник. Все с тобой понятно. Мы вам не перезвоним
Неужели не понятно, что пендосы сейчас находятся в положении послемайданных хохлов, которые вынуждены клясться в лояльности Правому сектору/BLM просто чтобы не быть уничтоженными.
Посмотри на их команду. Видишь там хоть одного негра? И я не вижу. Это же явное сборище трампистов-ватников, морды их просят люстрационного сапога.
https://rxjs-dev.firebaseapp.com/team?group=Core Team
>клясться в лояльности Правому сектору
Хуя промытая жертва телевизора. Кроме чустников правого сектора хоть кто-то вообще знает в Украине о его существовании?
>Хуя промытая жертва телевизора.
Я перебрался в РФ в 2019-м году, до этого почти десять лет жил под Киевом. Правый сектор после майдана использовался именно для запугивания пересичных хохлов, на Донбассе они почти не воевали.
p.s. Но суть не в них, конечно. Суть в том, что сейчас в США есть "движения", которым нельзя сопротивляться никак. БЛМщиков с нелицеприятной стороны даже обсуждать на кухне довольно опасно.
Function fff(dan As Range) As Variant
Dim i
Dim pri
For i = 1 To Len(dan)
If Mid(dan, i, 1) Like "[0-9]" Then pri = Mid(dan, i, 1) Else pri = " "
fff = fff & pri
Next
fff = Application.Trim(fff)
fff = Application.Substitute(fff, " ", "+")
fff = Evaluate(fff)
End Function
> JS для GoggleSheets, суммирующий числа в строке, игнорируя буквы
Всё что могу тебе бесплатно сделать.
> 'sdf23f123d23das'.match(/\d/g).reduce((a, e) => +a + +e)
ты напиши это в псевдокоде лучше, тут мало кто бейсик знает или что это такое
неплохо, кстати
Спасибо! А что с этим делать?
А где тестовые задания на миддла достать, кто знает может? Хочу попрактиковаться и поднять ЧСВ прежде чем претендовать на 250+к в ДС. Сам миддл в одной известной галере, с impostor syndrome, потому что пишу копируя код из старых проектов или стэковерфлоу.
>просидел неделю - и даже не понял в точности, ЧТО я должен повторить на реакте
Опиши всю свою боль тех.лиду, пусть ставит задачи точнее. Это же очевидно, не?
>На работе дают такие задания, от которых хочется просто встать и уйти
-регулярно пересматриваешь резюме
-регулярно откликаешься на интересные предложения, может что и выгорит
Ключевое слово - РЕГУЛЯРНО.
>не думаю, что у тебя хватит денег для оплаты хотя бы 10 минут моего времени
Ты уже их потратил, отвечая на этот пост.
>Мог бы конечно придумать что то похожее, сгенерировать набор данных и написать рабочий код
Да, мог бы реально блеснуть знаниями, вместо маняфантазий о собственной охуенности, но, сам видишь, на что ты реально потратил 10 минут.
>А где тестовые задания на миддла достать
хуй знает, интернет еще не изобрели, поспрашивай у знакомых мож кто нить переписывал на листочек с собесов
Просто реально такое бывает когда сидишь долго на одном месте и привык действовать по определенным шаблонам. Что нам кажется очевидным, для других порой откровение. Я проходил через такое.
function solution(str, ending){
let regExp = new RegExp(ending + '$');
return regExp.test(str);
}
solution('abcde', 'cde') //true
solution('abcde', 'abc') //false
> SyntaxError: Invalid regular expression: /:-($/: Unterminated group
что ему надо блять
1) Фаулер, дядя Боб, Эванс и др
2) Тестиравование
3) Девопус, но тилько для самообслуживания
>поспрашивай у знакомых
Вот я и спрашиваю, здесь же все мои друзья.
>мож кто нить переписывал на листочек с собесов
Скиньте, если удалось сфоткать.
Т.е. ты тоже долбоёб. Вот вы и встретились.
=SUBSTITUTE(D24 ; 2,4 ; 5)
Хочу цифры 2 и 4 заменить на 5
const oldValue = element.value;
const newValue = 5;
if (oldValue === 2) {
element.value = newValue
}
if (oldValue === 4) {
element.value = newValue
}
Спасибо, брат. Но я думал, как перечисление без скрипта впихнуть. Пойду экселевиков искать в /s/ наверно.
Как это сделать своим скриптом?
Например, скрипт рисует всплывающее окно с textarea, куда я вставляю блок текста, нажимаю кнопку, скрипт парсит текст, заполняет нужные поля поля оригинальной формы, и отправляет её.
Как организовать такое?
Сам скрипт я написать могу, естественно.
А можно ли такое делать с помощью какого-либо веб-клиента, чтобы полностью автоматизировать заполнение? Капчи там нет.
Нет. Устаешь, разумеется. Но от усталости раздражения и неприязни к области и тем более к изучению не возникает. Если теья что-то провоцирует на эмоцию триггерющую "дропнуть обучение" это звоночек.
Любознательность и пытливость не может исчезать в областях, к которым ты лежишь, а не силишься.
Поспать.
Погулять на свежем воздухе.
Отвлечься на что-то другое.
>>48400
Вопрос снимается.
Там реально пиздецовый html, вместо кнопок - таблицы в дивах (лол), и прочая жесть. Это что-то типа Java Server Faces или какая-то подобная лютая хуйня, с кучей скрытых зависимостей и неявных скриптовых привязок. Т.е. разбираться в этой хуите слишком долго и дорого.
>это звоночек
Ай, не пизди, да.
Это именно нормальная реакция на усталость.
Таких реакций не возникает только на любимую девушку, и то временно.
Ты сам подтвердил мои слова,подчеркуюнув разницу между ЛЮБИМЫМ и НЕ ЛЮБИМЫМ делом. О чем я писал.
Если ты устаешь от дела так, что оно тетя раздралает, значит ты это дело не любишь.
Ты либо троллишь, либо дурачок.
Какой вариант тебе нравится больше?
Мне не нравится ни один, поэтому, писать тебе я больше не буду.
Пиздуй ковырять легаси на жиквери, а если от этого у тебя не горят глаза, то ты просто не настоящий программист.
Хочу написать расширение под хром, которым можно будет скрывать комментарии от всяких долбаёбов на ютубе. Выборочно. Что бы нажал на кнопку напротив коммента и в других видео эти дегенераты потом не отсвечивали ни под какими видео. Из всего, что я нашёл был только плагин вообще отрубающий комментарии под видео полностью, без возможности включить их обратно, только если удалить плагин полностью.
Но в кодинге я полный ноль, лет 10 пытался осилить, но было скучно. Посоветуйте с чего начать, плиз.
Такие проекты - редкость.
В шапке ссылка на гайд. Я и сам думаю начать вкатываться в практику с расширений
>я чё должен наизусть все методы знать?
1. С опытом да, ты будешь знать большинство методов, по крайней мере факт что они есть.
2. Ты должен понимать, что нужно сначала посмотреть нет ли случайно такого метода уже в стандартной библиотеке/ramda.js, а потом уже хуярить свои костыли. На это уйдет всего пара минут.
А что удивительного? На ДЖС куча модного, трендового, интересного.
При желании, и джиквери легаси можно превратить в интересный таск по организации кода и логики. Ты ведь понимаешь, что проблема не в самом джиквери, библиотечка то норм, проблема в индусском подходе к программированию.
>нужно сначала посмотреть нет ли случайно такого метода уже в стандартной библиотеке
Для такого и существуют все эти оверфловы и чатики, если конечно ты не предлагаешь ПРОСТ взять и всю доку выучить нахуй целиком
Да все эти строчки регулярно крутятся и всё помнится, какие оверфловы. Если ты такой склерозник, то ставишь точку после строки и смотришь варианты иде какие есть подходящие по смыслу.
Ну я про это и говорю, вопрос чела про string ending это первая ссылка в гугле, а он костыли уже начал писать.
Тут даже гуглить не надо, достаточно в редакторе написать строчку, поставить точку и увидеть все методы которые можно вызвать, пикрелейтед.
Это зависит от того, пихает ли гугол айдишники, привязанные к аккаунтам, в посты или нет. Скорее всего нет и ты только сможешь скрывать по постам, типа как на дваче. Можно конечно парсить имена и скрывать их, или там по файлу в аватарке скрывать, или по определённым ключевым словам, но в целом это не будет работать 100%.
>Но в кодинге я полный ноль, лет 10 пытался осилить, но было скучно. Посоветуйте с чего начать, плиз.
В шапке на mdn есть гайд для вкатышей, там как раз разжёвывают html/css/js, как раз то что тебе нужно для реализации кнопки скрывания.
Окна браузера в общем. То, что чекается к примеру
window.matchMedia("(max-width: 800)").matches
Просто не знаю, это нормально такое к примеру раздавать через стейт менеджер? Куда это можно засунуть, прямо в стор?
Если честно у меня на кодварсе тема такая с регулярными выражениями, нахождение подстрок, поэтому надо было через велосипед делать. От того, что я тупа метод найду, больше понимать не стану, а цель именно такая
Есть табличка:
| плата за час | <input type=text> объем | 1 день | неделя |
сообственно нужно на jquery по вводу в input брать значение из предыдущего <td> умножать на введенную в инпут цифру и выводить в следующий <td>
Если кто поможет написать за спасибо - с меня спасибо.
Никто не будет тебе ничего писать задаром. Алсо подобную хуйню можно и самому разобраться за вечер как сделатью
Блядь я в питон тредах народу ебаные сотни раз писал задаром и не пиздел, а куда не ткнусь - что к вам-жс-пидорасам, что к свифтоебам - так элементарную дрисню на 3 строчки все ленятся помочь написать
Хуею просто. А сколько б ты за эту хуйню попросил? 0.2 биткоинов хватит?
и да, ясен хуй что я не зная жса вообще, за вечер и сам напишу, но сука если тебе вломы подсказать околопсевдокодом как эту хуйню по-человечески высрать
input.onkeypress {
$current_td = selector(:nth-child())
price = selector(:nth-child(-1).value()
1day = selector(:nth-child(+1)).value(price*24)
}
то ну пиздец ты конь конечно
Чел тут ценятся вопросы про теорию, общие вопросы.
Нигде тебе не будут отвечать кучей строк кода, что бы решить твою проблемку, тут у каждого второго куча таких личных вопросов. Напомню - у профессионалов ценится самостоятельное умение находить ответ на вопрос, гуглить.
Будь сильнее и умнее.
Достаточно уникально.
Базовые классы выглядели бы так: https://codepen.io/Jumpy_Bunny/pen/XWNeJLv
Как из расширения получить доступ к дому - это уже надо доку к апи расширений читать.
Но условно секция с камментами - один родительский элемент с кучей дочерних элементов. Цель расширения - прикрепить кнопку "Скрыть" к каждому комменту. В зависимости от реализации скорее всего придётся рекурсивно пробегаться по элементам, чтобы кнопки налепить, так как на трубе есть вложенность.
При клике по кнопке "Скрыть" должно появлятся поле для ввода текста с указанием причины и при подтверждении ссылка на канал, тело поста и причина скармливаются в инстанс BlockedUser, который идёт аргументом в UserBlockController.addUser().
Самая ёбля будет со сравнением списка комментариев со встроенным списком. Так как труба грузит их клиентскоим скриптом, как таковых "стадий" в загрузке нет, так что скорее все придётся пердолиться с Proxy/таймерами/листенерами, иначе работа скрипта будет выглядеть как:
- Комментарии загружаются.
- Потом некоторые из них пропадают.
Плюс ещё при прогрузке новых комментариев тоже нужно запускать проверку.
Под функциями я подразумеваю функции в классическом понимании, а не "методы" с implicit переданным this. Подноготную JS и сахарок я знаю.
Так в классическом понимании функций в жс нет, только объекты. Больше ничего.
Есть еще примитивы, но их можно тоже рассматривать в качестве синглтон объектов, потому как они боксятся, а сделаны разумеется для производительности. (тем более что сейчас ничего не мешает у примитивных добавить в цепочку прототипов прокси объект, отлавливащий сообщения, типа присваивания, и реалиховать поведение прототипов как полноценных объектов, но это ни к чему. проще воспринимать их как синглтоны. когда надо, любой примитив можно обернуть в полноценный независимый объект).
Так. Короче только объекты.
Все объекты делятся на callable и non-callable. Callable это функции, в понимании большинства. Но по факту это все те же объекты, со всеми свойствами что и у других.
Все объекты могут принимать всего несколько типов сообщений - get, set и call. При чем call может принимать только callable объект. при попытке послать call сообщение не-callable объекту будет исключение.
Сообщение get содержит один параметр, сообщение set два. Сообщение call параметром содержит кортеж аргументов, а так контекст this.
Если в объекте (а так же в цепочке прототипов) не назначены слушатели для get и set с определенными параметрами, ищутся слоты с такими именами в объекте и по цепочке. Если находится возвращается то, что в них лежит. Если в них лежит callable объект и ему посылают сообщние call сразу как получили его из слота, то у него будет перегружен контекст (this) на объект из чьего слота его получили. Если только этот объект не был сконструирован стрелочным синтаксисом, иначе контекст перегрузить нельзя. Если после получение callable объекта из слота его сразу не вызвать, а например положить ссылку на него в переменную, то контекст будет сброшен на тот, который был установлен у него в момент его создания (и это не обязательно будет тот же объект из чьего слота его получили).
У callable объектов есть scope (область видимости) и контекст (this) в момент посылки им сообщения call (вызова). scope средствами языка перегрузить нельзя, но некоторые окружения позволяют (например в ноде есть модеуль vm), this перегружается у callable объектов сконструированных не-стрелочным синтаксисом
Классов нет. Есть конструкторы. Любой конструктор принимает новый созданный объект, которому выставлен определенный прототип (другой объект). Оператор instanceof (someObject instanceof SomeClassName) проверяет лишь есть ли в цепочке прототипов у someObject объект который лежит у SomeClassConstructor в слоте с именем prototype. На сам конструктор ему поебать. Чтобы сменить класс, достаточно сменить цепочку прототипов. Даже если объект был сконструированным определенным конструктором.
Так же у объектов есть параметр ограничения доступа, контролирующие его расширяемость или изменяемость (sealed, extensible, frozen). У слотов объекта есть параметры configurable, enumerable, writable. Параметры слотов объекта не влияют на объекты, что в них лежат. Они лишь контролируют доступ к самим слотам.
Все. Никаких классов. Никаких интерфейсов. Как отдельных сущностей. По факту все есть объект и все строит из них.
наследование реализуется выстраиванием цепочки прототипов. Инкапсуляция только на уровне scope'в (читай замыканий).
В остальном все меняется и все динамично, если только специально все не зафризить в момент конструирования. Но обычно этим никто не заморачивается по причине оверхеда и бессмысленности. Разве только фанатики по иммутабельности, н это все из разряда те, кому надо чтобы им по рукам бил компилятор\рантайм\дядя петя. Все "привычные" понятия тянуться в язык для еще более простого вкатывания тех, кто приходит из других языков. Так уж сложилось, что есть куча литературы по привычному, статически классовому ООП, но очень мало по мессадж-пассинг\прототайп-базед\мета-программинг. Все эти притянутые понятия выливают в синтаксический сахар, который не делает ничего полезного, а даже наоборот, еще больше вносит путаницы и от того непонимамания многих вещей в языке. При этом часто этот синтаксический сахар дэже урезан и вспомнинают об этом лишь после (как например проебались с полями в конструкции class и тянут ее теперь только в proposol'ах будущих версий).
JS истинно объектный язык. В современный язык притащили много вкусных вещей для метапрограммирования. Нову примитивную сущность Symbol, и Proxy-объекты. С помощью которых можно еще больше и сильнее перегружать и менять поведение в динамике.
Другое дело, что почти никто не умеет этим пользоваться и не понимает, что такое объектное программирование на самом деле.
Им нужно не объектное, а статически типизированное. А какие именно структуры будут скрываться за этими типами, не собо важно. Важно что это просто структуры и функции, строго привязанные к ним, или иногда менее строго. То, что в Java\C++ это больше структурное программирование, нежели объектное. Объектное программирование не может существовать без динамической среды. Это противоречит самому понятию объекта. А динамическое программирование это слишком сложна и непанятна. И как бы не старались с пеной у рта фанатики кричать про низкий порог входа - низкий он именно что для входа, а не для всего остального. Модификация программ в рантайме всегда было уделом креативно мыслящих людей. Для большинства это слишком сложный уровень высокой абстракции.
Так в классическом понимании функций в жс нет, только объекты. Больше ничего.
Есть еще примитивы, но их можно тоже рассматривать в качестве синглтон объектов, потому как они боксятся, а сделаны разумеется для производительности. (тем более что сейчас ничего не мешает у примитивных добавить в цепочку прототипов прокси объект, отлавливащий сообщения, типа присваивания, и реалиховать поведение прототипов как полноценных объектов, но это ни к чему. проще воспринимать их как синглтоны. когда надо, любой примитив можно обернуть в полноценный независимый объект).
Так. Короче только объекты.
Все объекты делятся на callable и non-callable. Callable это функции, в понимании большинства. Но по факту это все те же объекты, со всеми свойствами что и у других.
Все объекты могут принимать всего несколько типов сообщений - get, set и call. При чем call может принимать только callable объект. при попытке послать call сообщение не-callable объекту будет исключение.
Сообщение get содержит один параметр, сообщение set два. Сообщение call параметром содержит кортеж аргументов, а так контекст this.
Если в объекте (а так же в цепочке прототипов) не назначены слушатели для get и set с определенными параметрами, ищутся слоты с такими именами в объекте и по цепочке. Если находится возвращается то, что в них лежит. Если в них лежит callable объект и ему посылают сообщние call сразу как получили его из слота, то у него будет перегружен контекст (this) на объект из чьего слота его получили. Если только этот объект не был сконструирован стрелочным синтаксисом, иначе контекст перегрузить нельзя. Если после получение callable объекта из слота его сразу не вызвать, а например положить ссылку на него в переменную, то контекст будет сброшен на тот, который был установлен у него в момент его создания (и это не обязательно будет тот же объект из чьего слота его получили).
У callable объектов есть scope (область видимости) и контекст (this) в момент посылки им сообщения call (вызова). scope средствами языка перегрузить нельзя, но некоторые окружения позволяют (например в ноде есть модеуль vm), this перегружается у callable объектов сконструированных не-стрелочным синтаксисом
Классов нет. Есть конструкторы. Любой конструктор принимает новый созданный объект, которому выставлен определенный прототип (другой объект). Оператор instanceof (someObject instanceof SomeClassName) проверяет лишь есть ли в цепочке прототипов у someObject объект который лежит у SomeClassConstructor в слоте с именем prototype. На сам конструктор ему поебать. Чтобы сменить класс, достаточно сменить цепочку прототипов. Даже если объект был сконструированным определенным конструктором.
Так же у объектов есть параметр ограничения доступа, контролирующие его расширяемость или изменяемость (sealed, extensible, frozen). У слотов объекта есть параметры configurable, enumerable, writable. Параметры слотов объекта не влияют на объекты, что в них лежат. Они лишь контролируют доступ к самим слотам.
Все. Никаких классов. Никаких интерфейсов. Как отдельных сущностей. По факту все есть объект и все строит из них.
наследование реализуется выстраиванием цепочки прототипов. Инкапсуляция только на уровне scope'в (читай замыканий).
В остальном все меняется и все динамично, если только специально все не зафризить в момент конструирования. Но обычно этим никто не заморачивается по причине оверхеда и бессмысленности. Разве только фанатики по иммутабельности, н это все из разряда те, кому надо чтобы им по рукам бил компилятор\рантайм\дядя петя. Все "привычные" понятия тянуться в язык для еще более простого вкатывания тех, кто приходит из других языков. Так уж сложилось, что есть куча литературы по привычному, статически классовому ООП, но очень мало по мессадж-пассинг\прототайп-базед\мета-программинг. Все эти притянутые понятия выливают в синтаксический сахар, который не делает ничего полезного, а даже наоборот, еще больше вносит путаницы и от того непонимамания многих вещей в языке. При этом часто этот синтаксический сахар дэже урезан и вспомнинают об этом лишь после (как например проебались с полями в конструкции class и тянут ее теперь только в proposol'ах будущих версий).
JS истинно объектный язык. В современный язык притащили много вкусных вещей для метапрограммирования. Нову примитивную сущность Symbol, и Proxy-объекты. С помощью которых можно еще больше и сильнее перегружать и менять поведение в динамике.
Другое дело, что почти никто не умеет этим пользоваться и не понимает, что такое объектное программирование на самом деле.
Им нужно не объектное, а статически типизированное. А какие именно структуры будут скрываться за этими типами, не собо важно. Важно что это просто структуры и функции, строго привязанные к ним, или иногда менее строго. То, что в Java\C++ это больше структурное программирование, нежели объектное. Объектное программирование не может существовать без динамической среды. Это противоречит самому понятию объекта. А динамическое программирование это слишком сложна и непанятна. И как бы не старались с пеной у рта фанатики кричать про низкий порог входа - низкий он именно что для входа, а не для всего остального. Модификация программ в рантайме всегда было уделом креативно мыслящих людей. Для большинства это слишком сложный уровень высокой абстракции.
JS такой язык, что чем меньше фич ты из него используешь, тем поддерживаемый код получается. Главная сила языка это функции (можешь называть их callable объектами) и возможность использовать их как значения, что вкупе с замыканиями позволяет писать очень гибкий код всего лишь несколькими средствами. Объекты должны рассматриваться только как хешы "ключ-значение", без каких-либо методов с this'ами внутри. Symbol, Proxy и другие фичи это излишние лоулвльные абстракции.
Писать продакшн код в подобном "динамическом" стиле с переопределением прототипов никто не даст, потому что это неподдерживаемая хуйня. Абстрагирование от лоулвла языка как раз для того и делается, чтобы код был более надежным и легкочитаемым. Кроме того, предметная область JS просто слишком высокоуровнева, нет смысла дрочить метапрограмминг для обработки клика по кнопке или редьюса стейта.
Но с пастой можно согласиться в том, что сейчас, к сожалению, зумерам нужно чтобы было "панятна", но только не в плане "просто выражать комплексные абстракции", а в плане буквально простоты написания кода, им нужны простые абстракции.
Вон редакс уже "сложный", зачем понимать разделение на экшны и редьюсеры, если можно просто в мувисерчере переменные присвоить как в МобХ, и норм.
>вкупе с замыканиями
С захватом переменных хотел сказать?
>нет смысла дрочить метапрограмминг для обработки клика по кнопке
Конкретно в ситуации с ютубокомментами скорее всего придётся дрочиться с метапрограммированием, так как желательно неугодные посты скрывать до добавления в дом, ну или хотя бы до рендера. И кнопки соответственно не добавлять в неугодные посты.
>>48544
В общем тут дело в чем, реакт ведь не будет сам по себе обновлять компонент при ресайзе, что-то должно вызывать ререндер. В моем случае я вешаю эвентлистенер, и когда происходит ресайз, вызывается функция, которая чекает текущее разрешение, и соответственно от этого обновляет стейт и в компоненте происходят условные рендеры. Так вот, дело в том, что такой эвентлистенер вешается сейчас отдельно в каждом компоненте. Можно ли к примеру такой эвентлистенер создать где-то для всех компонентов сразу? Можно ли создать эвентлистенер в сторе и там же держать какую-то переменную, которая говорит, какой шириниы сейчас вьюпорт, типа 1024-1980, и все компоненты будут просто брать только это значение из одного места. Или это может како-то плохо работать?
Я тестировал, даже issue им писал. По сравнению с тупой сменой класса в sc идет интерполяция здорового шаблона (многократная если активно используешь хелпер css), вычисление какие классы надо добавить и удалить, генерация стилей с префиксами и вставка в style. Пока я не оптимизировал интерполяцию у меня SSR занимал 200 мс где-то, что, конечно, вообще ни в какие ворота.
Планирую написать несколько пет проектов потренировать бэкэнд
Джабоскрипт год назад пробовал, реакт пробовал, верстку изучил, вебпак чуть чуть трогал.. Но потом забил на это дело а несколько месяцев назад решил вкатиться в джабу серьезно.
Писать фронтэнд сейчас лень (может потом ближе к отправке резюме подниму тему и освежу память), я сейчас хочу написать несколько пет проекктов по джабе и около нее (может даже без гитхаба) чтоб потренировать спринг секьюрити, спринг дату и прочее говно. Можно конечно использовать постман, но мне хочется с UI. Так вот, вопрос, где бы мне надыбать готового фронтенда с версткой?
С нормальной версткой - хорошо.
С готовыми реакт - компонентами еще лучше, асинхронные запросы, стейт и прочее говно.
Есть ли какие-то ресурсы подобные на уме? Помню давным давно когда только вкатывался подписался на хтмл академи (фу, знаю), у них там рассылочка была с макетами фотошопными. Но мне макеты нахуй не нужны. Мне бы верстку хотя бы.
двощую
такую я и сам напишу. мне бы что-то типа интернет магазина или бложика.
Хочу опробывать спринг дату, спринг бут, спринг секьюрити, монго, тдд и прочее говно в бою
> вставка в style
В SC используется CSSOM. Но вообще, да, SC на перфомит, поэтому мы переехали на линарию.
Низкий поклон, анон, красиво всё сказал. Редко встретишь таких коллег, для многих прокси это некая магия.
Где пастебин в шапке ,суки
Но что меня вымораживает - это именно постоянная связка объектов с объектами DOM. Особенно это геморойно при AJAXе на клиент, и всякие анимации. Создание новых элементов и вставка их в страницу. Выглядит это все косорыло. Хотя я стараюсь по максимуму не тыкаться в DOM, у каждого класса своя привязка к "элементам странички". И из других объектам я к этим "элементам страничики" стараюсь обращаться с помощью объектов которые ими управляют.
Хотелось бы посмотреть JS код хорошо сделанной какой нибудь сложной формы, где много логики, анимаций и AJAX. Что бы пример был , что бы я со своим поделием сравнил.
>Создание новых элементов и вставка их в страницу. Выглядит это все косорыло.
Думаешь просто так всякие рякты взлетели, которые по сути ещё и шаблонизацию в клиентский код занесли?
>И из других объектам я к этим "элементам страничики" стараюсь обращаться с помощью объектов которые ими управляют.
То есть ты добавляешь прокладку из объектов к объектам? ООП головного мозга как есть.
>Хотелось бы посмотреть JS код хорошо сделанной какой нибудь сложной формы, где много логики, анимаций и AJAX. Что бы пример был , что бы я со своим поделием сравнил.
Какая нахуй анимация в жс, тем более в формах? ЖС максимум что может сделать - переключить классы в элементе в зависимости от событий, а свистелки и перделки задаются стилями.
сверстал, как боженька
> ЖС максимум что может сделать - переключить классы в элементе в зависимости от событий, а свистелки и перделки задаются стилями.
Жс может в CSSOM и Houdini API.
А в чем смысл асинк эвэйта в экшенах? Если у меня триггер редакса происходит в кастомной асинк функции, после получения результата от сервера? Или для того что бы не писать эту кастомную функцию?
>То есть ты добавляешь прокладку из объектов к объектам? ООП головного мозга как есть.
Проиграл с дурачины, у которого очевидный, правильный и очень удобный паттерн "я не дергаю элементы на страницы напрямую каждый раз, а прокладываю между ними и остальным кодом стабильный интерфейс, скрывающий детали имплементации" превратился в "ООП головного мозга". Причем триггер произошел именно на слово "объекты", если бы там была "прокладка из функций", то ты бы наверное от счастья описялся, хотя никакой реальной разницы между двумя реализациями не было бы, интерфейс есть интерфейс.
мимо
а отбой там в условии оказывается написано что добавили таблицу с морзе
что тебе мешает взять любую популярную реакт/вью либу, сделать пару-тройку форм для твоих кейсов, и кидать условным аксиосом запросы?
>если я полностью заменю этот массив новым это не гуд тк все компоненты которые пользуются обьектами из этого массива перерендерятся
В памяти перерендерятся, на экране - нет, если не поменялись. Ничего страшного нет, сто твоих перередеренных туду-листов на производительность не повлияют никак.
>Т.е нужно искать нужный элемент в миссиве и мутировать его?
Реакт о твоем мутировании нихуя не узнает и ничего поменять не сможет.
Просто бери готовый фреймворк(next какой-нибудь) и иди по гайдам. Без опыта на пустом реакте ты не напишешь ровным счетом нихуя, кроме совсем простейшей хуйни, которую в сто раз легче было бы сделать через обычные серверные html-шаблоны любого бэкенд-фреймворка(джанго, рельсы, ларавель) с минимум жопоскрипта.
Как показывает рынок - реакт одно из самых удачных решений для подобного. Я лучше посижу подольше но сделаю один раз хорошо ибо если потом всё выгорит то тратить деньги и переписывать всё на что-то более существенное будет глупо.
>сделаю один раз хорошо
Это не про реакт, у которого устоявшейся инфраструктуры нет от слова совсем, только монструозное bloatware уровня material-ui или react-select, где список одних параметров компонента занимает половину файла, либо низкоуровневые "собирай и ебись сам" конструкторы. Первый и не только первый самостоятельно написанный проект на реакте ты 100% выкинешь и будешь переписывать с нуля.
>"я не дергаю элементы на страницы напрямую каждый раз
Чтобы поменять отображаемое значение на странице, тебе в любом случае придётся дёргать дом, хоть ты там десятью декораторами обмажься. А проводить вычисления за пределами дома ты и без прокладок можешь.
>а прокладываю между ними и остальным кодом стабильный интерфейс,
Не поверишь, но с домом ты уже общаешься через интерфейсы. Или интерфейсы не те?
>скрывающий детали имплементации"
Что ты там собрался скрывать на клиентской стороне, дебил? Любой идиот сможет посмотреть сырцы твоего говнокода, скрыватель хуев.
>превратился в "ООП головного мозга"
Так это и есть ООП головного мозга, так как ты тащишь свои привычки из другого языка.
>если бы там была "прокладка из функций"
Вот именно, что её бы не было.
Какое отношение ui-элементы имеют к инфраструктуре? Все приличные ребят один хуй свои ui-киты пилят.
>Какие у него пререквизиты
https://kentcdodds.com/blog/javascript-to-know-for-react
>Есть ли там что-то, что помогает или упрощает последнюю?
Нет, Реакт не делает абсолютно ничего чтобы упростить верстку, он исключительно про иерархию UI и передачу данных. Более того — либа для работы с DOM отделена от собсна Реакта.
Пчел, ты даже не знаешь, что такое "скрывать детали имплементации" и думаешь, что это означает "прятать сурс-код от конечного пользователя", нахуя вообще в дикуссию влез? Вся суть ФП-шизиков, год поработал, а мнение имеет.
Почему плох? Реакт заебись, проблема именно в инфраструктуре, а точнее в ее отсутствии, из-за чего перед вкатывальщиком стоит альтернатива либо хуярить свои велосипеды, которые потом за три жизни не разгребешь, либо тащить в проект 60кб минифированного кода для того чтобы добавить инпут с дропдауном.
>>49428
>какое отношение ui-элементы имеют к разработке UI
Ну я даже не знаю...
>и мне нужно при нажатии на элемент сменить какое-либо значение в объекте с данными
Во вью достаточно повешать @click="handle(item)"
>>47052
Какая магия? У них в доках везде написано что на все объекты рекурсивно вешается реактивность, твой массив становится реактивным, и каждый объект в нём становится реактивным, и если в объекте есть еще объекты то и они становятся реактивными.
Он не плох. Просто сильно хитровыебанный местами. Нужно или привыкнуть или поискать что-то более понятное для тебя лично.
У реакта наоборот самая развитая инфраструктура. Ты скорее всего диванный, писавший на вью и ангуляре, но имеющий мнение о реакте.
>тащить в проект 60кб минифированного кода для того чтобы добавить инпут с дропдауном
Ну точно диванный.
redux
Нет, это наоборот вершина развития инструментов стилизации на данный момент. Писать на sass — это возврат в 2014 год.
Нет это не вершина. Вершина развития - это вставлять SQL код в render функцию!
>У реакта наоборот самая развитая инфраструктура
У реакта(и у жса в целом) нет даже элементарных вещей, нужных 99% приложений, уровня неймд роутинга("бест практика" - это хуярить сырые строки в 10 местах, <Link to={`/users/${id}`}/>) или базового API клиента с тестовым интерфейсом(см. сосущий даже у фетча аксиос с раздутым конфигом и ебанутой системой интерсепторов, выкидывающий по умолчанию не-200 ответы вместе с сырыми эксепшенами или совсем охуевшие монстры вроде react-query, мешающие в одну кучу объявление эндпоинтов, получение данных, кеширование данных, рендеринг данных, и прибитые гвоздями к реактовскому API). А это самый низ приложения, когда идешь выше, то там вообще пиздец, что ни возьми: от форм до кастомных компонентов, все будет громоздким, неповоротливым, некомбинируемым и сделанным по принципу "захуярим сюда весь функционал, который в голову придет, и просто добавим 100 опций в конфиг".
Вершина развития стилизации - это как раз sass, у которого новая система модулей дает в рот даже самому жсу шел 2021 год, а жсеры до сих пор без плагина бабеля не могли установить рут сурса приложения и пользовались релативными импортами, кому расскажи - не поверят, а переменные, миксины и возможность без заебов складывать пиксели с хуикселями вообще ебут любые жсокостыли не разгибая уже сколько лет. Выглядит он так же в сто раз лучше, обратно совместим с сырым кссом, в консоли браузера ты сразу видишь ровно то же самое, что написал в коде, а не пропущенное через мясорубку жса месиво, так еще и работает быстрее, что при компиляции, что в браузере.
Двачую, во вью можно писать sass под компонентами (из коробки scoped и css modules) и дальше крутишь как хочешь
мидл делает хорошо там, где сказали, синьор знает, где надо сделать хорошо
В styled-components есть всё то же, но при этом в разработке они намного удобнее. Импорты давно есть в ts, переменные и миксины удобнее в styled-components, выглядят styled-components в сто раз лучше, и в консоли там всё нормально выглядит. Работает sass быстрее насколько, на тысячную секунды? Если взять linaria, то sass ни насколько не быстрее.
>>49549
В реакте то же самое со стайледами.
Как же заебали пиздатые окна про куки, которые невозможно закрыть, блядь!
Кто эту хуйню выдумал? Нахуй вообще нужны эти окна ебучие, на пол экрана?
И почему их закрыть, блядь, нельзя, или свернуть, а надо обязательно принять эти грёбанные куки?
Почему эти div'ы пиздатые, приходится вырезать вручную, из HTML-кода страниц?
Не хочу я ебучие куки ваши, пошли нахуй,
я хочу сайт посетить и контент прочитать, за которым пришёл из поиска!!!
Но нет, сукаблядь, вылазит окно на пол экрана. Прими ебучую куку!
Я уже заебался Ctrl+Shift+Delete нажимать и вычищать нахуй это говно из браузера.
Срут куками мне в хранилище локальное, а потом всё виснет,
и синий экран смерти при гуглеже вылазит, в самый неподходящий момент.
Конечно, блядь, гиг оперативки жрут куки, нахуй мне в броузере не упавшие.
Пошли нахуй со своими куками, и окна уберите эти уёбищные, заебали блядь.
Веб-макаки мамкой с папкой, до конца недопиленные.
Копипастят хуйню, а потом на сайты лепят, чтобы поскорей,
и такие уёбищные страницы получаются,
что хоть сиди и адблоком, вручню, всё это говно вырезай...
Можешь съебать в китайский интернет тогда, там ЕвроСоюз (Германия) практически не имеет влияния, и соответственно никакого GDPR. Ещё каких-то макак обвиняет, лол.
>Можешь съебать в китайский интернет тогда, там ЕвроСоюз (Германия) практически не имеет влияния
Я лучше в LAN буду сидеть, здесь на весь ЕвроСоюз мы тоже срали все, с высокой колокольни. У нас тут ваще, отдельная сеть, независимая, бгггг.
Тогда во вью ситуация ещё хуже, а в ангуляре такие же громоздкие как в реакте модули, просто их не надо отдельно устанавливать.
Анус пускай свой положат. LAN можно строить даже поверх Интернета. Гугли LAN через VPN.
>У реакта(и у жса в целом) нет даже элементарных вещей
Так есть же подключаемые библиотеки, че не так?
Вместо хелпера css склеивал строки сам
Да, github. Смотришь в сорцы лоудеша или рамды и берешь оттуда. Или просто ставишь эти либы.
Схуяли в Реакте, который абстрагирован от dom и от web вообще должен быть роутер или http-клиент?
Чел, ты пишешь css стили внутри строк с интерполяцией нахуй, о каком удобстве и красоте может идти речь? Ты ебанутый?
Клепаю свой сайт на коленке, в первые в жизни пишу код, пока только вкатываюсь.
Потому что функции вызываются каждый раз при событии. Тебе их нужно объединять в одну, которая будет знать, какой эвент в данный момент выполняется и отменять его при запуске нового, но это слишком сложно будет, если только начал. Выпадающие менюшки лучше делай просто через css, примеров можешь миллион найти, в том числе и с анимациями. Но анимацию лучше вообще убрать нахуй, это только раздражает пользователя, если ему нужно ждать прорисовки твоей хуйни прежде чем можно начать ей пользоваться.
>>49772>>49773
Как обычно шизики стриггерились на жквери, но сидят молчком, как только им задают вопрос "а хули ты предлагаешь вместо?". Еще давайте высрите, что ему срякт нужно начать осваивать, чтоб менюшку сделать.
Ну и параша этот жиквери блять... инсайд этого года для меня.
Алсо ток не понял как привязать айдишку к вызову маусовер
когда пишу document.getElementById("userlist").mouseover(showUserlist);
не работает, помогите ток эту строчку исправить пацаны!
Заработало оно только потому, что ты убрал анимацию, поехавший.
мен я предлагаю тебе литл бит слоу даун и хотя бы основы лёрн и тогда ол вил би окей
я лерни и практиую сразу, прост дошел до второй главы кантора, вот делаю че получается
ты меня не обманываешь случаем? там же нет жквери у кантора и твою задачу без него вроде можно сделать
жику я подсмотрел в базовом курсе по js на юдеми
Как ты будешь SPA (основная ссуть реакта) без них писать? Вручную пердолить ссылку в навигаторе и пропукивать джейсоны через фетч? О том и речь.
>>49760
>Где я ошибся, анон?
Анимируешь в жс то, что элементарно делается в CSS без ёбли с ассинхронщиной.
>>49795
>удалил нахуй жиквери
Так ты селекторы оставил и события неканонично присвоил.
>Анимируешь в жс то, что элементарно делается в CSS без ёбли с ассинхронщиной.
В ксс анимацию можно сделать только через
display:none;
display: block
А в скриптах можно делать плавный переход fadein, поэтому я скрипты и начал писать
>В ксс анимацию можно сделать только через
Вот зачем ты пытаешься о чем-то утверждать с умным видом, если сам ВООБЩЕ не разбираешься в этом. Ты в своем уме? Нахуя так делать?
По существу - нет, ксс может делать ЛЮБУЮ анимацию.
Шиз, я все уже в интернете посмотрел на эту тему. Анимацию к display:none в ксс ты никак не прикрутишь
Анимировать блоки можно только через скрипты
Понятно)))
Сообщи, когда откроешь для себя opacity и выяснишь как на самом деле работает твой fadeinout
Долбоёб.
"Given a date string in the form Day Month Year, where:
Day is in the set {"1st", "2nd", "3rd", "4th", ..., "30th", "31st"}.
Month is in the set {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}.
Year is in the range [1900, 2100].
Convert the date string to the format YYYY-MM-DD, where:
YYYY denotes the 4 digit year.
MM denotes the 2 digit month.
DD denotes the 2 digit day."
Мое решение на скрине. Что в нем имело бы смысл поменять? Есть ощущение, что оно как говно выглядит.
В сплите потерялся аргумент, должно быть split(' '), но суть вы, надеюсь, поняли.
Очко себе сделай опасити. Эта хуета занимает место в итоге в потоке, блок надо убирать z индексом пониже.
Есть еще пердолинг с кейфреймс, но это именно уже пердолинг и костыли.
А речь шла про
>что элементарно делается в CSS без ёбли с ассинхронщиной.
В итоге все проще сделать в JS, теперь можешь вытереть мою сперму со своих губ, я кончил.
Вообще говоря css анимация обосрется когда элемент начинаетет влиять на поток и расположение других элементов. Браузр тупа такую анимацию вырубает и востпроизвогит только начальное и конечное состояние. Тут без жс не обойдешься https://css-tricks.com/animating-layouts-with-the-flip-technique/
мимо
Обосрался тут только ты.
>Эта хуета занимает место в итоге в потоке
Вот только мы говорим про абсолютно спозиционированный элемент, который из потока выпадает по дефолту. Так что ты тут жиденько обосрался, опять.
>Есть еще пердолинг с кейфреймс, но это именно уже пердолинг и костыли.
А вот ставить жиквери, который по сути этот кейфреймс заинлайнит, это конечно же не пердолинг.
Что ты хочешь услышать о своих пяти строчках кода? Задачу решил, молодец, успокойся.
могу посоветовать решать задачки на кодварс, там после твоего решения можно посмотреть чужие
В общем есть ли какие-то плюсы у этого подхода и можно ли его реализовать малой кровью?
А ты че жс пытаешься юзать в програмировании?
А почему бы и нет?
уебывай на пикабу быдло
То как ты это описал звучит крайне хуево как по мне. Проще передавать эти значения в сам компонент, где-то брать из window (задать как дефолтные значения), где-то из размеров модалки. А еще лучше сделать на стилях, но тут сложно что-то посоветовать без конкретного примера.
То, что мне нужно, очень похоже на iframe. Правда никогда раньше не пробовал ничего подобного делать
Забыл дописать, компонент, который хочу вставить в модалку использует и медизапросы css и проверку размеров окна средставми js. И компонент можно было бы вообще не трогать, если бы просто можно было как-то заставить компонент думать, что он просто находится в окне меньшего размера
To make the range object iterable (and thus let for..of work) we need to add a method to the object named Symbol.iterator (a special built-in symbol just for that).
То есть это подразумевает, что на обычном объекте это свойство уже есть. В тоже самое время
const obj = {}
obj[Symbol.iterator]
выдает ошибку. Почему?
Пишется, что для того, чтобы объект имел возможность быть итерируемым - нужно добавить метод Symbol.iterator. Ты же пытаешься вывести свойство, которого нет. Так не работает, сначала нужно его определить.
Так в статье добавляют этот метод чтобы работал for of. По объектам он и так работает, хотя этого метода нет (точнее должен быть, но у меня почему-то ошибка вылезает)
https://javascript.info/iterable
С чего ты взял, что он работает?
const obj = {a: 1, b: 2}
for(let i of obj) {} тут выведет ошибку, что объект не итерируемый.
Шиз, итерация это метод, у главного объекта он отсутствует, этот метод надо ему передать напрямую или накинуть прототип от другого объекта, у которого есть метод итерации
Любая современная либа с подобной направленностью позволяет импортировать по одной функции, а уж лодаш тем более.
Не пойму, что тебе не нравится? Подсветки синтаксиса нет? Это ты ебанутый, если не можешь установить расширение для vscode.
Не нравится то, что ты сравниваешь писание css-а через интерполируемые строки(!) в другом языке(!) с полноценным языком писания css-шаблонов, у которого другой цели в принципе нет, и где весь файл - это стили и ничего кроме стилей, и говоришь, что первое удобнее нахуй.
В styled-components есть всё то же, что и в css, и в sass, и даже больше — их можно юзать прямо в js файлах, в них удобно передавать пропы и на их основе устанавливать css-правила, в то время как в sass надо писать всратые классы либо data-атрибуты. Это некрасиво и неудобно. Темы тоже намного удобнее делать на стайледах, они сильно облегчают создание сложных интересов. У чистого sass буквально 0 преимуществ кроме мизерного выигрыша в перформансе, который нивелируется, если стайледы компилировать в css при сборке. То, что это интерполируемые строки — ну так какая разница? За последние два года я sass не использовал и возврат к нему это явный шаг назад, шаг в прошлое.
>>50342
Я уже успешно создал несколько крупных проектов и везде react-router и react-query отлично себя показали. В одном из проектов был next.js, там свой роутер, который тоже выполняет свои задачи. И вообще нередко даже react-query не нужен был, хватало либо чистого фетча, где-то было кеширование от apollo.
Ну с XMLHttpRequest понятно, интерфейс уровня 2005 года, но на аксиос без ебли можно повешать свои мидлвары и крутить что хочешь, ну и прогресс аплоада файла еще можно получить (inb4 в 2021 файлы грузятся со скоростью света). А в фетче даже на 500 ошибки нихуя не выбрасывается, как ни крути а нужно своё говно лепить чтобы было удобно пользоваться
>styled-components
Опа этот шарит, скажи на каждый ли див спан и тд нужно делать стилизацию? Или можно сделать врапер а вложенные теги стилизировать классами?
Спасибо!
> Опа этот шарит, скажи на каждый ли див спан и тд нужно делать стилизацию?
It depends. При таком подходе проще нестить стили.
> вложенные теги стилизировать классами
Я бы не миксовал подходы с класснеймами и стайлд компонентами, только если ты не юзаешь Astroturf или что-то типа того.
Если в некоторых случаях описание слилей займет больше места чем рабочий код это норм?
>При таком подходе проще нестить стили
В том смысле, что ты можешь интерполировать вложенные стайлд компоненты без завязки на класснеймы. С решениями типа линарии это вообще однохуйственно, т.к. за тебя конпелятор извлечет стили (а рантайм оверхед будет небольшим за счет варов).
Хардкодед класснеймы еще чем плохи - их имена могут манглиться, если кто-то внезапно поменяет конфиг сборки.
>Если в некоторых случаях описание слилей займет больше места чем рабочий код это норм?
Норм, но мы определение стайлд комопнентов выносим в отдельный файл как раз для того, чтобы не мешать в одной куче рендер вьюхи с стилизацией.
>отдельный файл
Блин у меня нахуй диссонанс , есть css scss бэм и это все тоже лежит в отдельных файлах, я думал что фишка sc как раз в том что все касающейся компонента и лежит в нем?
Никто и не навязывает вынос в отдельный файл, тащемта.
не троль плз)
Чтобы было нагляднее, вот есть 2 индуса ебучих https://www.youtube.com/watch?v=-OgU5EAcQmo и https://www.youtube.com/watch?v=5-jBzkttbx0 они оба делают абсолютно тоже самое, но у одного вылазит поп-ап, а у второго редирект на страницу гугла, и я тупо не понимаю, в чем моя проблема? Потому что мне надо именно чтобы был редирект, а не поп-ап
useLayoutEffect синхронный и блокирует отрисовку (painting) страницы браузером, а useEffect нет. В этом все отличие. Собсна именно для твоего случая он и предназначен.
Заебись. А то не знал как избавиться от этой проблемы. Странно что про такую возможность сходу не поясняют в разных уроках. Вообще случайно про этот хук узнал
Ты бы сам хоть попробовал эту хуйню с первого видоса локально запустить, чтобы увидеть, что она открывает форму в отдельном окне. Чтобы редиректить можешь просто вызывать window.open() и передать в нее https://accounts.google.com/o/oauth2/v2/auth с нужными параметрами и после обратного редиректа брать код/токен и дальше делать что тебе надо.
И лучше бы вместо просмотра этих уебищных видосов изучил оф доки гугла по oauth, гораздо быстрее было бы.
Спасибо
нет
https://vueuse.org/functions.html
>А в фетче даже на 500 ошибки нихуя не выбрасывается
Это плюс, дурачок. http-клиент не должен выбрасывать экспешены при получении не-200 ответа сервера, это ебанутый нонсенс. Если у тебя выкидывается эксепшен где угодно(включая http-клиент), то это должно означать пиздец, неожиданность, все не работает нахуй. Как пример - NetworkError, SyntaxError, TypeError и т.д. 500 ответ сервера таким случаем не является, его нужно нормально обработать и сказать клиенту "сервер на этот запрос чутка долбоеб, попробуй еще раз по-другому".
>Если у тебя выкидывается эксепшен где угодно(включая http-клиент), то это должно означать пиздец, неожиданность, все не работает нахуй.
>500 ответ сервера таким случаем не является, его нужно нормально обработать
У меня такое чувство что ты предлагаешь вместо try/catch ошибки ифами обрабатывать. И еще объясни, в чем разница между NetworkError и 500 ошибкой сервера для твоего приложения? Ты в любом случае ничего кроме алерта высрать не сможешь. Что так что так неожиданно и всё не работает нахуй
> Ты в любом случае ничего кроме алерта высрать не сможешь.
Про буферизацию и отложенный повтор неудачных запросов ты еще не проходил?
Ок, делаем ретрай и на NetworkError и на 50x? Тогда зачем тебе ебля с трай кетч И ифами?
>У меня такое чувство что ты предлагаешь вместо try/catch ошибки ифами обрабатывать
Я предлагаю вообще не использовать try/catch для реализации какой-либо логики в приложении, потому что это давно известный антипаттерн, как тебе такое?
> еще объясни, в чем разница между NetworkError и 500 ошибкой сервера
В том, что NetworkError - это "нихуя не работает, приложению пизда", тогда как 500 - это "бэкендер что-то нахуевертил, отправьте тикет или попробуйте еще раз"
Ну, я так и сделал. Проще подтянуть свой уровень до момента когда тебе можно что-то доверить чем мыкаться в поисках вакансии стажера-говночиста.
>потому что это давно известный антипаттерн, как тебе такое?
Не согласен, но спорить не буду, мы не об этом сейчас
Я изначально поинтересовался зачем брать довольно таки лоулевельный для фронтендеров апи, чтобы жсончики гонять, в котором отсутствуют хайлевельные штуки вроде мидлваров и тому подобного(что тоже не всегда нужно, это понятно). Или ты просто предпочитаешь новое говно старому говну? А если бы фетч выбрасывал на 400-500, твои действия?
>что читать
что угодно. хоть бы и кантора
>как осознать
просто вызубри. осознание придет с практикой
Что там сложного? Даже ребенок поймет.
Ты сушедший? 500 ошибка, это значит, что сервер таки что-то но ответил. А нетворк еррор это значит, что домен вообще может не резолвится, нет сети, или еще что-угодно. И обрабатывать это все надо по-разному.
Фетч нихуя не лоулевельный, а любой твой миддлвар уровня "распарсить в жсон и добавить хедеры" делается одной оберточной функцией без дрочева раздутого неинтуитивного API, которое к тому же поощряет мисюзы и добавление бизнес-логики внутрь запроса.
>А если бы фетч выбрасывал на 400-500, твои действия?
Взял бы другой http клиент или сделал бы обертку над самим фетчем.
2 макета за мивину и пара сайтецких один из которых лендос для наебизнеса достаточно будет?
Бля, не туда, идите нахуй.
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
ПЕРЕКАТ >>1951125 (OP)
Это копия, сохраненная 15 мая 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.