Это копия, сохраненная 13 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Больше пары строк кода в посте или на скриншоте ведут в Ад.
Для программирования на HTML https://jsfiddle.net/
Для Node.js с консолькой https://repl.it/languages/nodejs
Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: что я хочу получить, что я для этого делаю, что я вместо этого получаю. Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.
Руководство для вката: https://developer.mozilla.org/
Я вот, например, писал немношк на жс/ноде аппы для энергетической промышленность. Надо ли говорить, что никаких рантайм валидаций там не было? НЕ ГОРЖУСЬ.
Ну вот ты и повелся на тудушки и каунтеры от Денчика, даже он не решил куда бизнес логику положить, вобщем архитектуру меняй лол на НОРМАЛЬНУЮ где не надо в редусере чета читать и изменять как в тудушке
Да блять а как ты из списка товаров которые отдельно прилетают кинешь в корзину которая по сути должна отдельно быть?
Через сервис, ю ноу?
interface MyInterface {
id: string,
value: number
}
Не в тему, т.к. мы просто определили объект у которого 2 поля: id и value
>то есть каждому айдишнику сопоставляется своя value
И что она, блядь, каждая своего типа? Со стороны кажется, что тебе нужен tagged union, хотя не уверен, что за говноструктуру ты себе наворотил.
>Как в TS определить что-то вроде mapping?
Есть в тс mapped types, хотя повторюсь, если у тебя структура спроектировано хуево, ты будешь ебаться с выводом типов.
https://mariusschulz.com/blog/mapped-types-in-typescript
Есть Record<A,B>
Эм, а че означает [id: string]: T, в смысле я в курсе про дженерик Т не врубаю только как можно писать [id: string]: - мы объявляем массив с id: string которому соотносится тип Т (чего блин?..)
мимо
>мы объявляем массив с id: string которому соотносится тип Т
Нет, это просто констрейнт на тип ключа. Нет там никакого массива. Это почти то же самое, что рекорд тип выше, просто там на ключ релаксед контстрейнт (вроде можно указать числа и символы).
>То есть у меня есть объект вида {id: value}, то есть каждому айдишнику сопоставляется своя value.
Если прям на каждое значение ключа свой тип, то тогда у тебя будет интерсекшн на каждый ключ
Что там эта точка делает? Я понел что она контроллер квадрата, но что именно она делает непонел
let arr = [{name: "Aleks", job: "cleaner"}, {name: "Ivan", job: "saler"}, {name: "Boris", job: "barman"}]
Как отсортировать массив по имени (name) объекта?
arr.sort((a, b) => {a.name < b.name})
Что-то нихрена не делает
точка это время(t), а все остальное - анимация. там в задаче было условие на нажатие пробела нужно поднимать один квадрат вверх и держать его, с одной точкой этого без костылей не сделаешь. а вторую точку не сложно дописать, просто я так и не увидел ответа просящего
>что-то вроде mapping
Спешите видеть - жээсеры открывают для себя структуры данных.
"Что-то типа маппинг" - это любой объект JS.
>Не в тему, т.к. мы просто определили объект у которого 2 поля: id и value
А что такое "маппинг", по-твоему, какая-то охуенно секретная магия?
А просто объект - так, хуйня?
Тут возникает вопрос - для чего тебе это?
Что ты будешь с этим делать дальше?
От этого может зависеть реализация такого объекта.
Взять какой нить курс по ноде, или нужно теорию отдельно читать где то ?
Так я не через ксс не через жс не ебу как это сделать. Как плавное сворачивание реализовать? Поставить ивентХендлер на target.parentElement.style.display = 'none' я и так могу, это не то
С бэка приходит жсон где в одном из полей лежит структура где каждому айдишнику сопоставляется список с данными
На фронте я проитерируюсь по нему через Object.entries(jsonObj.entity). Нужно оформить интерфейс которому будет соответствовать эта структура
1920x1080, 0:36
ну так иди почитай идиот конч бля
https://css-tricks.com/the-checkbox-hack/
https://developer.mozilla.org/ru/docs/Web/CSS/animation
Не еби мозг ни себе, ни людям. Раз ты общаешься с бэком, возьми и прогони спеку (OApi, swagger, whatever) через блядский генератор, у тебя на выходе будут тайпдефинишны всех поддерживаемых ответов, структур и полей.
в общем есть ли возможность как-то скачать видева с сайта этого?
может где-то в коде страницы что-то есть, но ничего не нашел
или это какое-то API и там без смысла пытаться
спасибо
https://johnbryce.zoom.us/rec/play/lwevmpRKpDpJHlXULYeiR4rpCLC-RKfhGWN9nGnJQKUXZTlzZKw3sdDA10V_x4CgQDBX1t3UKTe3WF4F.lIiiTepwFBAFyjBB?continueMode=true&_x_zm_rtaid=8LAktGphREaf-BfVsDJKdg.1604947290916.c94fc08a47d24b67971dcdbe3d1040d6&_x_zm_rhtaid=37
Transition: 0.5s; потом делаешь позишн фиксед и позиционируешь за областью видимости. При активации подсовываешь css класс с нормальным позиционированием.
Я сам бэк и пишу, на фронте реже появляюсь. В теории могу что угодно там нахерачить, спеки на то что готовится еще нет
1920x1080, 0:18
конча без мозга не пиши ниче пж
и как мне провернуть это в следующие разы сможешь подсказать пожалуйста, или что и где искать
ну я же пошутил че ты ниче не пишешь мне же скучно придумай еще ченить как ты умеешь
Аноны, судя по последней инфе надо будет скрывать часть текста... Видели же небось как длинный абзац с текстом укорачивается до каких-нибудь 70 символов а дальше висит ссылка "Показать больше", при нажатии на нее текст плавно разворачивается (а затем его снова можно будет скрыть). Как такое мутить?
Тут фишки с display='none' и transisiton: 1s не прокатят
Overflow hidden + менять вертикальный размер?
Можно ещё найти то, что надо, в интернетах, и спиздить (идею или компонент).
>найти то, что надо, в интернетах
Большинство основано на каких говнолибах жкьюри))
>>52272
Из идей на данный момент: брать текст внутри абзаца через innerHTML, если он длиннее 70 символов, то раздербанить его на 2 части через slice, вторую часть обернуть в <div> с display: none и закинуть на его место кнопку которая при нажатии показывала бы недостающий текст (transition тут поможет кстати для плавности?)
Может проще overflow: hidden, transition: 1s, и менять height с помощью classList.toggle? Ну и текст в кнопке менять show more/show less.
>и менять height
Высота / число строк - неявные метрики для скрытия текста... Только число символов может быть объективным. даже если подогнать под конкретный размер окна и размер шрифта и скрывать через изменение height, при смене параметров все сломается
не понял, ты быкануть решил, солнышка?
Анимировать height? Найс идея, конечно.
> А на go можно только хипстерскую хуиту писать.
Как же забавно встречать людей, которые отстали от развития айти индустрии лет на пять, и при этом пытаются всерьёз вещать громкие утверждения
Запили мини-копию инстаграма / твиттера / твитча
Надо. Сам пишу парсеры/скраперы на ноде + puppeteer, годная штука, особенно SPA инфу собирать
Встал вопрос генерации роутеров в соответствии списка приходящего с бд, так как в списке около 220 видов поддомена.
Для этого решил воспользоваться фреймворком "express-subdomian".
И написал следующий код:
for (let key in cities) {
let town = ruToLat(key).toLowerCase();
router.get('/', async (req, res) => {
res.render('index', {
title: `Subdomian is: ${key}`,
ifIndex: true,
cities,
key
})
});
router.get('/euro', (req, res) => {
res.render('euro', {
title: 'Subdomian is: ${key} ',
ifEuro: true,
cities,
key
})
});
app.use(subdomain(`${town}`, router));
}
В переменной cities лежит объект с тем самым списком.
Где в последующем передаю на страницу список с ключом, для вывода данных на страницу.
Но при обращении допустим "moskva.domian.ru", на страницу рендерется данные только первого ключа. То есть в списке есть ключ "moskva" но цикл остановился сразу после первого интервала.
В чем может быть проблема? Или же я что-то не правильно делаю?
Прикл мои маняфантазии о том как должно было работать
Встал вопрос генерации роутеров в соответствии списка приходящего с бд, так как в списке около 220 видов поддомена.
Для этого решил воспользоваться фреймворком "express-subdomian".
И написал следующий код:
for (let key in cities) {
let town = ruToLat(key).toLowerCase();
router.get('/', async (req, res) => {
res.render('index', {
title: `Subdomian is: ${key}`,
ifIndex: true,
cities,
key
})
});
router.get('/euro', (req, res) => {
res.render('euro', {
title: 'Subdomian is: ${key} ',
ifEuro: true,
cities,
key
})
});
app.use(subdomain(`${town}`, router));
}
В переменной cities лежит объект с тем самым списком.
Где в последующем передаю на страницу список с ключом, для вывода данных на страницу.
Но при обращении допустим "moskva.domian.ru", на страницу рендерется данные только первого ключа. То есть в списке есть ключ "moskva" но цикл остановился сразу после первого интервала.
В чем может быть проблема? Или же я что-то не правильно делаю?
Прикл мои маняфантазии о том как должно было работать
Ты не можешь динамически менять мидлвари в экспрессе. Пиши один роут и матчи в соответствии со списком городов.
Спасибо анон!
ходил спрашивал где ебать помощь короновирусная государственная астматикам, говорят ты ебать два года к нам не ходил, тебе и не положено нихуя, на что я отвечаю так я и не болел два года хули мне к вам ходить. как оказалось все мне положено, просто проебалось по пути где то
у меня заскриптован путь до поликлиники и чипсы часть этого скрипта
Нинужно, есть же божественный fp-ts
Как импортировать пакет, установленный через npm в скрипт? Использую rhino, при попытке сделать это через import * from "main.js"; говорит syntax error
>rhino
Не секрет, для чего?
Алсо, беглый гуглинг показывает хуй чего, похоже, что на rhino вообще нет js импортов.
Допустим я купил vps с убунту. и хочу там настроить все окржение с нуля. нода, бд, nginx, npm
Где взять подробный туториал по сабжу?
редьюсер должен быть "чистой" функцией, там можно размещать логику, но никаких рандомайзеров, запросов и тд
ну там как обычно гайд от васяна, где он клацает по кнопкам в админской панели.
На Digital Ocean.
Они продают vps и у них же куча мануалов по установке софта, на все случаи жизни.
Напирмер, чтоб из E146BC178 получилось Е146ВС178(но буквы Е, В, С - кириллицей)
Подходящую регулярку вроде нашел - /^[ABEKMHOPCTYX]\d{3}(?<!000)[ABEKMHOPCTYX]{2}\d{2,3}$/ui
но дальше хз как
Создаешь словарь (map структура) вида ключ-латинская буква, значение-похожая буква на кириллице. Далее в одном цикле пробегаешь по всем циклам и заменяешь все совпадения. Никаких регулярок не нужно.
Пикрил в качестве примера.
Да, я уже пришел к аналогии, но с применением регулярки(более простой чем выше). Хотя твой варик тоже гуд. Спасибо.
Очевидно настроить сборщик особым образом. Попробуй инлайнить все импорты на выходе в IIFE.
Чувак, регулярка перестанет работать при смене формата номера.
И такие вещи, как правило, происходят в самый неподходящий момент.
Или тебе для школы надо?
я имел в виду асинхронные запросы api, а в редьюсере у тебя и так есть доступ к стейку( это же первый аргумент редьюсера)
Залей куда-нибудь если можешь.
Таблица - это массив объектов(строк) и массив колонок, у колонки есть id, title, dataField/template. Если нужны сортировки/фильтры/пагинации - то можно массив объектов абстрагировать в dataSource которому сама таблицы а может и не сама будет говорить "произшло СОБЫТИЕ_1" и спрашивать у него видимые данные. Можешь его даже реактивным сделать
> Залей куда-нибудь если можешь.
Рабочий проект, сам бы я такую ебалу в жизни писать не стал.
Просто у меня таблица с подтаблицами, свисталками по клику, интерфейс к ней достаточно сложный. Апи и кастомные компоненты я раскидал по классам, но клея и инициализации на 800 строк уже. Еще сейчас появились требования что интерфейс разных типов юзеров должен сильно отличаться. Плюс части нужно будет переиспользовать в других страницах проекта, с возможно новым поведением. Короче я охуел чет и думаю над еще слоем абстракции, но такого опыта пока не было.
Бля, возьми любой инструмент, с которым можно работать а-ля как с МИТМом. Например, скачай классический фидлер, включи проксирование трафика, открой страницу с медиа, найди в логе обращение к этому ресурсу (там есть колонки типа mime type), выбери это вхождение и сохрани тело ответа на диск. В случае с зумом большего не потребуется. Есть и другие ресурсы, где меди поступает чанками по запросу, сейчас не будем в это углубляться, но там достаточно сделать все то же самое, просто потом склеить сохраненные чанки. Шебельме?
Выносишь последовательно нахуй из таблицы рендерер ячейки, затем строки, потом тела таблицы и в конце заголовок.
Таблица ничего не должна знать про датасорс-хуёрс, она тупо рендерит то, что ей передали. Сортировку, фильтрацию, пагинацию и вагинацию также выносишь куда-то вовне, скажем, в виджет, а контролы - на соответствующий тулбар. Ну, ежели хочешь мммаксимум кастомизабельности, можешь рендереры кусочков таблицы инжектить в DI, но я хз, надо ли, есть риск выпотрошить все кишки таблицы, не поимев с этого никакого профита.
Для написания скриптов на плагин worldedit на сервере в майнкрафте.
>>52775
Анончик... Что это все значит? Сегодня писал на жс первый раз в жизни
>>52785
Так я тоже пробовал. На любую попытку импорта он говорит синаксическая ошибка. Там пакеты импортируются вот так - importPackage(Packages.com.sk89q.worldedit);
https://worldedit.enginehub.org/en/latest/usage/other/craftscripts/ вот здесь подробнее
>Для написания скриптов на плагин worldedit на сервере в майнкрафте.
Скриптовать джаву на джаваскрипте?
Месье знает толк в извращениях.
Для этого есть Groovy.
Шебельме
У него Rhino, какой, в пизду, вебпак.
Не говоря уже о том, что ему и джаваскрипт-то не нужен, под его задачу.
>У него Rhino, какой, в пизду, вебпак.
Он хочет ES6 синтаксис и свистоперделки пока пишет код. Можно и просто бабелем сконпелировать.
Но так-то не нужен, да, если будет писать на ES5 пхахахахахаха
>в редьюсере у тебя и так есть доступ к стейку( это же первый аргумент редьюсера)
если юзал combineReducers тогда в редусере будет только кусок стейта
>>53141
Ну тип если надо в другой кусок стейта писать - то просто делаешь в другом редусере, делов то.
Если одна часть стейта зависит от другой, то надо задуматься, нужно ли их разделять на разные части скорее всего нет
Если нужно - то в тред пишут фантомные советы даже раньше чем вы спросили: >>52960
Посоветуйте годный гайд по ascii рогаликом на чистом canvas js без всяких сторонних либ.
ЗЫ: нигде такого не нашел, а самому
додуматся тяжело
А по какому аспекту тебе гайд-то нужен? Берешь стейт, берешь гейм луп, каждый кадр рисуешь стейт на канвасе. Плюс вешаешь на клавиатуру функции для управления стейтом. Все, игра готова.
Как мне в реакте отправить 20 запросов к апи и все результаты вывести на одной странице?
Пробовал через фор ич->эсинк эвэит, но мне почему-то такое выдает:
Can not use keyword 'await' outside an async function
В мидлварях, которые реагируют на экшены.
const res = [
{
additionDate: "11/10/2020 16:04:52",
licenceNumber: "123"
},
{
additionDate: "11/10/2020 16:09:58",
licenceNumber: "321"
},
{
additionDate: "11/10/2020 21:13:25",
licenceNumber: "333"
},
{
additionDate: "11/11/2020 13:50:22",
licenceNumber: "123"
},
{
additionDate: "11/10/2020 16:15:06",
licenceNumber: "123"
},
]
как отфильтровать массив так, чтобы убрать повторяющиеся элементы с licenceNumber, и при этом оставить самый новый?
Написал функцию которая просто формирует новый массив без дубликатов с licenceNumber, но не могу допереть как при этом еще в результате оставлять тот, что с самой новой датой.
const unique = res.filter((v,i,a) => a.findIndex(t => (t.licenceNumber === v.licenceNumber )) === i )
const res = [
{
additionDate: "11/10/2020 16:04:52",
licenceNumber: "123"
},
{
additionDate: "11/10/2020 16:09:58",
licenceNumber: "321"
},
{
additionDate: "11/10/2020 21:13:25",
licenceNumber: "333"
},
{
additionDate: "11/11/2020 13:50:22",
licenceNumber: "123"
},
{
additionDate: "11/10/2020 16:15:06",
licenceNumber: "123"
},
]
как отфильтровать массив так, чтобы убрать повторяющиеся элементы с licenceNumber, и при этом оставить самый новый?
Написал функцию которая просто формирует новый массив без дубликатов с licenceNumber, но не могу допереть как при этом еще в результате оставлять тот, что с самой новой датой.
const unique = res.filter((v,i,a) => a.findIndex(t => (t.licenceNumber === v.licenceNumber )) === i )
А как это с привязкой к дате-то сделать, чтоб он оставлял именно самый последний? 2 ночи не спал, голова уже не соображает.
Создаешь словарь вида {licenceNumber:additionDate}
Проходишь по массиву, проверяешь есть ли в словаре ключ с licenceNumber, если нет, то добавляешь текущий в словарь, если есть, то сравниваешь additionDate и либо оставляешь значение ключа без изменений, либо заменяешь на более новый.
Далее из получившегося словаря делаешь массив вида [{licenceNumber:additionDate}];
Либо можно отсортировать массив по additionDate, после чего создать Set и пробежать по массиву, добавляя те элементы licenceNumber которых нет в Set.
Почему при объявлении класса выдаёт синтаксическую ошибку?
>Либо можно отсортировать массив по additionDate, после чего
const unique = res.sort((a, b) => new Date(b.additionDate) - new Date(a.additionDate))
.filter((v,i,a) => a.findIndex(t => (t.licenceNumber === v.licenceNumber )) === i );
Грязновато, но похуй. Работает хули.
>.filter((v,i,a) => a.findIndex(t => (t.licenceNumber === v.licenceNumber )) === i );
Убери это. У тебя сложность O(n2) с этой хуйней, если делать через reduce и Set, то будет O(nlogn) из-за сортировки. Если делать через словарь, то сложность будет O(n)
let lNumbers = new Set();
res.reduce((acc,e)=>(lNumbers.has(e.licenceNumber) ? acc : (acc.push(e),lNumbers.add(e.licenceNumber),acc)),[])
где res это отсортированный массив.
Ну заебись, около процента выиграл. Только это еще без преобразования сета в итоговый массив
>преобразования сета в итоговый массив
Преобразовывать ничего не надо, сет используется в качестве хранилища для номеров лицензий, которые уже добавлены в результирующий массив.
Без сортировки разница ощутима.
А при чём здесь язык? Это у тебя руки из жопы, но ты винишь во всём других.
thunk / saga
В больших приложениях апи выносится в отдельный сервис всегда, тем более в жирнущем самом по себе реакторедаксовом паттерне
Нужно найти на странице все элементы, у которых background-image -- не важно, прописанный в ксс или в аттрибуте style -- содержит определённую подстроку. Есть какой-то простой метод, о котором я не знаю, или надо самому костылять перебор всех элементов внутри document с вызовом getComputedStyle для каждого?
Мыщи плакали, кололись, но продолжали жрать кактус.
>почему они все поголовно тупые
Потому что способные новички трудоустроены и заняты делом, не думал об этом?
Нет, ты чо 2020 же рассвет двощей!
{
score: number,
msg: string
}
Надо засунуть msg в подготовленное поле и нарисовать слева от него цветной столбик как на пике, в зависимости от score (то есть если score 100 то зеленым, если 12 то красным и т.д.)
Реализация - ванильный жс. Но походу большая часть херни именно с css связана, ведь так? Как эти ебучие цветные столбики нарисовать как на пикриле?
linear-gradient
border-right
::before, ::after, да хоть отдельным дивом же.
по моему он не про это спросил
Бро купи курс Буры на трекере и перестань задавать подобные вопросы.
все нормально, только все что связанно с методами fetch и строками url лучше держать в отдельном сервисе(классе) и инжектиь объект его через специальный сервис провайдер
border-left: 5px solid
Цвет потом сам жс назначит
Однако... Градиентная заливка как на пикриле не получается, с linear-gradient . Тут походу надо свою картинку подгружать но вот как заставить ее идти исключительно по тексту?..
...а может, просто взять Puppeteer, м?
Все делается с градиентом, просто нужно взять два цвета, разных оттенков.
linear-gradient(to top, якрий цвет 1-100%, бледный 1%), меняешь только яркий в зависимости от счета.
Див, а внутри него два дива разной высоты и разного цвета.
Работать будет везде и везде одинаково.
Я так делал ещё лет ... назад, правда, горизонтальные и очень узкие, но это не важно.
Хм, ок.
Читал соседний тред, там джун фронтендер не может с сентября работу найти, думает, что из-за вышки. Реально ли так все так хуево и без корочки (пиздежа про корочку) не чекают резюме?
Я сам 24 годика, без вышки. Работаю руби-бэкендером, но мне повезло, устроился по блату через знакомство, однако чувствую себя не в своей тарелке (работаю с родственниками, да и зарплата не такая высокая, права качать тоже неудобно), думаю перекотиться во фронт, поработать пару лет, а там я уже буду жоних фуллстак с опытом. Что скажете, реально все так плохо? Сидеть на жопе ровно?
В России вышка мало на что влияет, можно изи найти высокооплачиваемую работу без нее. Нужна в специфических местах типа госкомпаний или Яндекса (любят дрочить алгоритмами и матаном с которыми у вкатывальщиков туговато обычно). Но если собрался перекатывать со временем, то советую начать получать, значительно проще с визами и в вакансиях CS Bachelor/MS часто мелькает. Успеешь получить до 30 и будет потом хорошим бонусом. Неплохая программа, например: https://www.coursera.org/degrees/bachelor-of-science-computer-science-london Я вот слегка жалею, что раньше не начал.
35 лвл студент
>Мне бы вообще с нее хоть как-то уволиться, пчел. Я со всей семьей переругаюсь нахуй, кек.
Кумовство в ойти? Это что еще за хуйня?
>не может с сентября работу найти
я надеюсь иметься виду с сентября 2019, потому-что в ином случает придётся послать его нахуй
Нахуй вышка на фронте? Вообще не влияет.
Через transition и opacity попробуй. Дисплей нан не трогай, иначе не будет плавности.
Млодой человек. Вам же сказали, что вы не прошли интервью. Мы вам перезвоним, до свидания.
Ну хорошо-хорошо. Дадим вам ещё один шанс.
Что такое функциональное программирование и какие особенности JS позволяют говорить о нем как о функциональном языке программирования?
Ну, эээ. Давайте мыслить логически, мы же программисты ))
Человеку нужно выполнить какую-то задачу, т. е. набор функций, на JS можно описать этот набор функций. Значит JS функциональный язык программирования :)
>Что такое функциональное программирование и какие особенности JS позволяют говорить о нем как о функциональном языке программирования?
Самому знать пора. Мы вам перезвоним.
Видим, что вы разбираетесь в своей области и мы подобрали вам вакансии согласно вашим знаниям и опыту.
1. Дворник. 15к
2. чистильщик говен. 30к. (без премий 15к)
Функционально программирование без типизации - деньги на ветер.
Кто сказал LISP? Идите на хуй!
Erlange your penis.
https://codepen.io/stdenits/pen/poyNYxY
В примере - три селекта. Всего их 15-ть.
Не очень подходит. Стандартными средствами нельзя что ли?
TodoMVC
Расскажите про наследование через прототипы.
Так они не знают нихуя, что смешного.
На последнем собесе меня спрашивали про многопоточность в жс, передачу объектов между жс потоками, общую память, примитивы синхронизации.
мимо сениор
>На последнем собесе меня спрашивали про многопоточность в жс
Воркеры-хуёркеры, sab'ы, вот это всё?
Однако когда совершается переход по этому адресу GET-запрос на сервер с параметром /mainpage не совершается... (на серваке даже лог не срабатывает), почему так? Ангуляр разве не должен автоматически слать get-запросы, когда переходит по url-ам?
Потому что это SPA. Запросы должны совершаться не при переходе на страницу компонента, а при загрузке каких-либо данных этим компонентом, каких именно данных указываешь уже сам, если нужно загружать что-то во время перехода по роуту компонента, то обычно используют метод компонента ngOnInit
Ну у меня поначалу просто совершается get-запрос, на котором проверяется роль юзера, затем в ngOnInit я вызываю другой url и подгружаю основные данные оттуда
Думал первый запрос сам должен пройти, я ж по url перешел
Возможно ли сделать отображение стрелок (увеличения и уменьшения значения) на <input type='number> на тачскрине?
Я имею в виду стандартный компонент (без плясок с бубном и отображением своих собственных кнопок поверх)
Чекнул, что у нас на фронте по грейду "сеньор" идет - всякие докеры, кубернетисы, архитектурные паттерны (MVVM,MVI и др), мультипоточность, libuv/libevent, SSR...
Я честно хз, нахуя что-то по докеру особого знать, кроме как уметь подправить конфиг и запустить контейнер.
Ммм, господин из МВП тредов пожаловал... Милости просим, проходите, раздевайтесь, уважаемый.
использую их всегда
Если сможешь объяснить в чём разница между разными видами объявлений функций, то ок. А так "мы вам перезвоним".
Дальше он грузится в head.pug вьюхе. И там он грузится как
script(src="/static/js/bin/bundle.min.js")
Я хочу сделать так, чтоб в имени файла был contenthash. Как передать в pug вьюху этот контентхэш?
app.set('view engine', 'pug');
app.set('views', './www/views');
Паг запускется вот так, не минимизируется.
Можно ли как-то через app.set передать переменную в pug файл? Можно ли как-то взять из webpack.config.js? Как короче лучше сделать. Переписывать сильно не хочу.
Мы вам перезвоним.
1. Выполняем асинхронные запрос А
2. Читаем результат от А
3. Если результат true, то выполняем асинхронный запрос B; если нет - останавливаем исполнение
4. Читаем результат от B если был сделан запрос
Очевидно что можно написать херню вроде (считаем что service возвращает уже готовый результат и await не нужен):
service.makeRequestA().then( (response) => {
----if (response.result) {
--------service.makeRequestB().then( (response) => {
------------processResponseB(response)); }
----}
----else {
--------console.log('FAIL');
)};
Но смотрится как-то не очень
Заверни требуху в функции, ошибку пробрось через эксепшен.
TaskEither
Можно переписать на async/await, тогда елочка исчезнет. Но радикально тут ничего не улучшить.
Если await не нужен то зачем ты пишешь .then а не сразу кладешь результат в переменную? Async/await это просто удобный синтаксис работы с промисами для того что бы избавиться от колбеков.
Во первых так удобнее, во вторых пойдешь нахуй со своим this-ом
@change="changeFanCfg('15', $event)"
changeFanCfg: function(val, id) {
console.log("id: ", id);
console.log("val: ", val);
}
Хуй тебя поймёшь.
В шаблон на express можно передать переменную или через res.render или через res.locals
var bResp =
await service.makeRequestA() ? await service.makeRequestB() : null;
return bResp === null ? console.log('FAIL') : processResponseB(bResp);
Хуюнции. Покажите мне большой проект на хуках, с обильным использованием сети и прочих апи.
Болезный, как связаны какие-то абстрактные хуки и
> обильным использованием сети и прочих апи
?
Хуки просто функциональный способ описать действия в определенных состояниях жизненного цикла. Если ты в компонентах описываешь логику с сайдэффектами, ты по определению сосешь. В остальном твои консерны не ясны.
Нормальные люди хранят весь стейт кроме мелочей в редуксе, сеть и апи вынесены в саги, которые теребят стейт и автоматом перерисовывается интерфейс. Как на хуках предлагаешь это делать? Они годятся для разработки компонентов, а уровень повыше все равно придется по-старинке делать.
Нет, это скорее связанно с тем, что после курсов от всякой академии и им подобных контор на рынке просто куча джунов, а компаниям нужны мидлы, которых можно сразу за работу посадить.
Довольно много компаний морозится, когда узнаёт, что у тебя 0 коммерческого опыта.
сам с зимы ищу
>а компаниям нужны мидлы
Так пусть мидлов сразу ищут. Нахуй тогда писать в вакансии junior frontend developer, если вам миддл нужен?
Чувак, ты не понимаешь сути промисов, и хуяришь какие-то колбеки из них.
Тебе из then() надо возвращать service.makeRequestB(), а всё остальное делать в следующем then() в той же цепочке. Никаких лесенок, ты что, охуел?
типа taskA.then(r -> if (a) return taskB eles return completedPromise(null)).then(b -> ...).then(c -> ...)
Если промис нихуя не вернул, то дальнейшая цепочка не вызывается.
Это монадический паттерн, чтобы ты знал.
Плюс - можно выкинуть exception и обработать в конце цепочки.
Мы вам перезвоним.
Хотя, если функциональную цепочку ты называешь словом "лапша", то мы даже обещать перезвонить не будем, а просто попросим уйти.
Для тех, кто не вдупляет - добавлю:
Промис (future) - это значение.
Замороженное действие.
Цепочку можно разорвать в любом месте, передать куда-то и там продолжить.
Профит от таких вещей далеко не всем очевиден, и для недалёких придумали async|await, чтобы у них мозг не перегревался.
useSelector не содержит в себе оптимизаций, с ним лишнего ререндеринга много
[code lang="js"]
const processA = res => res.result
? Promise.resolve()
: (() => {throw new Error("Fail!")})();
const fetchMore = () => service.makeRequestB();
const processB = res => processResponseB(res);
const onError = e => console.log(e.message);
service.makeRequestA()
.then(processA)
.then(fetchMore)
.then(processB)
.catch(onError);
[/code]
>сам с зимы ищу
Блядь, как можно что-то искать больше года? Ты весь этот год чем занимался? Мог уже 10 проектов своих написать и спойно напиздеть, что фрилансил, или просто сказать, что у тебя дохуя опенсоурсного опыта и т.п. Мог найти таких же вктатывальщиков и пилить командный проект попутно обучаясь, и т.п. Или ты написал одну сранную тудушку и сидишь ждешь когда же тебя на работу с ней пригласят?
Ну да, как то так.
В коде для обучения можно добавить setTimeout(...) и резольвить по истечении таймаута - для натуральности.
Короткие операции можно просто инлайнить в then().
Попробуй ещё вместо throw new Error() просто делать reject() - это более правильно, режект для этого и придуман.
Хуячил тестовые, делал минипроект с другими людьми, который в итоге никуда не вылился.
Пиздеть на собесе не хочу, т.к. мне это потом в ногу выстрелит.
Бугуртом неосилятора удовлетворён.
da eto tak
Так не надо пиздеть, тебе отвечали, что в итоге им не нравилось или что? Как так получилось, что ты год не можешь найти работу?
Ну я часто вижу в вакансиях типа основы Js/css/html
Будет плюсом Знание React
Вот и интересно, что это за знание-то такое?
кодинг явно не твоё если ты даже сранный реакт освоить не можешь, пиздец я хуею с этих вкатунов
в вакансиях на хх подавляющее большинство это специалисты 1-3 года. это мидл
Если "знание react" то это react джуниор.
Далее градация зависит от `опыт рабы с реактом от ${опытОт} до ${опытДо} лет`
вопрос говорю топовый
>тем временем выше по треду требуется помощь промис-архитектора
Обходишь рекурсивно все свойства и из них создаешь копии в новом объекте.
>компаниям нужны мидлы, которых можно сразу за работу посадить.
Компаниям нужны сразу сеньеры с з\п жуниора, а лучше и без нее. Только вот рынок по губам компаниям проводит. Мидлы и сеньеры они на то и мидлы и сеньеры, что у них уже есть работа. Им не нужно ее искать. А искать нужно вкатывальщикам (что даже еще джун). Так что два варианта для компаний - жди, пока освободится мидлосеньер и заманивай зп или набирай вкатов и обучай.
Тебе не надо этого делать, инфа 92%. Скорее всего это очень плохое и костыльное решение твоей задачи.
Ну, условно из 20 моих откликов 10 не смотрели, 7 оставляли без ответа, 2 кидали своё тестовое и одни кое-как звали на собес.
Смотришь как у других сделано и воруешь. Тот же бутстрап поковыряй.
У лодаша тоже stack-unsafe, пока никто не жаловался.
Никто не делает самостоятельно выпадающие меню, слайдеры и прочее, этим занимаются создатели библиотек. Задача фронтендеров это расположить эти готовые элементы на странице, иногда подправить что-то в них, сделать страницу адаптивной и т. п.
Бля, мне видимо не свезло с продактам/дизайнером. Все сука кастомное хотят блядь!
Да.
>вкатился в 32
>заставляют пилить велосипеды в виде слайдеров и выпадающих меню
Еще и платят наверео как дворнику-таджику. Нет, сычуш, ты не вуатился в айти, ты вкатился на дно русского наебизнеса в качестве лошадки.
Если пройдя курс learnjavascript.info ты ничему не научился, то программирование это не твое.
>пройдя курс learnjavascript.info
>Стоимость обучения 19000 руб, время обучения: 1.5 месяца.
Инфоциган плиз
Так я про курсы и спрашивал, не понял к чему ты это вообще высрал. Или ты имел ввиду ту общедоступную инфу на сайте? Ну так это справочник по сути есть.
Общедоступную и имел. Если тебе этого недостаточно, то программирование это не твоё. Можешь злиться, но чем быстрее ты это признаешь, тем меньше времени потратишь на бесполезное для тебя занятие.
Никак. Программистами только рождаются.
Да. Почему нет? Тем более с connect нет лишних ререндеров, которые если при использовании useSelector
Библиотечные параша же. Даже гугл не может нормальные компоненты написать. Алсо кастомизация стилей боль.
синьор-помидор с 3 запиленными ui-китами
useMemo прикручивать не надо, в этом нет смысла. Чтобы компонент вел себя аналогично обернутому в connect используется React.memo.
Што? Причем тут тесты?
Не, мне нравится, это даже чем-то вроде специализации стало. Сейчас вот хантят с релокацией писать четвертый лол.
Везде же требования разные и дизайн разный. Что могу переиспользую, конечно. Например на последней работе нужен был календарь с поддержкой часовых поясов и таймслотов. А на предыдущей у всех компонентов должна была быть автоматическая отправка аналитики и возможность задавать дополнительные наборы пропсов для разных разрешений. Костылять такие вещи на основе какого-нибудь material или antd заебно, поэтому пишут свое.
Ты либо искать не умеешь, либо любитель писать велосипеды. Скорее всего второе.
Даже если что-то не устраивает в готовом, то легче изменить его и подстроить под свои нужды, чем писать всё с нуля.
Alert не подтверждает действие, он просто блокирует экран и показывает оповещение, название так и переводится. На твоём скрине тоже нет подтверждения, просто кнопа для закрытия модального окна.
Учел, спасибо.
Да-да, у всех компаний со своими дизайн-системами разработчики просто слишком глупые и не догадались взять antd или material. Не пробовал пойти в Яндекс или Альфу поработать? Сэкономишь им кучу денег своими идеями.
О, а если писать все в App.js то рендер вообще один раз будет
>это не твоё
Как же вы заебали, это какой-то мем местный? Так вообще на любой вопрос в любой сфере отвечать можно. То, что мне было нужно, называется паттерны проектирования, спасибо короче, сам нашел нахуй
https://puzzleweb.ru/javascript/examples/document_queryselector.php
<p class="test1">Абзац2.</p>
function foo() {
var matches = document.querySelector(".test1");
matches.style.backgroundColor = "yellow";
}
Не очень понимаю чему равно matches, это ведь не только текст из test1 или и форматирование еще? Потому как alert (test1); выводит "undefined".
Ну и основной вопрос как через alert вывести текстовое значение этого test1 а именно "Абзац2."
>Яндекс или Альфу
Хороший пример того, что собственные разработки на порядок хуже готовых решений.
>Так вообще на любой вопрос в любой сфере отвечать можно
Не на любой. Если ты в балет собрался идти в 20 лет, то тебе скажут, что это не твоё и будут правы. Если ты собрался идти в бизнес имея 20к рублей на банковском счёте, то тебе скажут, что это не твоё и будут правы. Если ты собрался стать чемпионом мира по шахматам в 20 лет, то тебе скажут, что это не твоё и будут правы. Если ты инвалид без ног, то тебе скажут, что бег это не твоё и будут правы.
Не понимаю почему тебя это так удивляет.
>Значению которое возвращает метод querySelector объекта document.
И что это за значение в данном случае? Понятно что он это возвращает, я не понимаю взаимодействия с хтмлем. Он ведь возвращает не просто текстовую строку "Абзац2." а что-то еще.
И как этот "Абзац2" вывести через алерт, должно быть что-то вроде алерт (матчес.валуе), блядь короче не знаю тупость какая-то пока не вник в основы синтаксиса, в хэлпах тоже дичь.
>Не на любой. Если ты в балет собрался идти в 20 лет, то тебе скажут, что это не твоё и будут правы. Если ты собрался идти в бизнес имея 20к рублей на банковском счёте, то тебе скажут, что это не твоё и будут правы. Если ты собрался стать чемпионом мира по шахматам в 20 лет, то тебе скажут, что это не твоё и будут правы. Если ты инвалид без ног, то тебе скажут, что бег это не твоё и будут правы.
ОО так у нас тут able body privilege, таких на западе быстро с небес спускают и в специальных легерях толерантности переучивают, безногие вполне могут стать чемпионами среди своих же безногих
>Если ты собрался создать частную космическую компанию тебе скажут, что это не твоё и будут правы.
>Если ты собрался стать богатейшим человеком в мире работая в магазине одежды кассиром в 34, тебе скажут, что это не твоё и будут правы
Ну ясн
>И что это за значение в данном случае?
Открываешь документацию, смотришь на возвращаемый тип. В случае c querySelector это HTMLElement. Далее смотришь что это за HTMLElement и какие свойства у него есть. Если тебе нужен текст этого HTMLElement то ищешь какое свойство вернёт тебе текст который содержится в этом HTMLElement, если такое вообще есть.
Ты просто с жопы учить начал. Основ не знаешь, но уже полез использовать методы каких-то стандартных объектов, поэтому всё для тебя выглядит как какая-то магия.
Бля, чел, вопрос был о паттернах проектирования, всё. Хули ты порвался? Пиздец я хуею с этого самомнения
>безногие вполне могут стать чемпионами среди своих же безногих
Ну да, только это не бег будет. И существовать это может только благодаря спонсорству людей с ногами, при этом не во всех странах и не для всех безногих, но людям вроде тебя свойственно верить в розовый манямирок, потому что иначе они впадают в депрессию от несправедливости мира.
Родился человек умственно отсталым - никак из него ты ученого не сделаешь. Насколько нужно быть тупым чтобы это отрицать?
>Если ты собрался создать частную космическую компанию
Но при этом твой отец не владелец богатой компании, которая помогла воспитать из тебя успешного человека, то тебе скажут, что это не твоё и будут правы.
Про кассира ничего не знаю. Скорее всего какая-то очередная охуительная история успеха для хомячков вроде тебя.
Поздравляю, ты выучил новое магическое заклинание.
У меня нет такого, только return
Какую нахуй правду блядь? Ты сам выдумал себе какое-то утверждение, сам его опроверг и теперь пытаешься указать на неправоту изначального утверждения, который ты сам и высказал. Ты сам с собой споришь шиз
html и css не хочешь сначала выучить?
Так пойди, и объясни им это.
Скажи им, что ты с двача, эксперт - они обязательно прислушаются.
Я совершенно уверен, что твои критерии "лучше/хуже" бесспорны, и им станет так стыдно, что они даже дадут тебе денег за консультацию.
Я делаю.
И другие делают.
Джаваскрипт + html = параша.
Тут понятие "уже есть готовое" неприменимо в 90% случаев.
Если ты не школьник, конечно.
>ряя ани зарабатывают миллионы паетаму ты им должин сапог цилавать и мочу их глатать яскозал!!
Проиграл с этого человека с моделью рабсиянина с ног до головы. Если хочется более детального разбора, то есть куча статей на хабре, по крайней мере по яндексу, которые говорят почему их проекты дерьмо в плане дизайна и ux. Но это и на собственном опыте можно узнать, достаточно не жить с установкой "богатый - значит не подвержен критике".
Чувак, чтобы научиться программировать, нужно примерно 10 лет.
Это не шутка. Это тебе скажет любой, кто умеет.
В том числе, по этой причине, например, в JS столько говна.
Потому, что дети пишут код. И результаты - соответствующие.
>Тут понятие "уже есть готовое" неприменимо в 90% случаев.
>Если ты не школьник, конечно.
>любая статья, любая книга, любое учебное пособие учат не пилить велосипед и использовать готовое решени
И давно это школьники начали так хорошо в веб-программировании разбираться и учить других?
Примеры у тебя говно конечно.
Начни с изучения
https://learn.javascript.ru/
Как всё выучишь и если не поймёшь - тогда приходи или выкатывайся из прогерства, лел.
Ну всё, готовь плеть для самобичевания, ведь твой любимый Яндекс и Альфа банк ведут блоги на хабре и регулярно публикуют на нём статьи.
>var matches
Вот, отличный пример того, как русская школота пишет учебники.
У него объект возвращается, а имя переменной, блядь, "matches".
А потом на каком-нибудь хабре учит людей жить, умудрённый опытом автор учебников по JS, лол.
>У него объект возвращается, а имя переменной, блядь, "matches".
А как нужно было назвать? objectMatches?
С чего ты взял про "любимый" Яндекс etc?
Я, всего-лишь, написал, что js+html+css = сильносвязанная параша, которую в 90% случаев проще написать заново, чем переделывать под себя.
Гораздо продуктивнее использовать либы типа popper и т.п., а собственно реализацию меню делать свою. Речь идёт о больших проектах, естественно.
Нужно было назвать elt или element.
Не говоря уже о том, что слова match, matches имеют стойкую ассоциацию с regex (или boolean).
Любой программист увидя matches или match ожидает от правой части использование регулярного выражения. В данном случае следовало бы объявить переменную targetElement
Токсик защищает своей право быть душным мудилой, спешите видеть. Такие как ты, одна из главных проблем IT, если не человечества в целом, без шуток.
Какой-то рандом написал на Хабр статью про плохой UX Яндекса и ты из этого делаешь вывод что собственные ui-киты не нужны? Найс логика, конечно.
Я делаю эти выводы из собственного опыта. И говорить "собственные киты нужны, потому что у яндекса нет" в корне неверно, хотя бы потому что яндекс, в отличии от 90% разработчиков, может позыолить себе содержать отдельный отдел, который эти киты создает.
Блядь, такого я ещё не видел.
Так ты не гадай, а попытайся разобраться как что работает. Если не получается, значит сложновата еще задача для тебя.
Убегай быстрее, сейчас придет местный ЭтоНеТвоё-шник и пояснит тебе за твой жизненный выбор.
Не нужно мешать всё в одну кучу.
Асинхронные вещи (промисы, async|await) должны у тебя делаться где-то отдельно. Потом, после завершения, должен измениться стейт. А реакт его просто отрендерит.
Для более конкретных советов недостаточно подробностей.
По какому событию что происходит и т.д.
Если ты лезешь в неведомые дебри и делаешь хуйню наобум вместо того, чтобы изучить доку по нужному направлению - это действительно не твое.
Его или не его - человек решает сам.
Попытайся это понять.
Программирование - достаточно сложное дело, чтобы быть пугающим само по себе.
Дополнительные хуеплёты-пугальщики не нужны.
Чому? Это же прекрасный способ учиться чему-то.
Тебя это пугает потому что твоя мамка и твоя бабка внушили тебе, что в этом мире нужно всего бояться, от всего убегать, а не принимать реальность с трезвой головой, взвешивая все за и против.
я понял но мне нужен именно вариант для телеги там такие подтверждения можно прописать тоже
Никогда не имел дела с этим.
Но, беглый гуглинг "node-telegram-bot-api user confirmation" находит вот это, например:
https://github.com/yagop/node-telegram-bot-api/issues/663
Там, насколько я понял, основная проблема (в отличие от браузера), в том, что ответ приходит "с той стороны", асинхронно. И нельзя просто вывесить confirm-диалог, и ждать ответа пользователя.
аа ну хуево тогда, ну спасибо может и получится че
очередной вкатыш-окатыш ищет волшебную таблеточку
А в чем конкретно проблема возникает? Такой же компонент как и любой другой. Ну, монтировать иногда удобнее ближе к корню, это через порталы легко решается.
Создать компонент обертку modal на самом верху и передавать туда конкретные диалоговые сценарии(компоненты) в качестве children через state.
как тебе такой паттерн?
>в качестве children через state
Што? Как ты хочешь прокидывать детей наверх, да еще и через стейт? Звучит бред какой-то. Должно быть так:
const [isModalVisible, setIsModalVisible] = useState(false);
<Modal isVisible={isModalVisible} onRequestClose={() => setIsModalVisible(false)}>
{/modal content/}
</Modal>
В реакте еще никогда прежде так остро не стояла проблема модальных окон.
Ой плиз. Пока Modal не обернут в React.memo абсолютно никакой разницы нет.
Да и хуй с ним, modal content тоже будеть новый на каждом рендере
>Што? Как ты хочешь прокидывать детей наверх, да еще и через стейт?
на vue через слоты можно даже аллаха передать
Это делает написанное меньшей бессмыслицей? Почему ты вообще решил поделиться этим фактом?
Если основная тема JS, то да, если в рамках другого языка, например, книга для фуллстека с упором на бэкенд, то не всегда.
Копипасты смотришь. Я чёт ни разу свежих статей не видел с var. Встречаю только в устаревшей документации.
Дайте линк пожалуйста, ну или на что-то аналогичное.
А вот такие
https://react-redux.js.org/api/hooks
With mapState, all individual fields were returned in a combined object. It didn't matter if the return object was a new reference or not - connect() just compared the individual fields. With useSelector(), returning a new object every time will always force a re-render by default.
Почему?
Ну и в чем разница? С connect у тебя будут те же самые ререндеры, если селектор каждый раз возвращает новый объект и ты передаешь его как поле. Это вопрос не к хукам, а к тому что селекторы надо писать нормально.
Ну ебановрот, connect один и ты вынужден пихать туда все селекторы и возвращать объект, а useSelector может быть сколько угодно. Алсо там может возвращаться любое значение и никакого смысла в shallow compare нет.
Мемоизация должна только оптимизировать производительность. Если она у тебя на логику влияет, значит ты что-то не так делаешь.
Если в хедере или нав панели торчит счетчик сообщений, а эти элементы ререндарятся даже если не было новых сообщений и в этих элементах нет других завязок на стейт, какого хуя происходит?
Подскажите, пожалуйста, хорошую смузийную в Киеве.
Вот чтобы так можно было прийти и посидеть с MBP попивая смузи.
Есть вариант что это сгенеренный код.
Пиздуй в отладчик смотреть что изменялось, в 99% это колбэк пересоздающийся на каждом рендере.
Осло, сикретики реакта:
>nesting children defeats memoization
https://gist.github.com/slikts/e224b924612d53c1b61f359cfb962c06
В чем секретик-то? По-моему это и так очевидно, если подумать над вопросом хотя бы минуту.
Используется там гле команда разработчиков не состоит из ддунов-студентов и недельных вкатунов.
HtDP прочитай.
Согласен. На данный момент лучший инструмент, для построения сложных приложений.
https://pastebin.com/HDiv9AXa
Вот только реакт проще в изучении, а это очень серьезны аргумент в сторону порешания рыночком
Потому что тебе обидно? Ведь других оснований для твоего высера нет, потому что у ангуляра есть всё из коробки и даже у новичков не возникает вопросов вида "пук среньк как передать стейт родителю"
В итоге рыночек получает плохообучаемую макаку, которая деплоит в прод через месяц то, что на ангуляре делается за неделю. Про уровень поддерживаемости и говорить нечего, реакт нервно курит в сторонке.
Да. На запрос "/" шлешь index.html и сервис папку диста, как статику, чтобы в индекс подтягивался твой жабаскрипт.
На том же хероку еще и cowboy по умолчанию будет стоять перед твоей нодой . То есть по-сути даже nginx настраивать не надо.
Отбой, вызвал интервал с нужной функцией внутри за пределами обьекта.
Везде торренты с файлами, где в книге "н" перепутано с "п".
Посоветуйте где онлайн учиться ЖС лучше?
Жирно. Это все равно что изучать математику читая телефонный справочник
Нахуй тебе это древнее говно да еще и настолько уёбски написанное? Найди лучше курс какой-нибудь на udemy и купи бесплатно на торрентах
Советую пройти какой-нибудь более-менее законченный курс, а потом уже практиковаться делая свои небольшие проекты, решая задачки на codewars и т.п
Просто так вне контекста учить функции, методы и прочее будет довольно трудно. Это все по мере необходимости можно нагуглить, а более общее понимание того, как и почему именно так пишется код, приходит после прохождения урока по чему-то более-менее законченному. Ищи на всяких udemy, coursera и т.п. Ну а где купить со 100% скидкой сам знаешь. Алсо, если английский не идеальный, ищи курсы на русском, это нормально, хорошие курсы на русском тоже есть.
Юзай вместо селекта v-list с <v-row><v-col> с соответствующей математикой четности.
В частности внутри функции или класса, если это на что-то вообще влияет.
типа:
_apiBase = "https://google.com"
при том что все остальное использует дальше const и т.п. Почему не const _apiBase?
Могу на ангуляре набросать.
Единственное что нашел, это то, что таким образом внутри функций можно объявлять глобальные переменные, но дальше по коду к этому значению ссылаются через this, это ведь значит, что эта переменная не доступна глобально?
>Что происходит когда ты объявляешь переменную вообще без какого-либо var/let/const?
>по коду к этому значению ссылаются через this, это ведь значит, что эта переменная не доступна глобально?
this может быть глобальным объектом, window в браузере, поэтому к объявленной глобальной переменной можно обращаться через this при условии что this ссылается на глобальный объект
Ну в том случае ссылаются на строку указанную в теле класса, вот такая апишка в общем https://codeshare.io/50kvov по уроку делал, тут в самом верху
Immer
В "тухлом жабомирке" он используется чисто по инерции.
Потому, что типа похож на "энтерпрайз" - сервисы, dependency-injection etc. Всё такое тяжёлое и основательное, как мы, джаваёбы, любим.
Конские библиотеки, тонны аннотаций, сотни страниц руководств, вот это вот всё.
И очень многие покупаются на знакомые буквы, лол.
Яша Файн аж два издания книжки выпустил про Angular + TS, типа "вам, джаваёбы!".
И там с первых строчек такой, блядь, пиздецкий тулинг, что просто нахуй закрываешь эту книжку - страшно. И это подаётся как selling point - типа смотрите, всё, как мы любим - как мавены, спринги, простыни конфигов, вся хуйня.
Но, тут на арене появляется Vue (а теперь и Vue 3).
И становится понятно, что вся эта монструозная хуета - просто шелуха и мимикрия под "как у взрослых", сделанная не от великого ума. И что на самом деле - она и на хуй не нужна, вот совершенно. Создатели Vue, как-бы, говорят нам - вот, смотрите - вот так выглядит Ангуляр здорового человека.
А так-то в жабамирке и GWT используется достаточно активно.
Более того, сам Гугол для сложных проектов использует как раз таки GWT, а Ангуляр, почему-то, не хочет. Возможно, они и купили его, в своё время, чтобы просто придавить. Если так, то у них получилось.
Вот так сделал.
https://codepen.io/stdenits/pen/pobGMbw
Теперь мне надо хотя бы подписать v-select'ы, если это вобще возможно.
Должно выглядеть так, как массив меток fansLabels, т.е. по порядке слева-направо.
Для них можно сделать собственный итератор?
>>56916
Братан, я могу. Только у меня не получается сделать так, как мне надо.
>>56918
Уже поздно что-либо менять.
>>56925
Не мой уровень.
А чего бы тебе не сделать свой компонент на базе v-select, раз уж ты так хочешь vuetify?
Это же как 2 пальца обоссать. И пиши там, что хочешь.
А, я думал тебе нужен один селект с выпадающим многоколоночным списком.
http://website.com/item/50?key=secretkey123
данные приходят
а просто по
http://website.com/item/50
данные не приходят
Вот этот вот ключ нельзя же нигде указывать при написании кода, его нужно как-то зашифровать или что? Я просто еще такого доступа к беку не делал, куда гуглить?
Или такие ключи можно показывать публично? Сам ключ я получил заполнив заявку у поставщиков базы данных, они просто дают тебе доступ к своей системе, в которой хранятся данные по музыкантам, исполнителям и т.п. Т.е. ничего секретного там нет, но я так понимаю с этим ключём можно израсходновать мой лимит по запросам, если кто-то себе его заберет?
Ах ну да, и в догонку, если я исходники потом публично буду выкладывать, мне же в любом случае сам этот ключ никуда в код зашить нельзя будет? Где его хранить-то?
А, я забыл, что в JS кто-то под классами может подразумевать реальные классы, а не объекты.
В данном случае это просто публичное поле объекта. Тоже самое что
const x = function() {this._apiBase = "www.google.com"};
и потом
let instanceOfX = new x();
instanceOfX._apiBase // "www.google.com"
Можешь в эту хуйню не вникать, классами в JS никто не пользуется. Если кому-то нужны классы, то используют Typescript.
Подобные ключи хранятся на сервере. На фронте идёт запрос к твоему сайту, а уже на сервере идёт запрос к http://website.com/item/50?key=secretkey123
Можно конечно через твой сервер тоже самое получать, но так ты хотя бы сможешь контролировать это, а если будешь хранить в коде ключ, то его смогут использовать без твоего ведома.
Там как-то многовато бойлерплейта.
Можно же так (для примера):
return {id: this._extractId(starship), ...starship};
И т.п.
Не говоря уже о том, что непонятно, почему в самом объекте нет id, и его нужно экстрактить из url. Пару байтов сэкономили?
Выглядит как код ради кода.
Ну, тебе виднее, конечно.
>Изучаем программирование на HTML5
https://t.me/progbook
Тут есть много книг. Такой как ты написал, вроде нет, но полно других по той же теме
>Всё такое тяжёлое и основательное, как мы, джаваёбы, любим.
>Конские библиотеки, тонны аннотаций
На выходе в прод, ангуляровские приложения имеют размер не больше реактовских. С вуем предполагаю что та же история.
Так что твой пост, просто замыливание глаз.
Объект в data, в котором расписано то, что ты хочешь.
И который будет отрендерён по шаблону. И перерендерён при изменениях, если надо.
Такое ощущение, что ты немножко недопонял не то что суть Vue, но и вообще суть всех подобных mvvm|mvvc|mvxxxxxxx фреймворков, и пытаешься ломиться в открытую дверь.
Речь была не о "выходе в прод". А о процессе разработки, и о том, с какими абстракциями имеет дело разработчик.
Тащить java-подходы в лёгкую и динамичную js-среду - это не от большого ума. Это называется overdesign. "Написали длинно, потому, что коротко написать не было времени" (или не хватило таланта).
Но, я никого ни за что не агитирую, просто высказал своё мнение.
Нравится Ангуляр и есть возможность писать на нём - пиши, ни на кого не оглядываясь.
Чувак, чувак пока ты ещё здесь... Спасибо за помощь.
Подскажи ещё как передать уникальный ID для каждого из 15-ти v-select'ов?
Раньше использовал и получал индекс изменённого селекта:
<v-select
v-for="(el, index) in fansLabels"
:key="index"
//
@change="changeFanCfg($event, index)"
></v-select>
А сейчас как-нибудь можно выкрутиться?
Ну они меняют названия свойств с снейк кейса на камел кейс. Но всё равно можно было всё в одной функции для всех делать:
_transform(target) => {
return {
id:this._extractId(target),
...Object.getOwnPropertyNames(target).reduce((res,p)=>(res[this.toCamelCase(p)]=target[p], res);
}
}
Какие, блять, абстракции, поехавший? В Ангуляре всё разложено по полочкам - вот тебе компонент в виде ts, вот тебе его шаблон в виде html, вот тебе его стили в виде css, вот тебе модуль который будет объединять компоненты. Если есть что-то глобальное, то пожалуйста, регестрируй как сервис и внедряй в конструктор компонентов в которых этот сервис будет использоваться, получая чистый код в котором не насрано. В компоненте описываешь логику получения данных и сами данные, в шаблоне с этими данными работаешь.
Где ты там абстракции увидел?
Id (html id) или key (для vue)?
И, я же не знаю, как у тебя там "сейчас".
Если нигде нет индекса, почему-то, то можно просто сделать computed-свойство со счётчиком, наверное, но, это надо пробовать.
Но, по идее, у тебя же заранее известно количество этих селектов и их содержимое, в том числе, и какой должен быть id?
Создай для каждого объект-модель типа {id: 1, name: 'Name 1', items: [...]}, и помести их все в массив. И в цикле v-for отрендери. Свойства объекта - в :атрибуты (properties) компонента. Вот и будет у тебя id или key для каждого.
И да, v-for не обязательно делать именно для селекта.
Можешь в див его обернуть, и v-for писать в диве.
Или див, а в нём три селекта, у тебя же так?
Я бы, наверное, вообще сделал свои компоненты, без v-select - работы чуть больше, но, полный контроль. Но, и див поверх v-select - это уже первый шаг к своему компоненту-обёртке.
>Можешь в эту хуйню не вникать, классами в JS никто не пользуется.
А зачем тогда во многих джаваскриптовых вакансиях требуют знание ООП?
>лёгкую и динамичную js-среду
ну ты и соня, тебя даже вчерашний шторм не разбудил, привет тебе из 2000х от вара жкверского
пример простой, неси про ))))))))))))
>Id (html id) или key (для vue)?
А чем являлся index в v-for? Это же просто счётчик.
>И, я же не знаю, как у тебя там "сейчас".
Хочу сделать как в наброске из кодепена.
https://codepen.io/stdenits/pen/pobGMbw
Я хотел бы передать уникальный номер посредством аргумента в @change="changeFanCfg($event)"
Думал подстановка, типа @change="changeFanCfg('${k}', $event)" проканает, но передаётся просто фиксированный текст.
>Но, по идее, у тебя же заранее известно количество этих селектов и их содержимое, в том числе, и какой должен быть id?
Да, надо 15-ть селектов. С v-row \ v-col решил заморочиться из-за того, что так они просто в одну колонну идут вертикальную, а как раскидать по 3х5 и уменьшить размер я не знаю, не разобрался ещё.
>Или див, а в нём три селекта, у тебя же так?
Нет, не так.
1. Object.freeze осуществляет поверхностную заморозку.
2. a:b[0].a = 30
Кого ты пытаешься наебать? Гитлера, Иисуса или интерпретатор?
на обо рот
>a:b[0].a = 30
Хочешь сказать что нужно делать так a:30?
И вообще нахуй ебаться с мутабельностью если среакт один хуй отрендерит заново тк стейт поменяется? А он поменяется тк мы туда посадим новый массив со старыми оьектами и одним новым
Нет, в "Программируем на HTML и CSS" ничего нет про JavaScript. Я читал.
В "Программируем на HTML5" про даваскрипт есть.
<form [formGroup]="form" ngIf="loaded && itemCount > 0" >
(то есть я хочу чтобы таблица показывалась уже после того как будет установлен this.loaded=true и количество айтемов, подгруженное с бэка, будет больше 0)
Только эта падла умудряется подгружаться через раз. Когда загружаешь страницу есть шанс 50% что форма не будет отображаться, при этом в консоли ошибок нет
detectChanges/markForCheck
ЧТобы меньше плотить, потому что никто не знает
На бэке ессесна
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
ПЕРЕКАТ >>1857542 (OP)
Это копия, сохраненная 13 апреля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.