Этого треда уже нет.
Это копия, сохраненная 13 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
image56 Кб, 1050x1050
JS Thread #202 /js/ 1950886 В конец треда | Веб
Предыдущий тред: >>1944376 (OP)
Больше пары строк кода в посте или на скриншоте ведут в ад.

Для программирования на HTML https://codesandbox.io
Для Node.js с консолькой https://repl.it/languages/nodejs

Если рассчитываешь получить дельный ответ, сформулируй правильно вопрос: «что я хочу получить, что я для этого делаю, что я вместо этого получаю». Если когда самостоятельно найдёшь решение — поделись в треде, мы за тебя переживаем.

Документация - https://developer.mozilla.org
Руководство для вката - https://github.com/acilsd/wrk-fet#javascript
Старая паста, частично устарела - https://pastebin.com/9yRADC0s
2 1950888
первый нах
3 1950916
На каком стэке синьоры-помидоры в нынешнем году сидят?
4 1950917
>>0916
На битриксе
5 1950920
>>0916
ng ngrx
6 1950923
>>0886 (OP)
Как создавать синглтоны? Так:

const singleton = {
поле: значение,
метод: function() {}
}

Или так:

class Singleton {
поле = значение;
метод() {}
}
const singleton = new Singleton();

Как правильнее?
7 1950930
8 1950940
>>0923
var singleton = {
"поле": "значение",
функция: () => {}
}
9 1950945
>>0923
Как хочешь, но это не синглтон ни в одном из вариантов и к паттерну отношения не имеет.
10 1950959
>>0916
vue3/nuxtjs
11 1950972
>>0945
А как тогда синглтон делается? Я думал, что синглтон - это просто единственный экземпляр какого-то класса. По крайней мере так в примерах Википедии или где-то ещё видел.
12 1950978
>>0945
>>0972
А, перечитал Вики, короче синглтон должен запрещать создание новых экземпляров, возвращая самого себя в случае попытки пересоздания. Ну, это всё мне не важно, меня интересовал только синтаксис.

>>0940
Мне синтаксис тут не нравится, через class удобнее. Тем более что можно использовать наследование (extends) и есть конструктор...
13 1950979
>>0978
В зависимости от ситуации. Если у тебя есть набор логически связанных действий и данных, служащих одной конкретной цели, то удобнее и красивее будет объявить хорошо названный класс с продуманным интерфейсом, чем дрочиться с обычным объектом-хэшмапой. Если же ты просто хочешь запихать что-то в одно место, мержить это что-то с другим чем-то, убирать оттуда куски и т.д, то удобнее будет просто сделать объект, чем дрочиться с конструкторами и this.
14 1950986
>>0979

>дрочиться с this


Эээ... я уже обдрочился этим this, есть способ обращаться к полям/методам класса без обязательного указания this? В других ЯП я никогда не встречал такого частого обращения к this/self (пытаясь убрать this, консоль срёт сообщениями "ололо не найдено").
15 1950987
>>0986
Нет.
16 1950996
>>0986

>не встречал такого частого обращения к this/self


В php погляди на любой класс, он на половину состоит из $this-> или python, там тоже кругом одни self в классах. В других языках просто поведение this более предсказуемо, чем в js
17 1951000
>>0987
Ладно.
А локально сокращать код как-нибудь можно?
Вот у меня часто бывает что-то вроде такого:

>for (let i in this.parent.items)


>if (this.parent.items[ i ] !== this)


>this.parent.items[ i ].close();


В некоторых языках есть оператор with, можно ли сделать так:

>with (this.parent)


>for (let i in items)


>if (items[ i ] !== this)


>items[ i ].close();


? А то конструкции уж больно монструозные получаются.
Предполагаю, можно сделать так:

>const p = this.parent;


>for (let i in p.items)


>if (p.items[ i ] !== this)


>p.items[ i ].close();


Т.к. parent - объект, то в p копируется только ссылка.
Но не сильно ли такой способ "сокращения" загружает JS-машину?
18 1951014
>>1000

>Но не сильно ли такой способ "сокращения" загружает JS-машину?


Ты рофлишь? Если только у тебя на 1 миллион таких объектов, вообще нет смысла делать эти микрооптимизации. То же касается циклов, нахуя тебе for если есть forEach, map, reduce.
19 1951015
>>1000

>for (let i in this.parent.items)


>if (this.parent.items[ i ] !== this)


>this.parent.items[ i ].close();



this.parents.items
.filter(item => item !== this)
.forEach(item => item.close());
20 1951021
>>1015
const closeItem = item => item.close();

const closeItems = pipe(
reject(equals(this)),
forEach(closeIte )
)

closeItems(this.parent.items);

Пофиксил маньку

мимо ramda господин
21 1951025
>>1021
Нечитабельно
22 1951028
>>1025
Как раз-таки читается как обычный английский.

reject [what] equals this
for each close item
23 1951037
>>1014
Я знаю только что интерпретаторы медленные и сайты с обилием JS на моём компе/телефонах часто тормозят, NoScript их ускоряет. Не хочу идти по чужим граблям и нагружать интерпретатор мусором.

>если есть forEach, map, reduce


Слышал о таком, никогда не использовал, надо погуглить.

>>1015
Я привык всё вручную делать, императивно. ФП вообще боюсь, тёмный лес. А это делается только для удобства программиста или filter() и forEach() будут быстрее одного for с if'ми? Просто как по мне, for и if читабельнее, ближе к тому, как я представляю решение задачи. Я читаю это примерно так: "для каждого i в items, если items не этот объект, то закрыть его". А твоя запись хоть и понятна, но не читается, что-то вроде "фильтровать items, убрав этот объект, затем каждый закрыть"? Мастера Йоды получается код)

>>1021
Это вообще непонятно, это ФП или что-то новое? Как гуглить?
>>1025
Согласен.
1231231.png38 Кб, 825x501
24 1951056
>>1037

>Не хочу идти по чужим граблям и нагружать интерпретатор мусором.


Это как говорить что не хочу портить океан и ссать в него. Нужно нагрузить очень много джаваскрипта в память, чтобы вызвать тормоза хоть на пару миллисекунд на уровне языка. 99% тормозов в веб-приложениях из-за DOM, то есть обновления самой страницы и ререндеринга, а не из-за вычислений переменных в JS'е. В примере выше

>this.parents.items


>.filter(item => item !== this)


>.forEach(item => item.close());



Мы делаем 2 цикла, вместо одного, как в императивном подходе, но это не имеет никакого значения пока у тебя в массивах меньше 10к элементов.

>>1037

>Я привык всё вручную делать, императивно. ФП вообще боюсь, тёмный лес.


Ну тогда тебе будет тяжело найти работу, т.к. на фронте сейчас ФП подходы более приветствуются, т.к. читаемость и расширяемость кода это одна из главных характеристик хорошего кода, а не пикосекунды исполнения. Вызывание функций намного более читабельнее и реюзабельней, чем портянки из if и for. Конечно, в твоем примере разницы никакой нет, но добавь туда еще 1-2 проверки и еще одно действие которое надо будет выполнить над items (а это зачастую и нужно сделать в реальных проектах рано или поздно) и ты уже получаешь лапшу:

>for (let i in this.parent.items)


>if (this.parent.items[ i ] !== this && this.parent.items.isOpened)


>this.parent.items[ i ].close();


>if (this.parent.items.hasSomething)


>this.parent.items.doSomething();



Это нечитабельный и очень императивный код в своей основе. Конечно, он кажется читаемым потому что ты написал его 5 минут назад и ТЫ написал его. Но для других программистов нужно прикладывать когнитивные усилия, чтобы осмыслить цикла, доступа к объекту, проверке !== и вызове метода. В подобном коде легко сделать ошибку.

В функциональном подходе из-за того что код разделен на мелкие, но хорошо делающие свои работу функции, код очень легко расширять, менять и читать. Циклы, проверки и другие частые операции уже вынесены в функции и тебе не нужно переживать что кто-то где-то скипнул часть цикла или поменял элемент внутри массива по ошибке.

Но, безусловно, есть некий порог входа и в самом начале изучения ФП код кажется более СЛОЖНО читаемым. Но через некоторое время практики ты будешь удивляться, как теперь весь код для тебя это процесс вычислений значений и будет сложно писать в императивном стиле (потому что на него нужно тратить больше усилий).

В любом случае, не обязательно нырять в функциональный подход на 100, более того зачастую это невозможно, потому что код над которым ты работаешь это легаси от прошлых разрабов или команда в которой ты работаешь слабая по скиллу и может только хреначить портянки на jQuery сам начинал с подобного.

В твоем случае forEach и filter предпочитаемы итеративному обходу и проверке, просто небольшой совет.
1231231.png38 Кб, 825x501
24 1951056
>>1037

>Не хочу идти по чужим граблям и нагружать интерпретатор мусором.


Это как говорить что не хочу портить океан и ссать в него. Нужно нагрузить очень много джаваскрипта в память, чтобы вызвать тормоза хоть на пару миллисекунд на уровне языка. 99% тормозов в веб-приложениях из-за DOM, то есть обновления самой страницы и ререндеринга, а не из-за вычислений переменных в JS'е. В примере выше

>this.parents.items


>.filter(item => item !== this)


>.forEach(item => item.close());



Мы делаем 2 цикла, вместо одного, как в императивном подходе, но это не имеет никакого значения пока у тебя в массивах меньше 10к элементов.

>>1037

>Я привык всё вручную делать, императивно. ФП вообще боюсь, тёмный лес.


Ну тогда тебе будет тяжело найти работу, т.к. на фронте сейчас ФП подходы более приветствуются, т.к. читаемость и расширяемость кода это одна из главных характеристик хорошего кода, а не пикосекунды исполнения. Вызывание функций намного более читабельнее и реюзабельней, чем портянки из if и for. Конечно, в твоем примере разницы никакой нет, но добавь туда еще 1-2 проверки и еще одно действие которое надо будет выполнить над items (а это зачастую и нужно сделать в реальных проектах рано или поздно) и ты уже получаешь лапшу:

>for (let i in this.parent.items)


>if (this.parent.items[ i ] !== this && this.parent.items.isOpened)


>this.parent.items[ i ].close();


>if (this.parent.items.hasSomething)


>this.parent.items.doSomething();



Это нечитабельный и очень императивный код в своей основе. Конечно, он кажется читаемым потому что ты написал его 5 минут назад и ТЫ написал его. Но для других программистов нужно прикладывать когнитивные усилия, чтобы осмыслить цикла, доступа к объекту, проверке !== и вызове метода. В подобном коде легко сделать ошибку.

В функциональном подходе из-за того что код разделен на мелкие, но хорошо делающие свои работу функции, код очень легко расширять, менять и читать. Циклы, проверки и другие частые операции уже вынесены в функции и тебе не нужно переживать что кто-то где-то скипнул часть цикла или поменял элемент внутри массива по ошибке.

Но, безусловно, есть некий порог входа и в самом начале изучения ФП код кажется более СЛОЖНО читаемым. Но через некоторое время практики ты будешь удивляться, как теперь весь код для тебя это процесс вычислений значений и будет сложно писать в императивном стиле (потому что на него нужно тратить больше усилий).

В любом случае, не обязательно нырять в функциональный подход на 100, более того зачастую это невозможно, потому что код над которым ты работаешь это легаси от прошлых разрабов или команда в которой ты работаешь слабая по скиллу и может только хреначить портянки на jQuery сам начинал с подобного.

В твоем случае forEach и filter предпочитаемы итеративному обходу и проверке, просто небольшой совет.
25 1951076
Посоветуйте хорошие курсы для школьников
26 1951099
>>1076
А чем по-твоему школьники отличаются о не-школьников? Хочешь чтобы коров с собачками считали и картинки красивые? Бери обычные курсы и не выебывайся.
27 1951172
>>0886 (OP)
Мде, писал тут пасту про STMы, а модер взял и потёр тред, где я всё это писал, ну ладно.
28 1951174
>>1172

>модер взял и потёр тред, где я всё это писал


Вот пидор.
29 1951176
>>1174
Вот и я про то.
Там было про MobX & MST, recoil, overmind, xstate.
Суть: ничего более естественного чем redux-saga ещё не придумали.
30 1951187
>>1176
Что такое "естественное"?
31 1951193
>>1187
Наиболее декларативный, выглядящий как алгоритм. Рецепт какого-нибудь блюда видел?
32 1951202
>>1176

>redux-saga


Зачем? Зачем вы по воле собственной тащите эту ебанину в свои проекты? Я в целом про редакс.
33 1951206
Нормальная ли это практика делать один эвент листенер на ресайз окна в сторе, и потом передавать его во все необходимые компоненты? Есть много разных компонентов, и в каждом из них отдельно вешается эвентлистенер, и потом применяются стили в зависимости от размеров. Если я просто в сторе этот эвентлистенер повешу это нормально? Какие могут быть недостатки у такого подхода?
34 1951207
>>1193
Алгоритмы - императивны.
Рецепты в том числе.

Противоречишь сам себе.
35 1951215
>>1206
НОРМАЛЬНАЯ
image.png109 Кб, 383x280
36 1951224
37 1951229
>>1207
Окей, переформулирую.
Хорошо, представь себе список, где каждый шаг описан в декларативном стиле. Вот это то, что позволяет тебе саги.
>>1202
Я сравнил разные стейт-менеджеры и не нашёл ничего такого, что побудило бы меня начать юзать другой STM.
redux-saga - до сих пор лучшее, что есть для асинк флоу логики.
38 1951233
>>1229

>переформулирую


Это не отвечает на вопрос о естественности.
С чего ты решил, что декларативно естестевннее императивного?

Сравни.

1. Обуйся.
2. Надень шапку.

И

1. Ты обут.
2. Шапка надета.

С тобой в детстве мама в каком формате разговаривала, что для тебя второй более естественнен?
39 1951251
>>1233
То что ты выше перечислил выглядит естественным.

Неестественным это становится, когда ты смотришь на какой-то код и не понимаешь, что он означает, потому что он написан таким образом, что зависит от многих других частей.

Задача программиста - выразить сложный флоу естественным образом, чтобы он читался как рецепт, а не мешанина хуй знает чего.
40 1951254
>>1251
Декларативность не описывает флоу, она описывает реультат. Флоу описывает императивность.
41 1951261
>>1254
Скажем, императивность имеет разную степень абстрагирования.

Задача программиста - выразить сложный флоу таким образом, чтобы это всё было в читабельном для человека виде, а не только для машины.

const makeUsername = word |> stripSpace |> rejectNonalphabetic |> validateLength
5zSsrScYAMw.jpg171 Кб, 982x1472
42 1951262
Охладите естественное траханье в этом треде на минутку и задекларируйте тут ваше видение идеальной модульной архитектуры на жс. И как бы вы распиливали бы на модули огромное монолитное приложение, которое становится уже сложно поддерживать и которое собирается целую вечность.
43 1951266
>>1261
ты дебил блядь
44 1951272
>>1206
Так. У меня другая проблема. Я повесил эвент листенер. И он нормально передает значение в компоненты при ресайзе. Но вот в чем дело, мне нужно как-то считать initial размер окна еще до любого ресайза. Я бы мог просто присвоить начальное значение из текущего размера окна winWidth = windows.innerWidth. Но вот очевидно что ssr такое не понравится. И я не знаю как обратно к серверу передать значение из клиента. Чтобы на сервере тоже размер окна брался сразу с клиента, потому что если использовать всякие юзэффекты, то стили будут прыгать, потому что изначально значение будет браться из стора. В какую сторону гуглить?
45 1951274
>>1262
MVVM/MVI
Распилил бы на репозитори, сервисы, вьюмодели. Запилил бы DI.
Парафен!11
46 1951277
>>1274
удачи распиливать монолит с огромным сцеплением на репозитории.
47 1951285
>>1277
Один раз об такое уже споткнулся. Оказалось, что крайне неудобно бегать с репозитория туда-сюда, когда фактическая зависимость между кодом в разных репах осталась высокая. Многие изменения требовали вносить правки сразу в несколько репов, что оказалось просто болью.

Это, впрочем, не проблема разделения на отдельные репозитории, а проблема, что огромный монолит распилить красиво, что бы потом все было удобно и без зависимости друг от друга, действительно сложно. В итоге тот проект вернулся в один реп, но был поделен на несколько кусков которые могли собираться независимо друг от друга.
48 1951290
>>1277
>>1285
Бля, парни, я про репо в контексте паттерна ( https://developer.android.com/jetpack/guide#connect-viewmodel-repository ), а не структуры проекта.
49 1951304
>>1056
А что по функциональщине (конкретно для js) лучше всего почитать?
50 1951307
>>1290
Кек, ясно. Протупил.

Ладно, а что вы делает (идеально в контексте ts, но вообще не столь важно) с огромными классами в js? Extend? Mixins? Subclasses? Можно еще часть логики выделить во внешнею и пихать как DI.
51 1951315
>>1307
У нас DI на ридерах, сорри, не подскажу, что делать с большими классами, кроме очевидных советов.
image.png49 Кб, 613x403
52 1951328
53 1951335
useEffect вызывается как только компонент отрендерился, но в нем же делают запросы к api, без запроса к api нахуй рендерить компонент если в нем еще нет нужных данных?
54 1951336
>>1335

>useEffect ... в нем же делают запросы к api


У нас за такое стреляют нахуй.
55 1951338
>>1335
чтобы не показывать пустую страницу, пока у тебя запрос не зарезолвился
56 1951339
>>1336
Что не так? Где делать?
57 1951418
>>1056

>из-за DOM, то есть обновления самой страницы и ререндеринга


Кстати, как это правильно делать, если нужно вывести (div.append()) сразу много элементов?

>это не имеет никакого значения пока у тебя в массивах меньше 10к элементов


Я обычно программирую как привык. И если привыкну к неоптимальному подходу, буду использовать его всегда, а потом тратить время на поиск узких мест. Зачем писать неоптимально, если более быстрый вариант пишется нетрудно? Я же не ассемблерные вставки пишу. А то здесь два цикла, там два цикла, так и накопится снежный ком лишних действий, а потом поди разберись в нём.

>найти работу


Так а я и не ищу) Для работы нужно иметь кучу других качеств и навыков, кроме программирования на уровне любителя. Я пишу программы для своих задач и удовольствия, остальное меня не интересует.

>читаемость и расширяемость


Знаю и понимаю. Но функции - это не уникальная черта ФП. Портянку из for и if я дроблю на субфункции, когда становится непонятно, что происходит. И эти субфункции я могу назвать в соответствии с контекстом, не полагаясь на стандартное название из какой-то библиотеки.

>получаешь лапшу


Лапша - это когда в коде много связей между случайными участками, т.е. из многих мест идут обращения во многие места, из-за чего становится трудно понять, что на что влияет и как оно вообще работает. А длинный код не обязательно "лапша", его обычно можно разделить на отдельные функции, передавая результат от одной к другой.

Твой пример можно переписать читабельнее, но, во-первых, данными управлять должен сам элемент. Если данные нужно сохранить перед закрытием, то проверка и сохранение данных происходят в методе item.close(), а не в item.closeSiblings(), следовательно код упрощается.
Во-вторых, проверка открытости элемента производится опять же самим элементом в методе item.close(), потому что наше дело предложить ему закрыться, а ему решать, может ли он закрыться.
Тогда будет только:

>for (let i in this.parent.items) if (this.parent.items[ i ] !== this) this.parent.items[ i ].close();


А вот уже в close() будет что-то вроде:

>if (this.opened) { this.saveData(); this.toogle(); }


В saveData():

>if (this.needToSave) { ... }



...ну, ладно, один .forEach тут бы не повредил, типа

>this.parent.items.forEach(item => { if (item !== this) item.close() });


Но смысла в .filter() здесь не вижу. Фильтр был бы полезен, если бы мы потом с этим списком что-то сложное делали, т.е. сохраняли отдельно и редактировали...

А вообще я не пойму, в чём тут ФП? Это же императивные команды "сделай это", даже порядок соблюдается слева направо, а не наоборот. Против такого кода ничего не имею, пока названия функций имеют смысл (forEach = для каждого, в данном контексте нормально). Но большая часть виденного мной функционального кода читаемых имён не содержит (зато куча спецсимволов).

>код поделён на мелкие функции


Так и мой код тоже поделён на мелкие (по возможности) функции. Только у моих функций название есть и соответствует контексту/области видимости, а в функциональщине названий либо нет, либо они из спецсимволов и скобок.

Тот же цикл forEach, по-хорошему, часть императивного кода:

>for item in items do if item <> self then item.close();


Вот это максимально читаемый код, читается как русский язык:

>для каждого итема в итемс проверяем что это не мы и закрываем соседей


А если оборачивать в скобки и спецсимволы, получается нечитабельная фигня.

Вообще я фанат алгол-подобных языков, хочу обмазываться длинными словами из букв и не хочу контактировать со спецсимволами. Увы, в вебе есть только JS, но я уже не против, тут не так много спецсимволов, как во всяких сях.
57 1951418
>>1056

>из-за DOM, то есть обновления самой страницы и ререндеринга


Кстати, как это правильно делать, если нужно вывести (div.append()) сразу много элементов?

>это не имеет никакого значения пока у тебя в массивах меньше 10к элементов


Я обычно программирую как привык. И если привыкну к неоптимальному подходу, буду использовать его всегда, а потом тратить время на поиск узких мест. Зачем писать неоптимально, если более быстрый вариант пишется нетрудно? Я же не ассемблерные вставки пишу. А то здесь два цикла, там два цикла, так и накопится снежный ком лишних действий, а потом поди разберись в нём.

>найти работу


Так а я и не ищу) Для работы нужно иметь кучу других качеств и навыков, кроме программирования на уровне любителя. Я пишу программы для своих задач и удовольствия, остальное меня не интересует.

>читаемость и расширяемость


Знаю и понимаю. Но функции - это не уникальная черта ФП. Портянку из for и if я дроблю на субфункции, когда становится непонятно, что происходит. И эти субфункции я могу назвать в соответствии с контекстом, не полагаясь на стандартное название из какой-то библиотеки.

>получаешь лапшу


Лапша - это когда в коде много связей между случайными участками, т.е. из многих мест идут обращения во многие места, из-за чего становится трудно понять, что на что влияет и как оно вообще работает. А длинный код не обязательно "лапша", его обычно можно разделить на отдельные функции, передавая результат от одной к другой.

Твой пример можно переписать читабельнее, но, во-первых, данными управлять должен сам элемент. Если данные нужно сохранить перед закрытием, то проверка и сохранение данных происходят в методе item.close(), а не в item.closeSiblings(), следовательно код упрощается.
Во-вторых, проверка открытости элемента производится опять же самим элементом в методе item.close(), потому что наше дело предложить ему закрыться, а ему решать, может ли он закрыться.
Тогда будет только:

>for (let i in this.parent.items) if (this.parent.items[ i ] !== this) this.parent.items[ i ].close();


А вот уже в close() будет что-то вроде:

>if (this.opened) { this.saveData(); this.toogle(); }


В saveData():

>if (this.needToSave) { ... }



...ну, ладно, один .forEach тут бы не повредил, типа

>this.parent.items.forEach(item => { if (item !== this) item.close() });


Но смысла в .filter() здесь не вижу. Фильтр был бы полезен, если бы мы потом с этим списком что-то сложное делали, т.е. сохраняли отдельно и редактировали...

А вообще я не пойму, в чём тут ФП? Это же императивные команды "сделай это", даже порядок соблюдается слева направо, а не наоборот. Против такого кода ничего не имею, пока названия функций имеют смысл (forEach = для каждого, в данном контексте нормально). Но большая часть виденного мной функционального кода читаемых имён не содержит (зато куча спецсимволов).

>код поделён на мелкие функции


Так и мой код тоже поделён на мелкие (по возможности) функции. Только у моих функций название есть и соответствует контексту/области видимости, а в функциональщине названий либо нет, либо они из спецсимволов и скобок.

Тот же цикл forEach, по-хорошему, часть императивного кода:

>for item in items do if item <> self then item.close();


Вот это максимально читаемый код, читается как русский язык:

>для каждого итема в итемс проверяем что это не мы и закрываем соседей


А если оборачивать в скобки и спецсимволы, получается нечитабельная фигня.

Вообще я фанат алгол-подобных языков, хочу обмазываться длинными словами из букв и не хочу контактировать со спецсимволами. Увы, в вебе есть только JS, но я уже не против, тут не так много спецсимволов, как во всяких сях.
58 1951459
>>1233
Декларативные языки вообще несравнимы с императивными и имеют свою нишу, в которой императивные просто не нужны (пример - html).

Твой императивный пример:
- выйти на улицу:
- - одеться:
- - - снять домашнюю одежду
- - - надеть нижнее бельё
- - - надеть верхнюю одежду
- - обуться:
- - - надеть ботинки
- - - зашнуровать ботинки
- - надеть шапку
Он чётко описывает, что нужно сделать и как, задаёт последовательность. Машина просто считывает команды друг за другом и выполняет их как они есть, если они выполнимы данной машиной.

Декларативный:
- нужно выйти на улицу
- для выхода на улицу нужно быть одетым в уличную одежду, обутым и в шапке
- чтобы быть одетым, нужно надеть одежду
- чтобы надеть одежду, нужно снять одежду
- сейчас я в домашней одежде
- домашняя одежда это одежда
- уличная одежда это одежда
- чтобы быть в шапке, нужно надеть шапку
- чтобы быть обутым, нужно обуться
- чтобы обуться, нужна обувь
- ботинки это обувь
- после обувания в ботинки шнурки должны быть завязаны
и т.д. Я точно не знаю, набросал как сам понимаю.
Суть декларативного подхода в том, что ты просто сбрасываешь в одну кучу описания разных объектов и действий, а затем говоришь: "я хочу объект с такими-то характеристиками". И машина, используя описания объектов и действий, по каким-то своим алгоритмам находит способ создать требуемый объект, затем создаёт его и возвращает пользователю. Тебе не важно, как работает машина и какие решения она принимает для создания желаемого тобой объекта, тебе нужен только объект с какими-то характеристиками.

Вот более реальный пример:

><div style="border: solid 1px black; width: 100px; height: 50px; background: white"></div>


Это декларативный подход. Мы говорим машине: мне нужна коробка размером 100 на 50 пикселей, с чёрным контуром в один пиксель толщиной и белой заливкой. Как и что она будет делать нас не волнует, нам нужен результат.
В императивном стиле было бы так:

>canvas.pen.color = black;


>canvas.pen.width = 1;


>canvas.brush.color = white;


>canvas.rectangle(0, 0, 100, 50);


Здесь мы явным образом задаём параметры конкретных инструментов (canvas, pen, brush) и используем их для создания прямоугольника конкретным способом (описанным в методе rectangle). Нам важно, чтобы задача была выполнена именно с помощью этих инструментов и именно в такой последовательности. Когда же мы описываем <div> в html, нам совершенно без разницы, что и как будет делать браузер, лишь бы результат соответствовал ожиданиям.

Короче, декларативный подход используется чаще, чем кажется, и не нужно на него фукать, у него просто своя область применения.
58 1951459
>>1233
Декларативные языки вообще несравнимы с императивными и имеют свою нишу, в которой императивные просто не нужны (пример - html).

Твой императивный пример:
- выйти на улицу:
- - одеться:
- - - снять домашнюю одежду
- - - надеть нижнее бельё
- - - надеть верхнюю одежду
- - обуться:
- - - надеть ботинки
- - - зашнуровать ботинки
- - надеть шапку
Он чётко описывает, что нужно сделать и как, задаёт последовательность. Машина просто считывает команды друг за другом и выполняет их как они есть, если они выполнимы данной машиной.

Декларативный:
- нужно выйти на улицу
- для выхода на улицу нужно быть одетым в уличную одежду, обутым и в шапке
- чтобы быть одетым, нужно надеть одежду
- чтобы надеть одежду, нужно снять одежду
- сейчас я в домашней одежде
- домашняя одежда это одежда
- уличная одежда это одежда
- чтобы быть в шапке, нужно надеть шапку
- чтобы быть обутым, нужно обуться
- чтобы обуться, нужна обувь
- ботинки это обувь
- после обувания в ботинки шнурки должны быть завязаны
и т.д. Я точно не знаю, набросал как сам понимаю.
Суть декларативного подхода в том, что ты просто сбрасываешь в одну кучу описания разных объектов и действий, а затем говоришь: "я хочу объект с такими-то характеристиками". И машина, используя описания объектов и действий, по каким-то своим алгоритмам находит способ создать требуемый объект, затем создаёт его и возвращает пользователю. Тебе не важно, как работает машина и какие решения она принимает для создания желаемого тобой объекта, тебе нужен только объект с какими-то характеристиками.

Вот более реальный пример:

><div style="border: solid 1px black; width: 100px; height: 50px; background: white"></div>


Это декларативный подход. Мы говорим машине: мне нужна коробка размером 100 на 50 пикселей, с чёрным контуром в один пиксель толщиной и белой заливкой. Как и что она будет делать нас не волнует, нам нужен результат.
В императивном стиле было бы так:

>canvas.pen.color = black;


>canvas.pen.width = 1;


>canvas.brush.color = white;


>canvas.rectangle(0, 0, 100, 50);


Здесь мы явным образом задаём параметры конкретных инструментов (canvas, pen, brush) и используем их для создания прямоугольника конкретным способом (описанным в методе rectangle). Нам важно, чтобы задача была выполнена именно с помощью этих инструментов и именно в такой последовательности. Когда же мы описываем <div> в html, нам совершенно без разницы, что и как будет делать браузер, лишь бы результат соответствовал ожиданиям.

Короче, декларативный подход используется чаще, чем кажется, и не нужно на него фукать, у него просто своя область применения.
59 1951486
>>1459
Во-первых, зачем ты это все написал, если анон, которому ты отвечаешь, написал все то же самое, только короче.
Во-вторых, нить дискуссии была о том, с чего ТС взял то декларативное описание ЕСТЕСТВЕННЕЕ императивного. И вот теерь посмотри на свои описания алгоритмов в императивном и декларативном стиле, и скажи - какой из них ЕСТЕСТВЕННЕЕ для ЧЕЛОВЕКА.
60 1951510
>>1418

>И если привыкну к неоптимальному подходу, буду использовать его всегда, а потом тратить время на поиск узких мест.


Я даже представить не могу что нужно делать, чтобы узким местом было использование filter и foreach вместо одного for, ты там совсем ебанулся? Ты мне почему-то напоминаешь одного чувака, который, когда учился играть на пианино, спрашивал какой стороной подушечки пальцев нужно нажимать на клавишу.
61 1951607
Хочу тип, который бы принимал только те поля объекта (>Node), которые имеют тип Connection<любая хуйня>. Сделал вот так:

type Connection<T> = ...
type RequireConnection<T> = T extends Connection<infer X> ? T : never;
type Config<T extends Node, K extends keyof T> = {
connection: RequireConnection<T[K]>
...
}

При записи все нормально, иде подставляет нужные поля, но при чтении дженерика Config<any, any> она говорит А ВДРУХ БЛЯТЬ ВСЕТКИ НЕВЕР, и сует connection: any.
Что изменить?
62 1951639
>>1510
Два цикла подряд вместо одного = в два раза дольше обработка данных.

>>1056

>В твоем случае forEach и filter предпочитаемы


Я нашёл фатальный недостаток forEach:

>Error: Cannot read property 'forEach' of undefined


Т.к. forEach - метод класса Array, если мы получаем откуда-то вместо массива пустышку, код валится с ошибкой. Можно вставить проверку на undefined, но зачем, если цикл for не сделает ни одной итерации безо всяких дополнительных проверок? Вместе с проверкой на undefined кода становится больше, чем с обычным циклом for.

Я создаю экземпляр класса, давая конструктору массив, в котором вторым элементом может быть вложенный массив, и конструктор создаёт вложенные экземпляры того же класса по той же схеме. Вложенность, естественно, ограничена размером стека, но мне хватит. Так вот последний по вложенности класс получает вместо массива undefined, т.к. в прошлом массиве был всего один элемент. С for работает без проверок, красиво и просто, с forEach придётся костылить проверку на undefined. Нибуду((
63 1951656
>>1272
Нахуй серверу знать вьюпорт клиента, совсем поехавший? Или пердолишь свой ебаный styled components, абсолютно не зная, что у `<link>` есть аттрибут media, позволяющий условно загружать стили?
64 1951659
>>1639

>Два цикла подряд вместо одного = в два раза дольше обработка данных.


Ты конечно же проводил тесты, а не просто фантазируешь?
65 1951668
3ю главу кантора есть смысл читать? или достаточно двух и можно приступать к реакту?
66 1951669
>>1668
Лолблять, кантор тебе в рякте не поможет.
67 1951670
>>1669
я js учу с нуля
image.png38 Кб, 965x574
68 1951674
69 1951685
>>1486

>какой из них ЕСТЕСТВЕННЕЕ для ЧЕЛОВЕКА


Естественнее в каком плане?

Если тебе нужно пошагово объяснить ребёнку/дебилу/старику/иностранцу какие-то действия для достижения какого-то результата - да, тут императивный подход только и можно применить. Чтобы человек не метался в панике и не пытался делать то, что делать опасно, неэффективно или бесполезно. Например, показываешь ребёнку, как надевать курточку - "левую ручку сюда, правую сюда, и смотри не прищеми пальчики молнией" (хотя последнее уже декларативное).

Если же тебе нужно дать задание взрослому здоровому адекватному человеку, тем более специалисту в какой-то области, то тебе достаточно сформировать запрос: "нужно то-то и то-то, в таком-то виде и объёме к такому дню". Ты же не будешь учить уборщицу мыть полы типа "воду наберите в ведро, тряпку макаете в воду и трёте тряпкой пол, пока вода не загрязнится, меняете воду и повторяете пока пол не станет чистым" (она посмотрит на тебя как на поехавшего), ты скажешь ей только "вот здесь чтобы пол был чистым, через час проверю".

Окей, уборщица может быть новенькой и не знать, где инвентарь. Но ты не говоришь ей "иди до двери, возьмись за ручку, открой дверь, отпусти ручку, наклонись, возьми ведро и швабру, закрой дверь ногой, развернись на 180 градусов, пройди до начальной точки". Ты говоришь ей "швабра и ведро находятся в подсобке, подсобка по коридору прямо за маленькой дверью". Дальше она сама находит в своей памяти нужную программу для достижения двери, извлечения инвентаря и его использования для мытья пола. Или не находит и увольняется))

То есть мы общаемся в основном в декларативном формате:
- подай соль
- принеси табуретку
- расскажи о прочитанной книге
- сделай мне сайт, где я буду весь такой хороший
- помогите решить задачку, вот ошибка, вот что хочу сделать, не выходит
И так далее. Мы не пишем программы, мы запрашиваем желаемый результат. Даже обучение не всегда основано только на создании программ - часто предлагается самому найти решение, эксперименты помогают в обучении.
69 1951685
>>1486

>какой из них ЕСТЕСТВЕННЕЕ для ЧЕЛОВЕКА


Естественнее в каком плане?

Если тебе нужно пошагово объяснить ребёнку/дебилу/старику/иностранцу какие-то действия для достижения какого-то результата - да, тут императивный подход только и можно применить. Чтобы человек не метался в панике и не пытался делать то, что делать опасно, неэффективно или бесполезно. Например, показываешь ребёнку, как надевать курточку - "левую ручку сюда, правую сюда, и смотри не прищеми пальчики молнией" (хотя последнее уже декларативное).

Если же тебе нужно дать задание взрослому здоровому адекватному человеку, тем более специалисту в какой-то области, то тебе достаточно сформировать запрос: "нужно то-то и то-то, в таком-то виде и объёме к такому дню". Ты же не будешь учить уборщицу мыть полы типа "воду наберите в ведро, тряпку макаете в воду и трёте тряпкой пол, пока вода не загрязнится, меняете воду и повторяете пока пол не станет чистым" (она посмотрит на тебя как на поехавшего), ты скажешь ей только "вот здесь чтобы пол был чистым, через час проверю".

Окей, уборщица может быть новенькой и не знать, где инвентарь. Но ты не говоришь ей "иди до двери, возьмись за ручку, открой дверь, отпусти ручку, наклонись, возьми ведро и швабру, закрой дверь ногой, развернись на 180 градусов, пройди до начальной точки". Ты говоришь ей "швабра и ведро находятся в подсобке, подсобка по коридору прямо за маленькой дверью". Дальше она сама находит в своей памяти нужную программу для достижения двери, извлечения инвентаря и его использования для мытья пола. Или не находит и увольняется))

То есть мы общаемся в основном в декларативном формате:
- подай соль
- принеси табуретку
- расскажи о прочитанной книге
- сделай мне сайт, где я буду весь такой хороший
- помогите решить задачку, вот ошибка, вот что хочу сделать, не выходит
И так далее. Мы не пишем программы, мы запрашиваем желаемый результат. Даже обучение не всегда основано только на создании программ - часто предлагается самому найти решение, эксперименты помогают в обучении.
70 1951687
>>1674

>for of


О, спасибо, про for in я узнал из предлагаемых шаблонов кода в редакторе, а for of загуглить не додумался. Это как раз то, чего мне не хватало.
71 1951699
Привет, аноны, неdавно начал параллельно с основной работой поdрабатывать на смежном стеке, который мне интересен. Проблема в том, что работа заклuyчается в том, что мне скиdываuyт тз в телеге, а я в ответ архивом результат, потом dеньги на карту, dаже не знаuy как завут чела, который мне платит, лол. Вот тут заdумался, а веdь с этого наdо налоги платить, dа? Ну и вопрос куda и как и сколько и что буdет, если того? Там не много, буквально пара к в неdелuy, поэтому и не dумал об этом раньше...
72 1951719
>>1674
Когда у тебя будет 1 млн операций в секунду, тогда это будет иметь значение. Для массива из 10-100 элементов можешь хоть 10 циклов сделать.
73 1951721
>>1685

>- подай соль


>- принеси табуретку


>- расскажи о прочитанной книге


Это все императивное.
В декларативном нет глаголов.
74 1951722
>>1719
Даже в этом примере видно, что разница в пять раз. Добавь в конец третий цикл конструкции some и разница увеличится до 10 раз.
А теперь умножь таких конструкций по несколько штук на каждый чих, когда у тебя по всему проекту эти маленькие коллекции. Разница возрастает на порядки.
75 1951724
>>1722

>разница в пять раз


0.00005 вместо 0.00001?

>А теперь умножь таких конструкций по несколько штук на каждый чих


Которые все выполняются одновременно в одном потоке?
76 1951733
>>1304
Энтри левел вкат: Functional Light JS - я бы советовал начинать всем с этого, прагматичное ФП, очень хорошо разжевываются самые основы. Книга полезна не только как вкат в ФП, а как учебник по JS и построению программ в целом. https://github.com/getify/Functional-Light-JS

Некст лвл вкат: Mostly Adequate Guide To FP - ФП с корабля на бал, намного больше терминологии и объясняются основы теории категорий, но если вдумчиво читать, то одно из самых приятных введений в функторы и монады которые я видел. Желательно хорошо знать JS перед чтением.
https://drive.google.com/file/d/1NAlmEylllMM5zS8xke6pd16k2ULvbBZ0/view?usp=sharing
77 1951735
>>1724
Они выполняются последовательно. И у твоего кода всего 16мс между рендрфреймами, чтобы произвести вычисления.
78 1951736
>>1722
Они везде и есть. У меня на работе есть супер сложный редьюсер, которые наверное массивов 20 по 1000 объектов перебирает по несколько раз и всё это занимает 1.7 мс.

Все эти перфоманс дрочки это лишь отсутствие практического опыта разработки. Тот кто шарит понимает, что в вебе узкое место это апдейт DOM, а не джаваскрипт.
79 1951740
>>1736
Тот кто шарит, знает, что ничего тяжелого в апдейтах дома нет, если ты оставляешь рендеру достаточно времени во фрейме, для обновлений.
80 1951742
>>1740
Да у тебя один Layout пересчитываться будет десятки миллисекунд спасибо реактоговну, дрочка на фреймы бред. Тот, кто шарит знает, что код пишется не для машины, а для человека в первую очередь, особенно на высокоуровневых языках программирования. Про фреймы будешь рассказывать коллегам, когда они охуеют из твоих for-if'ов и мутаций переменных и будет невозможно добавить новый функционал без ебли.
81 1951744
Салам, боги.
Помогите полному долбоёбу плз
почему response.status возвращает undefined? при том, что сервер отвечает кодом 200

Еще вопрос - почему в этом коде если поставить await перед fetch, то выскочит SyntaxError - требуется async функция, хотя в учебнике на learn.javascript подобное написание прокатывает?

Да, я полный нубас в js. И да, я на коне
82 1951745
>>1744
fastfix
в {{ }} - код на питоне, он возвращает правильную url, проверял
83 1951748
>>1744
fetch это промис.

попробуй
response.then(data => document.write(data));
84 1951753
>>1748

>document.write(data.status)

85 1951754
>>1735
И ты наверняка замерил, что твой код куда-то там не укладывается по времени и лагает? Ты же не просто так фантазируешь о преждевременных оптимизациях без всякого на то основания, правда?
86 1951928
Анончики, посоветуйте книг для вката в js с упором на обмен данными с сервером. Желательно поновее со свежим взглядом на ленгуадже и технологии. Можно и на английской мове

Вот такой экземпляр норм
https://mirlib.ru/knigi/programming/354045-mastering-javascript-a-complete-programming-guide-including-jquery-ajax-web-design-scripting-and-mobile-application-development.html
?
87 1951931
>>1928
Это амазоновская хуйня.
Алсо, обмен данными называли ажахом в нулевых, такое сразу в помойку.
Стикер255 Кб, 512x512
88 1951953
>>1339
Не слушай его. Ты всё правильно делаешь. Документация реакта на твоей стороне.
89 1951964
>>1339
Мы например юзаем react-query. Вдарил useQuery и усе. Но хуй знает, что там под капотом
90 1951972
>>1953
Сук, а ты хорош.

>>1339
Если стремишься к реюзабельности компонента, его изолированности от окружения и тестируемости (хотя простые компоненты и так нехуй тестировать), то, очевидно, всю логику, в т.ч. IO поебень выносить в отдельные сущности, а клеить тонкой прослойкой типа контейнера, который осуществит необходимые подписки и пробросит пропсы в целевой компонент. Это если делать по уму. А ежели просто ебошить - то делай, как удобно.
91 1951977
Анон зацени, сделал свой эксклюзивный ЙОБА-слайдер, на энтот раз без ебаного жиквери, все на чистом жиэс. Рейт.

Я уже могу устраиваться на зп в 100к?
92 1951983
>>1977
Манифик.
93 1951997
Как принято в ангуляре:
1. Нужно соединить 1 обсерваблу из самого компонента, и одну сверху. Если кроме как тут она нигде не нужна, то передавать сверху собственно готовую обсерваблу, или простое значение, а в компоненте уже пулять локальную по изменению?

2. В методичке просят переданное сверху не мутировать, но в то же время реактивные формы этим внаглую занимаются, т.е. их считают за сервис, хотя они не инжектятся, а дриллятся. Как тогда понять, когда это норм, а когда зашквар?
94 1952005
>>1977
Я бы такое бы никогда не смог написать

мимо фронтендер зп 250к
95 1952006
>>2005
Купишь у меня код?
96 1952023
>>1977
А инкапсулировать будет кто, Пушкин? Без инкапсуляции и с константами прямо в логике твой слайдер может быть только один на странице, на которой кроме него нет никаких картинок (ты же вообще все <img> зохавал?).

Нужен класс:
class ImageSlider {
constructor(name, images, owner) {}
}
Где:
- name определяет CSS-класс, по которым один слайдер отличает элементы других слайдером от своих. Все картинки и кнопки должны иметь этот класс.
- images определяет набор картинок, которые нужно воткнуть в этот слайдер, потому что создавать мы его будем динамически (кому нужна статическая страница с жыс-слайдером картинок в 2021?).
- owner определяет элемент, к которому этот слайдер сам себя добавит (чтобы нам не нужно было его вручную добавлять, просто сделал new ImageSlider() и забыл про него, пока не понадобится удалить).
97 1952029
>>1977
>>2023
Забыл ещё, ты перезаписываешь свойство стиля display, а что если тебе нужно картинки отображать не как block? У этого свойства много значений.

Правильнее будет присвоить картинкам определённый класс, в нём обозначить свойство display и присвоить ему нужное значение (block или что угодно другое кроме none), а в твоём коде вместо display = "block" делать просто display = "". Так восстановится значение класса, перезаписанное присвоением display = "none". А первоначальное присвоение none должно быть в конструкторе класса, который размещает предложенные картинки внутри слайдера.

Сам недавно переписывал свой код, когда потребовалось абстрагироваться от значения "block", решение оказалось неожиданно простым.
98 1952030
я всегда забываю ретюрн дописать в функции
99 1952031
>>2030
Он ведь нужен только если ты что-то возвращаешь. Если нечего возвращать, то и ретурн не нужен. А если ты что-то хочешь вернуть, то как ты забываешь про ретурн? Во большинстве языков возвращаемое значение нужно куда-то присвоить/передать явным образом.
100 1952034
>>2029
Согласен, переписал на изменение классов сплавным переходом.
Про конструктор на классах читал. Но вот энта инкапсуляция на практике пока мне не попадалась, все что ты написал я понял. Но реализовать на практике пока не хватает опыта.
101 1952035
>>2029
Спасибо! Хоршего дня.
102 1952045
я не зря трачу время, решая задачки по js?
103 1952047
>>2045
однозначно нет
IMG20210226130039.jpg274 Кб, 860x1932
104 1952055
>>2034

>инкапсуляция на практике пока мне не попадалась


Я недавно вот такую менюшку себе сделал, суть такова: есть меню с выбором вариантов ответа, каждый вариант может быть вложенным меню со своим набором вариантов ответа, и так далее. То есть рекурсивная структура. Сделано просто рекурсивным созданием новых объектов одного и того же класса, а запускается созданием самого первого объекта передачей в него всей необходимой информации. Внешний вид, цвета, расположение и форма, даже сортировка (выбранный пункт поднимается наверх, к заголовку группы) - это всё на CSS, на JS только логика создания/открытия/закрытия группы и передача результата (тому, кто создал это меню) с его самоуничтожением в случае успешной обработки результата. По-моему гениально, осталось только отрефакторить и убрать мусор из кода. Короче, без инкапсуляции в класс это было бы намного труднее сделать.

Вряд ли кому-то понадобится делать галерею в галерее в галерее, но несколько одинаковых галерей на одной странице - это очень распространённая ситуация, например, в газетных статьях и на страницах-демонстрациях какой-нибудь программы/библиотеки/технологии.

>реализовать на практике пока не хватает опыта


Это очень просто на JS, сравнивая с другими ЯП)
105 1952104
>>2005
Позорище ебаное.
мимо 150к, напишу подобное за 10 минут
106 1952131
решил задачу лучше, чем писюха с хабра https://habr.com/ru/post/351874/
чсв поднялося
107 1952249
>>1339
В mobx/redux, хотя экшены всё равно в итоге будут в useEffect вызываться
108 1952252
>>1014

>нет смысла делать эти микрооптимизации


https://habr.com/ru/company/vdsina/blog/544218/

>O(n^2) — оптимальное время для плохо масштабируемых алгоритмов — достаточно быстро, чтобы попасть в продакшен, но достаточно медленно, чтобы ломать всё, после того, как он туда попал.


>Если вы пишете код, который будут запускать другие, то убедитесь, что он достаточно хорошо масштабируется для обработки любого возможного множества данных, вне зависимости от его разумности. Квадратичные алгоритмы обычно проваливают эту проверку.



Это просто к слову о том, почему задумываться о том, как код будет работать с большим объёмом данных - полезно, даже если сейчас ты не собираешься загружать его такими объёмами.
109 1952262
>>2252

>vdsina

110 1952265
>>2249
Ну пиздец открыли америку канеш

Алсо, в чем проблема делать фетч в компоненте, а потом полученное записывать в стор? При условии что запрос в компоненте уникальный. Это просто для удобства организации кода делается?
111 1952270
>>2265
Ну да, для удобства, насколько я понимаю

джун год опыта
112 1952278
>>2249

>экшены


Экшены будут а actions created вызываться как и раньше , только уже будет функция которая диспатчит через ac результат работы метода из api.ts, все обращения в внешним ресурсам будут в одном файле
113 1952293
>>2262

>ruvds

114 1952303
В чем прикол делать запросы внутри компонентов? Это же пиздец нелогично и как это потом все мокать для тестов?
У меня все проходит через сервис, который состояние запросов записывает в стор, а компоненты лишь отрисовывают контент в зависимости от состояния стора и наличия данных в кешируемых хранилищах данных.
115 1952307
>>2303

>прикол делать запросы


Жертвы минина хули поделать
116 1952311
>>2262
Там перевод.

>Автор оригинала: Bruce Dawson

117 1952334
Какже JS пиздат, есть ли что то понятнее и пизже чем он?
в плане других языков
118 1952340
>>2334
Есть Forth, на нём любая бабка сможет кодить. Но ты не осилишь.
119 1952341
>>2340
а я думал ты питон скажешь
120 1952347
>>2334
Да, тайпскрипт
121 1952383
>>2347
Это говно собачье.
122 1952391
>>2334
Elm, Reason, любой другой язык ML семейства.
123 1952401
>>2383
Поясни.

>>2347
Тайпскрипт же заставляет указывать типы? А с описанием типов кодить становится труднее и дольше. Да, меньше времени уходит на отладку, т.к. система типов предотвращает некоторые ошибки, но речь шла про написание кода, как я понял.
124 1952424
>>2401

>кодить становится труднее


Лол. Пиздец же так трудно типы указать, да? А без тайпскрипта потом сидишь и охуеваешь, в каком месте у тебя число стало строкой в тридцатикратно вложенном компоненте
125 1952433
>>2424
Лол, я сам большую часть сознательной жизни кодил только на строго типизированных языках (Паскаль и подобные ему). Так что я знаю, зачем нужны типы, регулярно создавал новые и всегда указывал их (иначе не складируется), а от слабо типизированных языков шарахался. Но сейчас понимаю, что слепить прототип программы без указания типов на порядок быстрее и проще, а ошибки если и бывают, то не критичны - не прошивку ракеты/самолёта же кодим. Но я-то опытный, хоть и любитель, а вот новичкам, конечно, слабо типизированные языки только вредят, имхо.

>число стало строкой


И часто оно у тебя так случается? По-моему это возможно только когда ты пытаешься сложить строку с числом, вместо сложения происходит конкатенация. Зачем, спрашивается, делать конкатенацию там, где она не нужна?

>тридцатикратно вложенном компоненте


Ты должен делать тесты каждого уровня вложенности начиная от первого изменённого уровня до самого верхнего. Сделал изменение - провёл тест и убедился, что всё работает. Как только тест показывает ошибку, ты уже знаешь, что эта ошибка возникла из-за последнего внесённого тобой изменения, потому что до этого все компоненты тесты проходили успешно. Ну или у тебя ошибка в тесте, лол)) А если ты тестов не делаешь и пишешь сотни строк кода без единой проверки - зачем ругаться на язык? Сам виноват.

Меня вот Паскаль приучил тестить программу после каждой строчки/изменения в коде. Даже после написания комментария предпочитаю перекомпилировать, а то вдруг где-то что-то поломал. Ну а с JS всё ещё проще: компиляции как таковой нет, достаточно переключиться на браузер и нажать F5, все изменения и возможные ошибки будут сразу же явно видны. Т.е. городить систему типов особого смысла нет, зато время на выдумывание этой самой системы уходит намного больше, что замедляет прототипирование.

Вот, например, ты боишься, что у тебя integer превратится в string. Но это цветочки, ты не должен указывать x: integer, ты должен придумать новый тип, например, TValue = Integer, а затем следить за тем, чтобы TValue не попадало в Integer, потому что это разные типы, хоть и числовые. В языке Ада такие проверки из коробки, но вряд ли тебе понравится на ней программировать (очень долго и очень трудно выдумывать новые типы)...
125 1952433
>>2424
Лол, я сам большую часть сознательной жизни кодил только на строго типизированных языках (Паскаль и подобные ему). Так что я знаю, зачем нужны типы, регулярно создавал новые и всегда указывал их (иначе не складируется), а от слабо типизированных языков шарахался. Но сейчас понимаю, что слепить прототип программы без указания типов на порядок быстрее и проще, а ошибки если и бывают, то не критичны - не прошивку ракеты/самолёта же кодим. Но я-то опытный, хоть и любитель, а вот новичкам, конечно, слабо типизированные языки только вредят, имхо.

>число стало строкой


И часто оно у тебя так случается? По-моему это возможно только когда ты пытаешься сложить строку с числом, вместо сложения происходит конкатенация. Зачем, спрашивается, делать конкатенацию там, где она не нужна?

>тридцатикратно вложенном компоненте


Ты должен делать тесты каждого уровня вложенности начиная от первого изменённого уровня до самого верхнего. Сделал изменение - провёл тест и убедился, что всё работает. Как только тест показывает ошибку, ты уже знаешь, что эта ошибка возникла из-за последнего внесённого тобой изменения, потому что до этого все компоненты тесты проходили успешно. Ну или у тебя ошибка в тесте, лол)) А если ты тестов не делаешь и пишешь сотни строк кода без единой проверки - зачем ругаться на язык? Сам виноват.

Меня вот Паскаль приучил тестить программу после каждой строчки/изменения в коде. Даже после написания комментария предпочитаю перекомпилировать, а то вдруг где-то что-то поломал. Ну а с JS всё ещё проще: компиляции как таковой нет, достаточно переключиться на браузер и нажать F5, все изменения и возможные ошибки будут сразу же явно видны. Т.е. городить систему типов особого смысла нет, зато время на выдумывание этой самой системы уходит намного больше, что замедляет прототипирование.

Вот, например, ты боишься, что у тебя integer превратится в string. Но это цветочки, ты не должен указывать x: integer, ты должен придумать новый тип, например, TValue = Integer, а затем следить за тем, чтобы TValue не попадало в Integer, потому что это разные типы, хоть и числовые. В языке Ада такие проверки из коробки, но вряд ли тебе понравится на ней программировать (очень долго и очень трудно выдумывать новые типы)...
126 1952454
>>1733

>Mostly Adequate Guide To FP



12 страница, там где автор сначала пишет через класс Flock - реально надо минимум когнитивных способностей чтобы понять что происходит. Потом начинает городить фп ересь, где уже реально нихуя не понятно сходу. Вот и ответ о применимости фп как подхода.
127 1952468
>>2433

>Но сейчас понимаю, что слепить прототип программы без указания типов на порядок быстрее и проще


Вот именно что прототип, для большого приложения чистый js это пиздец полный, мне по крайне мере от него просто блевать тянет. Даже если через неделю к коду вернешься уже нихуя непонятно куда какие объекты передаются и какие у них поля/методы. А так у меня даже с ts бывают ошибки когда я неправильно тип возвращаемый с бэка указываю, боюсь представить что бы было если бы вся прилага была без ts.
Я что долбоеб запоминать какие значения у меня могут быть undefined, чтобы проверки добавлять? Тем более в ts есть пиздатый синтаксис object?.field. Короче ванильный js это калище дикое, а ts тупо кайф.
128 1952476
>>2468

>для большого приложения


Не всем оно надо
129 1952477
>>2433

>ты не должен указывать x: integer, ты должен придумать новый тип, например, TValue = Integer,


Никому я ничего не должен, и вообще в тайпскрипте структурная типизация
130 1952496
>>2468

>для большого приложения чистый js


Сколько больших приложений написал лично ты?
131 1952520
>>2476
А ты не всегда можешь знать наверняка. Я буквально недавно пилил бэк для личного проекта и решил не заморачиваться с тайпскриптом, в итоге я напридумывал новых фич и следить за всем и держать все типы в памяти стало очень больно. В итоге пришлось все на ts переписывать.
>>2496
Я лично по настоящему больших проектах не писал, но участвовал по крайне мере в средних и везде использовался тайпскрипт, а там где не использовался был постепенный переход. Был еще проект, где некоторые типы в комментах указывались, не помню уже как такой подход называется, но как по мне проще уже реальный ts подключить.

Не то чтобы я дохуя сеньер, но по моему личному опыту ts выручал дохуя раз.
132 1952601
>>1977
Сейчас бы в нынешнем году менять стили заместо изменения аттрибута src у картинки. На крайняк можно хранить три картинки и их подгружать.
133 1952602
>>1977
А теперь без js
134 1952607
>>2602
Через месяц попробую, щас дрочу колбеки, замыкания и прототипное наследование в функциях
135 1952620
Каким образом в реакте используется классовый синтаксис, если не используются классовые компоненты? Есть пример? Какие-нибудь репозитории, в которых можно посмотреть как все сделано? А то фриланшу сейчас на реакте, делаю все на функциональных, но хочу стать полноценным рабом, а на собесах наверняка про всё вот это вот спросят
136 1952642
>>2602
Без жс надо будет всю галлерею хранить на странице, лол.
Конечно можно попердолитья с ленивой загрузкой, но один хуй будет дохуя элементов в доме сидеть.
137 1952703
>>2303

>Это же пиздец нелогично и как это потом все мокать для тестов?


В чем именно по-твоему заключается проблема замокать запрос внутри компонента?

>У меня все проходит через сервис


Который работает магическим образом сам по себе, и к которому компоненты не обращаются вообще никак и не говорят ему, что фетчить и когда?
138 1952722
>>2703
Просто делаешь в начале файла с компонентом import api from 'services/api'

И потом в компоненте где нужно вызываешь api.getSomeData()
139 1952724
>>2722
Типичный поциент с ООП головного мозга.
140 1952727
>>2722
И что это по-твоему, если не "делать запросы внутри компонентов"? Чем твое api.getSomeData() отличается от fetch(), и почему ты считаешь, что первое вдруг мокабельное, а второе нет?
141 1952735
>>2727
Я мимо проходил, хз что там про моки. Это лучше тем, что всё спрятано в service/api, в компоненте ты только функцию вызываешь которая возвращает response либо ошибку если она была.

Вот тут другой анон уже писал про это: >>2278
Удобнее держать все обращения к апи с клиента в одном месте

>>2724
Каким боком тут ООП? api может быть просто объектом с методами.

const api = {
getSomeData() {
// тут фетч
}
}
142 1952739
>>2735

>Каким боком тут ООП? api может быть просто объектом с методами.


То есть импортиурешь ВЕСЬ объект, чтобы вызвать функцию у него? Ты вообще в курсе как ES6 модули работают?
143 1952743
>>2739
Причем тут импорт, тебя чувак точно спросил про ооп
144 1952744
>>2743
Как раз адепты ООП и не могут в ES6 импорты.
145 1952762
>>2735

>Я мимо проходил, хз что там про моки


И нахуя ты в разговор влез, если не понял, о чем он?
146 1952767
Где я успел обосраться?
https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics#adding_an_image_changer
Здесь пример
let myImage = document.querySelector('img');

myImage.onclick = function() {
let mySrc = myImage.getAttribute('src');
if(mySrc === 'images/firefox-icon.png') {
myImage.setAttribute('src','images/firefox2.png');
} else {
myImage.setAttribute('src','images/firefox-icon.png');
}
}

У меня в myImage на первой же строчке не записывается атрибут src. В итоге onclick не cрабатывает. Чому так?
147 1952768
>>2767
Бля еще и первая картинка не обрезалась, так и сдиванониться можно...
148 1952771
>>2767
Ты дом показывай. Если не работает, значит в консолечке смотри на ошибки.
149 1952784
>>2771
Эм. Я нуль, ты имеешь в виду, что если вот у меня слева нет src, то он и не возьмется в переменную? Или под показом дом ты что имеешь в виду? Консоль пустая.

Сука, че за пример такой на первой же странице по js для желторотиков, который не работает.
150 1952799
>>2454
Поэтому я и скахал что про лвл вкат. Никто не говорит, что ФП это 1 страницу книжки прочитал и выучил за день. Если выглядит как ересь, значит у тебя либо мало опыта разработки, либо опыт твой это писанина на реакте была.

Без опыта это месяц как минимум изучения подхода к написанию кода и обработке данных, ведь нужна практика, конечно же. Зато потом ты становишься намного лучше разработчиком даже на ООП, даже если ФП не используешь в повседневном кодинге, мозги прокачиваются хорошо.
151 1952801
>>2784
Короче, нахуй src.
document.querySelector('html').onclick = function() {
alert('Ouch! Stop poking me!');
}

работает, а
document.querySelector('img').onclick = function() {
alert('Ouch! Stop poking me!');
}

нет.
152 1952802
>>2334
Руби в диапазоне легко писать/легко читать примерно на том же уровне, что и JS.

Из статических С#/TypeScript пожалуй.
153 1952807
>>2801
>>2784
>>2771
>>2768
>>2767
Господи, какой я тупой. В параграфах затесались <img> без экранирования.
154 1952816
Здравствуйте, у меня проблема с библиотекой Chart.js, конкретно не могу изменить ширину графика типа line - он растягивается на всю страницу.
указываю размеры здесь:
<div class="container">
<canvas id="lineChart" width="600" height="400"></canvas>
</div>
высота графика меняется, а ширина всегда остаётся одной и той же.

пробовал в опциях графика разные комбинации responsive:false и maintainAspectRatio: false, но ничего не помогло. Так же прописал Chart.defaults.global.maintainAspectRatio = false; (до этого даже высоту нельзя было поменять)
Подскажите пожалуйста, что делать?
155 1952824
>>2762
Затем что вот здесь хуйню спизданули:
>>2703

> Который работает магическим образом сам по себе, и к которому компоненты не обращаются вообще никак и не говорят ему, что фетчить и когда?



Если кто-то несёт хуйню, то почему бы не поправит его? Но тут походу безнадежный случай, человеку ООП мерещится там, где его нет. Вкатыш походу
156 1952828
>>2303
Ну ты все правильно делаешь.

Вообще реакт должен отвечать исключительно за UI. Все остальное должно быть за его пределами. Именно поэтому хуки по типу useReducer и useEffect налево направо превращают реакт в лапшу из сайд эффектов. Мне кажется во времена классовых компонентов они выглядели хоть и более многословными, но почище.
IMG20210126125945.jpg196 Кб, 1280x1104
157 1952829
Почитал пасту про вкат. Вы ебанулись? Чтобы вкатиться веб-макакичем джуном мне надо учить прототипы, хулиард фреймворков, вебпаки, говнопаки? За 30к рублей? Зп кассира в Магните.
159 1952834
>>2829
Дело в том, что для того, чтобы быть сеньером, тебе нужно знать ровно всё то же самоое
160 1952845
Есть классы A, B, C.
В классе C есть конструктор, в котором инициализируется условная конфигурация, получаемая от объектов класса A и B.
В классе C есть так же статичные методы, которые задействую эту информации и выводят на экран.
Учитывая асинхронность ноды, мое приложение выглядит так:
const a = new A();
a.run(...);
const b = new B();
b.run(...);
const c = new C(a.getInfo(), b.getInfo());
c.run(...);
В экземплярах объектов a и b метод run(...) вызывает те самые статичные методы класса C.staticMethod() и выводит корректно информацию, хотя конструктор этого класса еще не был вызван, а значит информации от a и b там быть не должно.
Даже, если представить, что конструктор C вызвался раньше, чем отработал любой из методов run(...) a и b, и вывел эту информацию, то можно заблокировать главный поток перед инициализацией c на 5 секунд, но метод run(...) объектов a и b все равно выводит корректную информацию статичными методами по расписанию и без задержек, после чего через те самые 5 секунд срабатывает вывод из конструктора C, что подтверждает то, что главны1 поток был прерван до вызового этого конструктора.
Почему так?
161 1952847
>>2845
Ты правда думаешь, что тебя кто-то понимает?
162 1952849
>>2847
Я думаю что все адекваты спят, а ты сидишь от нехуй делать и скроллишь ночной. Еще и не понимаешь нихуя, но почему-то решаешь, что можешь говорить за всех, лол.
163 1952851
>>2849
Ты б лучше минимальный пример привёл, а не огрызался.
164 1952852
>>2851

>начал вертеть жопой и петросянить, вместо того, чтобы просто попросить больше информации


>получил ответ в таком же стиле


>рррряяяяя не огрызайся дай пример лучше


>буквально на пальцах, оперируя тремя буквами/объектами, объяснил все изначально максимально подробно с кодом в 3 строки

165 1952855
Подскажите тупице. Я сделал небольшой проект с роутами, сбилдил, закинул на бесплатный хостинг, все работает, но если зайти на роут и перегрузить страницу, то ошибка 404. Как это решается?
166 1952856
>>2828
Вызывать запросы всё равно где-то нужно, если нужна загрузка данных при маунте компонента, то кроме как в useEffect больше негде это делать
167 1952860
>>2829

>Зп кассира в Магните.


Сам-то хоть там работал? ЗП в дноритейлах - МРОТ.
168 1952861
>>2828

>Вообще реакт должен отвечать исключительно за UI.


За UI должен отвечать html/css. Жабаскрипт - за логику.

>Все остальное должно быть за его пределами.


Яскозал?

>Именно поэтому хуки по типу useReducer и useEffect налево направо превращают реакт в лапшу из сайд эффектов.


То ли дело вызывать сайд-эффекты через глобальный стор. Зато ООП!

>Мне кажется во времена классовых компонентов они выглядели хоть и более многословными, но почище.


Это ты ебанину с дублирующей логикой назвал "почище"?
169 1952868
>>2861

> За UI должен отвечать html/css


Как там в 2010?

> Жабаскрипт - за логику.


Конкретно реакт — библиотека для отображения UI.

> То ли дело вызывать сайд-эффекты через глобальный стор


Что не так? Это самая удобная модель.

> Зато ООП!


Где в редаксе ООП? Ты вообще понимаешь о чём говоришь, или просто так бредишь лишь бы спиздануть?

мимокрокодил
170 1952877
>>2845
В общем, я разобрался, все работало правильно и конструктор C все-таки срабатывал раньше, чем вызывались его статичные методы внутри методов A и B.
171 1952881
>>2834
Кстати да, два года уже повышает зп, а сижу все на том же говне, такое чувство что ничего нового и не изучаю.
172 1952889
>>2877
От сюда появляется вопрос: как лучше спроектировать классы? Ведь то что у меня сейчас, это неправильно.
У меня в одном приложении есть 3 основных класса: Server, Database и Console.
Server - обрабатывает http запросы.
Database - работает с бд, обновляет в ней информацию и т.п.
Console - интерактивная обертка над stdin, позволяет вводить команды для экземпляров Server и Database.

Сonsole в своем конструкторе вызывает конструктор класса Messages, который содержит информацию о конфигурации и состояниях экземпляров Server и Database.

Код: https://pastebin.com/EM5nrVEx

В самом низу я закомментировал свое решение этой проблемы, оно самое очевидное, но хочется как-то сделать все универсальным, чтобы порядок вызова конструкторов и методов был не важен при этом сохранить класс Messages, потому что мне нравится, когда есть всего один класс со всеми возможными сообщениями, вызов которых происходит повторно в разных участках кода.

Повторю проблему: конструкторы ClassConsole и ClassMessages могут (и делают это в данном примере) срабатывать позже отработки методов run() экземпляров ClassServer и ClassDatabase. Как можно изменить архитектуру классов, чтобы получить универсальную и независимую работу этих классов?
173 1952896
>>2889
Логгер свой в конструкторы классов передавай
174 1952898
>>2896
Т.е. Messages вынести на один уровень с Server, Database и Console? Я думал об этом, но как-то странно выглядит, нелогично.
175 1952901
>>2898
От того что ты его используешь как неявную зависимость - менее значимым он не становится
176 1952906
>>2898
Также, я не знаю что у тебя console делает, он он похоже должен имплентировать IMessages и называться ConsoleMessageLogger.
Если тебе еще и контроллер нужен, делаешь IController и ConsoleController. Жаль что интерфейсов то нет. Если консоли еще нет, а писать в нее уже нужно, пишешь буферизующий декторатор для логгера. Ммм, ООП.
177 1952909
>>2889
Выглядит как бэковый код, поэтому можешь присмотреться к typedi, он удобно реализует dependency injection архитектуру, возможно тебе полезным окажется.
BED84451-905A-4AFC-AA95-A9B7C47AB32F.jpeg175 Кб, 750x1334
178 1952911
>>2889
Не по теме твоего вопроса, но: откуда такое именование у тебя появилось? Это можно теперь так делать или ты сам придумал?

Мимо дед
179 1952912
>>2911

>можно


Модно фикс
180 1952914
>>2911
Дед, ну яву же встроили в этот ваш жаваскрипт, теперь с инкапсуляцией. Инкапсулируй на здоровье
181 1952915
>>2901
Возможно. Просто я такой человек, который может часами думать над названием переменной, поэтому подобного рода проектирования для меня - лютый пиздец.

>>2906
Ничего особого не делает да и не будет, скорее всего, только число команд будет расти. Вот реальный код на текущий момент: https://pastebin.com/jqeeVYDW
Про существование интерфейсов я уже и забыл, даже не помню для чего они нужны. Спасибо, почитаю.

>>2909
Я хочу свести к минимуму использование готовых библиотек/фреймворков. Пишу в первую очередь с целью понять/изучить.

>>2911
Можно, если имя не зарезервировано. В моем случае server и database работают, console тоже, но начинаются проблемы, когда нужно в этом же коде вызывать console.log(). Надо наверное лучше сразу тогда придумать какой-то префикс для полей класса (для экземпляров объектов он уже есть).
182 1952916
>>2915

>console тоже, но начинаются проблемы, когда нужно в этом же коде вызывать console.log()


Какие проблемы у тебя начинаются при такой ситуации?
183 1952919
>>2915

>Можно, если имя не зарезервировано


Да я прекрасно знаю, что можно. Можно даже кириллицей переменную объявить, но не лучше ли придерживаться общепринятому стилю кода? Сейчас может быть ты пишешь исключительно для себя, но однажды, если планируешь связаться с программированием, ты будешь трудиться в составе Команды. Лучше уже сегодня привыкать к тому как принято
184 1952920
>>2914

>ну яву же встроили в этот ваш жаваскрипт


Че го?
185 1952922
>>2920
Хуже, яваскрипт
186 1952923
>>2922
О чем ты, друг?
187 1952924
>>2916
const server = new ClassServer('server');
const db = new ClassServer('db');
const console = new ClassConsole(server, db);
console.log('asdas');

>ReferenceError: Cannot access 'console' before initialization

188 1952928
>>2924
Ты в конструкторе классСервер используешь консоль.лог, а ниже по коду зачем-то переопределяешь переменную консоль. Потому и не можешь ее есипользлвать
189 1952930
>>2924
А теперь попробуй разнести все по модулям, как положено, а не лепить все в одном пространстве имен в один файл. И проверь еще раз.
190 1952934
>>2928
>>2930
Если я привел код в пример, это не значит что я его использую. Просто иногда для быстрого дебажного лога проще что-то подобное написать и стереть сразу же. Поэтому в main() у меня не console, а lfConsole = new LFConsole(...), но в полях классов я еще не придумал правила именования, потому что конфликтов не было, потом исправлю.
191 1952944
>>2915
в методе stop() лучше вызывай остановку сервера, дисконнект бд и остановку процесса, а в кейсе defines.COMMAND_CONSOLE_EXIT вызывай this.stop()
192 1952950
>>2944
Да, исправил.
193 1952972
mobx
194 1953026
>>2915

>Я хочу свести к минимуму использование готовых библиотек/фреймворков. Пишу в первую очередь с целью понять/изучить.



Чувак, если ты хочешь _изучить_, то изучать надо то, что наработано другими.
Понимаешь?
Пытаться понять, почему так, а не иначе.
Много читать (код и книги), и не очень много писать (больше заметок, чем кода).
И только потом - пытаться делать своё.

Иначе будет такая же хуита, как и у других 16-ти летних мидлов и синьёров, прости г-споди. Которых, почему-то, никто не хочет брать на работу.
195 1953068
>>3026
Вообще с тобой не согласен. Читая чужой код, ты учишься делать чужие ошибки, а не только получаешь какую-то полезную информацию. Эту информацию нужно еще и самому обработать. И выходит, что это ни чем не отличается от обычного самообучения на практике. Дохуя людей, которые пишут код, считают себя синьорами, рубят 300к/нсек, а на деле хуи моржовые с клавиатурой в руках. Почему в софте, над которым трудятся сотни человек, имеет ту же сотню багов, которые "фиксят" и находят новые? Не потому что код пишут 16 летние мидлы, а потому что это люди, которые считают что делают что-то лучше и правильней, другой считает по своему, третий аналогично и т.д. Все доходит до того, что ведущий погромист, видит это написанное говно, мерджит в мастер и ахуевает, потому что он 100ый в этом списке, да и вообще он написал даже книгу свою по архитектуре кода, которая выстрелила и ее до дыр читает другая сотня-тысяча вайтишников-шахтеров, которые потом с ноги ворвутся за своими 300к/нсек, щеманут омежек и начнут диктовать свои условия команде. Все это конечно утрирование, но примерно так оно все и работает на самом деле.

А что я? Я просто сижу и по фану пишу свой код, в котором я ориентируюсь. Пишу программки для себя, начиная с меньшего, чтобы потом написать что-то большее, например, свою игру. Поэтому да, чем меньше я использую прослойки в коде, которые скрыты, тем больше я понимаю код и имею над ним контроль. Никогда не понимал выскочек, которые про велосипеды что-то там бормочат. Велосипеды - это хорошо, если ты понимаешь зачем он тебе нужен.

Я учился еще в вузике на погромиста, закончил, но интерес к нему у меня пропал. Я не работал ни в каких командах, все что писал выше это не более, чем мой субъективный взгляд на вещи со стороны. Ну а спустя годы, я просто решил к этому говну вернуться и расшевелить его. Ни на какие лавры не претендую, устраиваться никуда не хочу, но хочу понимать свой код и иметь контроль над ним. По возможности использовать более элегантные решения, я же все-таки не против клир кода и прочих концепций в подходе к написанию его, что-то даже в памяти еще осталось после вуза.
195 1953068
>>3026
Вообще с тобой не согласен. Читая чужой код, ты учишься делать чужие ошибки, а не только получаешь какую-то полезную информацию. Эту информацию нужно еще и самому обработать. И выходит, что это ни чем не отличается от обычного самообучения на практике. Дохуя людей, которые пишут код, считают себя синьорами, рубят 300к/нсек, а на деле хуи моржовые с клавиатурой в руках. Почему в софте, над которым трудятся сотни человек, имеет ту же сотню багов, которые "фиксят" и находят новые? Не потому что код пишут 16 летние мидлы, а потому что это люди, которые считают что делают что-то лучше и правильней, другой считает по своему, третий аналогично и т.д. Все доходит до того, что ведущий погромист, видит это написанное говно, мерджит в мастер и ахуевает, потому что он 100ый в этом списке, да и вообще он написал даже книгу свою по архитектуре кода, которая выстрелила и ее до дыр читает другая сотня-тысяча вайтишников-шахтеров, которые потом с ноги ворвутся за своими 300к/нсек, щеманут омежек и начнут диктовать свои условия команде. Все это конечно утрирование, но примерно так оно все и работает на самом деле.

А что я? Я просто сижу и по фану пишу свой код, в котором я ориентируюсь. Пишу программки для себя, начиная с меньшего, чтобы потом написать что-то большее, например, свою игру. Поэтому да, чем меньше я использую прослойки в коде, которые скрыты, тем больше я понимаю код и имею над ним контроль. Никогда не понимал выскочек, которые про велосипеды что-то там бормочат. Велосипеды - это хорошо, если ты понимаешь зачем он тебе нужен.

Я учился еще в вузике на погромиста, закончил, но интерес к нему у меня пропал. Я не работал ни в каких командах, все что писал выше это не более, чем мой субъективный взгляд на вещи со стороны. Ну а спустя годы, я просто решил к этому говну вернуться и расшевелить его. Ни на какие лавры не претендую, устраиваться никуда не хочу, но хочу понимать свой код и иметь контроль над ним. По возможности использовать более элегантные решения, я же все-таки не против клир кода и прочих концепций в подходе к написанию его, что-то даже в памяти еще осталось после вуза.
image.png164 Кб, 1424x1076
196 1953073
Что бабель с жестом от меня хотят?
197 1953089
>>3073
Перезапустил апп. Теперь выдаёт такое, когда тест зафейлился
Дроч с конфигами — главная боль фронтенда имхо
198 1953090
>>2468
А теперь познакомься со стрикт-режимом, умник.
199 1953094
>>3068

> Читая чужой код, ты учишься делать чужие ошибки,


Ебать ты альтернативно одарённый.

А не читая чужой код, ты обречён сделать все те ошибки, которые уже были сделаны до тебя, за всю историю программирования, плюс добавить ещё и своих уникальных тараканов.

Но, вообще, каждому - своё.
Кто-то - перфекционист.
А кто-то - онанист.
200 1953098
>>3090
Во-первых, со стрикт-режимом где?

Во-вторых - как это меняет тот факт, что JS - дрисня, а TS - рулит?
И что единственный способ починить JS - это писать тонны JSDoc комментариев, в которых, в итоге, получается сильно больше знаков, чем если бы ты писал типы в TS?
201 1953103
>>3094
Речь была вообще о том, что нельзя однозначно сказать "читай чужой код - становись профессионалом". Чаще даже узнаешь что-то новое/полезное, когда сам пишешь и пробуешь разные варианты, эксперементируешь, а сидеть книжным червем и надрачивать на макконела или ковырять гит такого же самоучки - это дорога хуй пойми куда и зачем, в которой ты идешь только по наитию и принимаешь все за чистую монету. Я не против книг и поиска информации из всех возможных источников, но говорить "иди ковыряй чужой код и читай мою любимую книжку, иначе не стать тебе погромистом" это... Действительно, каждому свое, тут не поспоришь даже.
202 1953106
>>3103

>или ковырять гит такого же самоучки


Должна быть природная интуиция, чтобы отличать добро от говна.
И, если она есть, то чтение правильного чужого кода и правильных книг - это великое благо.
203 1953112

>читай книжки


>смотри код


>интуитивно


>станешь синьором


хуя шиза в вакууме
204 1953123
>>3106
И чем отличается анализ незнакомого тебе кода от написания кода, когда оба этих процесса изначально основываются на интуиции с твоих же слов?
205 1953147
>>3073
Как делать такие скрины?
206 1953158
>>3147
carbon.now.sh
207 1953171
>>3098

> факт, что JS - дрисня


Это не факт, а твое ничего не стоящее мнение.
208 1953245
Алярм, мужички. Я сделал небольшой проект с роутами, сбилдил, закинул на бесплатный хостинг, все работает, но если зайти на роут и перегрузить страницу, то ошибка 404. Как это решается?
209 1953261
>>3245

> Как это решается?


Отладкой.
210 1953295
>>3245
Роуты неверно прописал
211 1953310
>>2868
Чёт ты всё мимо проходишь и никак не можешь пройти.
212 1953317
>>1207

>Алгоритмы - императивны.


Долбоеб, не неси хуйню.
213 1953321
>>3245
Советую вкатится в вебпак, ручками настроить вебпакдэвсервер, тогда все поймёшь , cra заставляет неверно конфигурировать package.json, дропай эту хуету, один раз напишеш шаблонный конфиг и все будет заебца
214 1953330
>>3089

>Дроч с конфигами — главная боль фронтенда имхо


Это ж фича бабеля - плагины конфигов пресетов.
>>3098

>в которых, в итоге, получается сильно больше знаков, чем если бы ты писал типы в TS?


ЖСдоковые каменты по крайней мере в тело функции не протекают и ими можно назначать тип функциональным объявлениям. И проиграл от количества знаков, какая тебе нахуй разница сколько там знаков в сырцах?
215 1953332
>>2834
В чем тогда разница между сеньером и джуном?
216 1953353
>>3332
За синьором не нужно приглядывать.
217 1953360
Можно ещё вкатиться в 2021 или уже все? Я старше 20 ещё.
218 1953361
>>3360
Иди отсюда нахуй.
219 1953385
>>3360
можно
220 1953412
>>3295
Ну хуй знает. Взял только что рандомный проект из Гита, тоже сбилдил, залил в папку хостинга и нихуя. Все роуты при перезагрузке выдают ошибку хостингового сервиса. Может их надо ещё как-то на хостинге настраивать?
221 1953413
>>3360
Бери да делай, хули тут на дваче спрашивать, половина в этом треде долбоебы, которые максимум alert("Hello, world!"); написали. Я знаю тех кто в 40 вкатился, главное просто не ссать, а что-то начать делать.
222 1953419
>>3245

>на бесплатный хостинг


Наверное никак, чтобы не было 404 тебе нужно в конфигах сервера прописать что все роуты идут через твою страницу (например index.html) если там nginx и у тебя нет доступа к конфигам, то земля тебе пухом, есть Apache, пробуй .htaccess конфигурировать. Сейчас у тебя скорее всего по роутам сервер ищет физически расположенный файл по этому адресу, а его нет вот и 404. А в проекте у тебя все работает потому что роуты без перезагрузки страницы и js меняет url в адресной строке.
223 1953420
>>3413
Ну я бы сказал, что главное не начать делоть, а продолжить
224 1953426
>>3419
Видимо так и есть. Перенаправляет на страницу, ссылка на которую записана в htaccess. Хостинг hostronavt.ru, может кто сталкивался. Как это делается в реальных проектах? Меняется конфиг сервера хостинга? Или может на хостинг заливать билд спроектированный на экспрессе, который на гет запросы будет отправлять файлы ? Или это совсем хуйня?
225 1953428
>>3426

>htaccess


>Как это делается в реальных проектах?


Обычно Apache не используется, он остался только на говнохостингах, все юзают nginx, гугли конфиги под свой стек на конкретном сервере. Телепатов тут нет.
226 1953431
>>3428
Ок, спасибо. Удостоверился, что не в коде ошибка.
227 1953442
>>3428
Лол. Добавил в htaccess несколько строк
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.html [QSA,L]

И все заработало, как надо. Хуй знает зачем пишу сюда. Может у кого-то тоже будут такие проблемы.
228 1953450
>>3442
Это ты ещё со спрингом не работал, я проебался 2 дня и заменил в одной XML пару символов и оно заработало как надо
229 1953457
Щас бы после CVE-2021-21315 доверять node.js...
230 1953461
>>3457

>npm package "systeminformation"


>UNDERGOING REANALYSIS


Дальше не читал.
231 1953464
232 1953475
>>3428

>Обычно Apache не используется, он остался только на говнохостингах, все юзают nginx


Ты невежда и максималист.
Кто все? Я юзаю виндасервер. Апач удобней для небольших проектов на виртулках. Энжиникс удобней для дедиков.
233 1953487
>>3310
Ну а почему бы не попустить очередного вкатыша, который дохуя умничает? ООП в редаксе у него, просто в голосину нахуй.
234 1953507
>>3487

>если вызываешь метод из модуля, то это не ООП.

235 1953532
>>3475
Чем удобней то? У тебя пхп мод еще небось?
236 1953551
>>3507
Какой метод, какого модуля? Дебич, иди доки редакса почитай. Господи, почему вкатыши такие тупые?
237 1953552
>>3551
Редакс хранит глобал стейт не в объекте, ага.
238 1953553
>>3552
При чём тут глобал стейт, еблан?
239 1953574
>>3553
А для чего редакс используют, дебилоид?
240 1953587
>>3574
Вкатыш, пощади. В глобал стейте нет методов. Ещё раз: пиздуй доки зубрить прежде чем нести хуйню.
241 1953588
>>3587

>В глобал стейте нет методов.


И глобал стейт волшебным образом меняется сам по себе. И он конечно же не объект.
242 1953589
>>3588
ООП тут при чём? Стейт меняется через вызов функции экшн-криэйтора с последующим возвратом нового стейта через редьюсер. ООП тут вообще не при чём.
243 1953591
>>3589
И экшенкриэйтор конечно же тоже не объект.
244 1953593
>>3591
Не объект. Ты заебал троллить тупостью. Даже если был бы объектом, то это не про ООП.
245 1953599
>>3591
Action Creator это функция.

Аction это объект. Но это вообще не имеет никакого отношения к ООП, так что советую принять таблетки и не пиздеть в чем не разбираешься.
246 1953616
>>3593
я хызы с чего тут спор начался, но любая функция это на самом деле частный случай объекта, так что технически вы не правы
247 1953636
>>3616
Вот, а я всегда говорил, что фп - частный случай ООП!
248 1953659
>>3073
Пофиксил, кста
Убрал флаг debug в .babelrc. Зачем его вообще ставят в туториалах? Нах мне смотреть какие там плагини что скомпилировали, если я макак всё работает
>>3330

>Это ж фича бабеля - плагины конфигов пресетов


Но лучшего у нас нет..
image.png210 Кб, 820x666
249 1953672
Написал небольшой коммерческий интернет магазин на реукте. До сих пор ссусь проходить собесы. Есть разные вещи, которые я понимаю как работают, но когда доходит до четких ответов, начинаю скулить, мычать и нести хуйню. Что делоть? Пару раз давно проходил собесы, уходил обоссанным, флешбеки из шольных лет, где училка ставит тебя к доске, понимает, что ты нихуя не знаешь, но все равно закапывает тебя вопросами, наслаждаясь твоей беспомощностью
250 1953674
>>3672
Значит учи дальше, если не модешь обьяснить значит не знаешь
251 1953675
>>0886 (OP)
Эксперты работы с апи обьясните почему если меняю ссылку на апи которое в комментариях то происходит тайперрор

https://codesandbox.io/s/bold-turing-f71jo?fontsize=14&hidenavigation=1&theme=dark
252 1953684
>>3675
Значит прилетают другая структура данных, чекай через clg
253 1953686
>>3675

>TypeError


>Type Error


>Type


смекаешь?
ты мапишь объект, какие эксперты апи...
254 1953708
>>3475

> Я юзаю виндасервер.


Кто из нас невежда после этого
c3aed905d536e720d818bdb843d0cdcb.jpg45 Кб, 512x470
255 1953743
>>3672
Ну не знаю, попроси знакомого поиграть с тобой в ролевые игры "интервьюер - соискатель".
256 1953748
>>3743
Я уже играл со своей тян, если вы понимаете о чем я :3
257 1953788
>>3748
Не бойся на собесе физически ебать тебя никто не будет, только морально и то не везде
258 1953792
Кто-нибудь пользовался Zustand в проде? Есть какие-то подводные? https://www.npmjs.com/package/zustand
259 1953806
>>3672
Для собеса надо знать только базу - замыкания, прототипное наследование, сортировка, это стандартные вопросы на всех собесах.
Срякт и остальное что выучил можешь на пальцах объяснять. Главное еще что бы пет проект был вылизаный, заходишь на него и все блестит. Так обычно в джуны и набирают.

В любом случае лучше пробовать идти на собес, когда будешь работать - в тиме будешь расти быстрее, нежели дома.
260 1953810
>>3806
Но скорее всего у тебя не прокачаны софт скилы и социально взаимодействие. Потому что тот кто заинтересован в работе - обычно проявляет инициативу и настойчивость - в ходе беседы понимает где его минусы, интересуется как минимум чего ему не хватило для оффера, хотябы в обратном письме эйчару. После того как узнал что компания в тебе не увидела - дрочишь эти темы и дрочишь. Потом пробуешь еще раз проходить собес, можно в том же месте можно в другом.
261 1953852
>>3672
Пройти не пару, а пару десятков собесов хотя бы
262 1953854
>>3599

>Action Creator это функция.


In JavaScript, functions are first-class objects (c) MDN
263 1953902
>>3442
Всё правильно сделал, пишешь ты сюда на тот случай, если лет через пять у кого-нибудь возникнет такой же вопрос.
264 1953918
>>3810
>>3806
Какую же тут хуйню несут. Сразу видно, тред умственно отсталых жопаскриптеров свитчеров.
265 1953921
>>3918
А как на самом деле?
Снимок экрана 2021-02-28 в 19.39.36.png31 Кб, 455x316
266 1953932
>>0886 (OP)
Сап, джигиты. Пытаюсь в редакс и появился вопрос - если я обращаюсь к стору в родительском компоненте, насколько правильно передавать стейт стора/экшены как пропсы дочернему? Или это говнокод, а в дочернем компоненте нужно еще раз подключиться к стейту?
267 1953933
>>3932
Ксли юзаешь хуки то похуй, если юзаешь connect то можно создавать контейнер и его подключать
268 1953943
>>3921
Как на самом деле тот челик расписал, ты спрашиваешь у залетного тролля. Не ведись на него.
269 1953944
Вебпак нужно уметь настраивать или шаманить в нем?
Или достаточно один раз настроить и потом просто копировать его в проекты и меня src пути к файлам?

Посмотрел гайд, все настроил, все работает, лень там че то разбираться дальше.
270 1953946
>>3932
Смотря что ты хочешь сделать. Я вот пилю интернет-магазин-PWA на гатсби и у меня компоненты там двух видов - UI, которые нужны чисто чтобы рендерить UI элементы и собсно родительские, которые задают структуру и получают данные из редукса, которые потом передают в UI компоненты по надобности, а также они же диспатчат экшоны в редукс, который потом меняет стейт, запускает thunkи, которые общаются с API и так далее.
271 1953947
>>3944
Боишься что интернеты прикроют и не сможешь в следующий раз загуглить?
272 1953949
>>3947
Интересуюсь у тех кто давно в теме - нужно ли там досканально изучать его настройку, или достаточно знать как подключать файлы для компиляции и модули?
273 1953953
>>3949
Блять, анон, странные у тебя вопросы. Вебпак, как и вообще любой фреймворк, библиотека, пакетменеджер и прочая хуйня - созданы исключительно для твоего удобства. Ты сам решаешь насколько хорошо тебе надо ознакамливаться с инструментом, который облегчает тебе жизнь. Никогда не понимал откуда у людей такая тяга устраивать себе специальные олимпиады на ровном месте.
274 1953955
>>3953
КАК В РАБОТЕ ИСПОЛЬЗУЮТ ВЕБПАК, НА РАБОТЕ? В ОФИСЕ? ПОСЛЕ ВЫПИТОГО СМУЗИ?? КАК ВЕБПАК В ИДЕАЛЕ НАСТРАИВАЮТ??? КАК ВЕБПАК НАСТРАИВАЮТ ХИПСТЕРЫ БОРОДАТЫЕ В СТАРТАПАХ???? КАК ВЕБПАХ ИСПОЛЬЗУЕТСЯ В КРЕЕМНЕВОЙ ДОЛИНЕ??? КАК ВЕБПАХ НА ГАЛЕРЕ НАСТРАИВАЕТСЯ??? ВЕЗДЕ ОДИНАКОВО??? +-???? ЕСТЬ ОТЛИЧИЯ ГДЕ ТО????

так понятно?
275 1953956
>>3955
Как хотят так и настраивают, стандарта какого-то нет.
276 1953957
>>3956
спасибо :))
277 1953996
>>3792
Опа, ни дня без стейт менеджера в манямирке реакта.
278 1954001
Можно ли в темах стайлед компонентов хранить какие-то глобальные переменные? Т.е. у меня не будут менятся темы сами по себе. Но я просто хочу вынести туда то, что будет указываться часто, типа набора размеров шрифтов, цвета всякие и т.д. Это так делается у стайледов? Или просто создать отдельный .js файл, и оттуда по мере необходимости экспортировать нужные переменные?
279 1954003
>>0886 (OP)
Есть те, кто работая в одной компании становился из JS джуна мидлом? (Ну или те, кто увольнялся с джуна и шёл на мидла). Какой багаж знаний и сколько коммерческого опыта вы имели на этот момент?
280 1954005
>>4003
Перед тем как стать мидлом, 3 месяца джунил, там рост быстрый, вот до синера над попотеть
281 1954020
>>4003
Сеньор в одной компании, может оказаться джуном в другой.
carbon.jpg730 Кб, 1362x1452
282 1954025
Кто со стайлед компонентами работал, объясните пожалуйста, а где можно собственно выбрать, какую тему в провайдер передавать? К примеру в нексте нужно обернуть в компоненте app всё компоненты, чтобы передать в них стор, потом обернуть всё в themeprovider. А из какого компонента я потом выбрать тему могу? Ведь доступ к стору я из самого app получить не могу, поскольку этот компонент в стор не обернут. А значит из всех дочерних компонентов я переключить тему не смогу. Мне кнопку же не в самом app компоненте делать? Придется еще одну обертку для провайдера делать в каком-то нижнем компоненте и туда уже передавать текущее значение для темы?
283 1954027
>>4025
Ну и да, в доке styled-components они просто в app компоненте делают кнопку, которой эти темы меняют. Но очевидно что в реальности в этом компоненте кнопку держать неправильно
carbon2.png174 Кб, 1498x1564
284 1954032
>>4025
Ну т.е. вот к примеру, с такой оберткой я тему уже откуда угодно могу тему переключить. А как это обычно делается вообще?
285 1954033
>>4020
Ну на столько ебнутых ситуаций ИРЛ не видел(если специалист не меня стек), но про грейд +- таких историй полно. Меня интересует просто различный опыт людей, который от компании к компании может быть разный.
photo2021-01-1111-05-12.jpg111 Кб, 1057x1280
286 1954040
РЕДАКС ХУЙНЯ????????
РЕДАКС МОЖЕТ В REALTIME STATE UPDATING?
Screenshot5.png3 Кб, 231x122
287 1954041
>>0886 (OP)
Какого хера объект ошибки конвертится в строку, а обычный объект нет. Это баг или фича?
image.png3 Кб, 444x52
288 1954043
иисус.png794 Кб, 589x763
289 1954044
>>4043
Ну охеть теперь.
290 1954046
>>4025
Зачем ты вообще тему в глобал стейте держишь?
291 1954048
>>4040
Кто угодно может, просто читаешь поток данных из вебсокета и обновляешь что нужно
292 1954049
>>3854
Продолжай дрочить на терминологию и думать что теперь знаешь подноготную JS, раз оказывается под капотом функции это объекты. Только на практике это тебе никак не поможет, хоть ассемблерными вызовами их назови, важно их поведение на высоком уровне.
293 1954051
>>4001

>2021


>styled components

294 1954052
>>4051
А че юзать?
295 1954057
>>4046
Не тему. Стейт, который можно передать, чтобы эту глобал тему сменить
296 1954059
>>4051

>Любой год


>Что угодно

298 1954061
>>4052
Очевидный Sass. Styled components замедляют и так тормознутый реакт ну и добавляют еще один слой пиздеца в кашу JS + JSX.
photo2021-01-1306-42-28.jpg60 Кб, 1080x1066
299 1954065
ЗА КАКИМ >ЯЗЫКОМ БУДУЩЕЕ???
ПЕТОН?
РИАКТ?

ДЖАВАСКРИБТ?
СИ ПЛАС ПЛАС?
300 1954066
>>4060
Спасибо, понятно теперь. А то обработчик ошибок стянул с прошлого проекта и тут внезапно ошибки посыпались.
Могли для msql библиотеки и запилить это свойство
301 1954103
>>4061

>Очевидный Sass


Орево.
302 1954108
>>4025
Не понял в чем проблема, просто где угодно меняешь state.theme
303 1954109
>>4061

>sass


>2021


Lol!

>Styled components замедляют


Пруфы? На сколько замедляют, на 0.0001 ms? Ну если тебе так важно, можно юзать linaria, тогда вообще не будут замедлять.

>и так тормознутый реакт


Просто не пишешь говнокод и ничего не будет тормозить.

>ну и добавляют еще один слой пиздеца в кашу JS + JSX.


Наоборот убирают слой css классов, которые загрязняют JSX.
304 1954112
>>4108
Менять я могу где угодно, а передать этот стейт в компонент самого высокого уровня я не могу, или не знаю как
305 1954114
>>4061

>Очевидный Sass


Бестолочь, твой сасас неуправляем средствами js, в итоге ты будешь использовать и сас и инлайн стили, и кучу условного применения стилей
306 1954131
>>4114
Будет серить в JSX data-атрибутами, в то время как мог бы аккуратно передавать пропы в стайледы
307 1954160
>>4114
Нахуй тебе управлять стилями через жс?
308 1954174
>>4160
У тебя могут быть почти одинаковые по сути компоненты, но которые могут менять свой внешний вид в зависимости от каких-то состойний, заглушенные кнопки, и т.п. Либо делай всё стилями, либо в стайлед компоненты передай пропсы. В первом случае у тебя будет каша css стилей и условного рендеринга. Во втором у тебя будет только один единственный стайлед компонент с пропсами
309 1954177
>>4114
А стили и не должны управляться джсом. Джс управляет классами, стили применяются к ним. Styled components как идея бред. Конечно, это работает, но даже простые стили выглядит как пиздец смесь CSS и JS, страшно представить как это выглядит в больших проектах с вложенными селекторами и со сложным CSS. Стили вообще не должны никакого отношения иметь к компонентам, все что их волнует это конечные HTML селекторы.

>>4109

>Наоборот убирают слой css классов, которые загрязняют JSX.


Поперхнулся. Как можно загрязнить то, что и так уже является грязной смесью разметки и кода?

>Просто не пишешь говнокод и ничего не будет тормозить.


Просто любое реактоговно даже от реакторазрабов тормозит, видимо не родились еще люди которые могут идеально писать реакт код.
310 1954178
>>4174
Переключать классы в зависимости от состояния плоский мозг не позволяет?
311 1954182
>>4178
>>4177
В итоге у тебя на 10 вариантов различных комбинаций состояний будет по 10 классов для каждого пука?
312 1954183
>>4174
Ты охуеешь, но можно просто вынести твои состояния в отдельный компонент и переключать классы в нем, если очень сильно нужно. Будет точь-в-точь styled components но лучше. Но обычно даже это не нужно, и ты избавляешь себя от необходимости писать десять импортов кастомного говна, чтобы табличку сверстать, а просто пишешь html с классами.
313 1954185
>>4182
Дурачок, а сколько у тебя будет комбинаций на 10 различный состояний? Или css-in-js уже вознесся над основами логических комбинаций и там тебе не нужно 10 модификаторов для 10 состояний, все делает зубная фея палочкой?
314 1954197
>>4183
Дело тут в том, что стайледы находятся в одном месте и все, что там внутри происходит сразу же у всех на виду. А что ты там в классах с десятикратным условным рендерингом понаписал, не всегда знаешь даже ты сам.

>вынести твои состояния в отдельный компонент


Поздравляю, ты только что styled-components

>html с классами


Неудобное говно само по себе, тут даже обсуждать нечего, если только у тебя там не тудулист из 4х элементов без переиспользования

>>4185
Научись пожалуйста излагать свои мысли, я тебя с трудом понимаю. У тебя есть один стайлед компонент, внутри которого ты можешь делать все, что угодно использую все средства js. У классов говно мамонта 1000 летней давности. Предлагаешь писать отдельный класс на каждый пук, где у тебя isMobile, isDisabled, isActive, isHuiNane? Я просто не понимаю что тут вообще можно обсуждать. Может у тебя конечно там 10 захардкоженных компонентов на каждое дуновение ветра, но тут уж земля бетоном тогда
315 1954202
>>4177

> А стили и не должны управляться джсом. Джс управляет классами, стили применяются к ним


В итоге реакт компоненты засраны этим управлением классами, в то время как в случае со стайледами просто аккуратно предаются пропы.

> Styled components как идея бред. Конечно, это работает, но даже простые стили выглядит как пиздец смесь CSS и JS, страшно представить как это выглядит в больших проектах с вложенными селекторами и со сложным CSS.


Выглядят как sass, только не замусорены классами и дата-атрибутами.

> Поперхнулся. Как можно загрязнить то, что и так уже является грязной смесью разметки и кода?


Если ты грядет пишешь JSX, то это твоя проблема.

> Просто любое реактоговно даже от реакторазрабов тормозит, видимо не родились еще люди которые могут идеально писать реакт код.


У меня не тормозит, и у многих других.

>>4185
Передаешь объект с возможными состояниями как проп один раз вместо говномесива из переключений классов и всё.

>>4183
Чем лучше? Правильно, ничем. Дожили, даже в js-среде ретрограды есть, хотя казалось бы — самая динамичная среда в разработке.
316 1954204
>>4202
> Если ты грязно пишешь JSX, то это твоя проблема
Самофикс
317 1954207
>>4197

>А что ты там в классах с десятикратным условным рендерингом понаписал


Ну так не пиши классы с десятикратным условным рендерингом, поехавший. sass тут при чем?

>У тебя есть один стайлед компонент


Один на каждый пук в приложении и все стили с нуля пишешь? Или может они все-таки что-то между собой имеют общее? Если второе, то не один.
>>4202

>Передаешь объект с возможными состояниями как проп один раз вместо говномесива из переключений классов и всё.


А в кастомный компонент ты объект с состояниями передать не можешь или как?
318 1954209
>>4207

> А в кастомный компонент ты объект с состояниями передать не можешь или как?


Каждый span в реакт компонент что ли оборачивать? И там разводить дрисню из переключения классов, когда я могу одной строчкой это через стайледы сделать?

В общем, хотелось бы увидеть реальные ощутимые примущества сасс перед стайледами. Но вот что-то ни разу никто не выложил пример, где было бы видно в коде, что сасс лучше стайледов.
319 1954210
>>4197

>Дело тут в том, что стайледы находятся в одном месте и все, что там внутри происходит сразу же у всех на виду. А что ты там в классах с десятикратным условным рендерингом понаписал, не всегда знаешь даже ты сам.


Не поверишь, селекторы по классам состояний тоже в одном месте находятся, в скоупе базового класса.
320 1954214
>>4209
Тебе нужно переключать классы у каждого span'а в приложении? Если нет, то попробуй другую аргументацию, эта жиденьким стекает по ляжке.
321 1954215
>>4209

>одной строчкой это через стайледы сделать


Как будто говно, которое ты импортируешь свой стайлед, не состоит из дрисни ифов.

>Но вот что-то ни разу никто не выложил пример, где было бы видно в коде, что сасс лучше стайледов.


Странно, что ты тоже нихуя не выложил, а доказывать тебе должны тебе.
322 1954223
>>4210

>селекторы по классам состояний тоже в одном месте находятся, в скоупе базового класса.


Ну теперь стал понятен уровень дискуссии. И вот такую срань ты предлагаешь в качестве альтернативы стайледам? Это так верстальщики свой загон охранять решили? Ну тогда понятно
323 1954224
>>4209

>хотелось бы увидеть реальные ощутимые примущества сасс перед стайледами


Нет дружок, речь как раз о том, что сасс делает все то же самое, что делает любая js-дрисня для стилей, но выглядит лучше, воспринимается легче, работает быстрее и понимается любым человеком, знакомым с азами css-html. Так что показывать и доказывать преимущество js-дрисни на сассом должен именно ты или другие подобные тебе, а не наоборот. Пока этих преимуществ не видно.
324 1954226
>>4223

>Ну теперь стал понятен уровень дискуссии. И вот такую срань ты предлагаешь в качестве альтернативы стайледам?


Твоя альтернатива - хранить такую же срань в отдельном модуле, заместо отдельного файла стилей.

>Это так верстальщики свой загон охранять решили?


Неплохая боль неосилятора CSS, языка для макак между прочим. Интересно конечно про загоны слушать от жсдебила, который даже свою маму в скрипте хранит.
325 1954228
>>4224
Толстота полилась. Покажи компонент кнопки, который может иметь 3 разных стиля, 2 разных варианта для мобильной и десктопной версии, состояние активно и заблокировано. И чтобы в любой момент ты мог 3 изначальных стиля расширить. Мне страшно представить какое количество говна ты туда понапишешь своим сасасом, который ты сам не сможешь разобрать уже через полчаса после написания.
326 1954230
>>4226
Тебе тот же самый пример >>4228
327 1954231
>>4226

>неосилятора CSS


Ну тут уже в шепот, как будто бы я не верстал никогда сложных интерфейсов, и решил на стайледы перейти просто из вредности тебе, хуя маняутешения сразу нашлись
image.png14 Кб, 348x481
328 1954242
>>4228
Держи, дурачок. Покажешь свою js дрисню или как обычно пукнешь и сольешься?
329 1954244
>>4242
Ну вот о том и речь, теперь подумай как это выглядит на самой кнопке, где у тебя будет миллиард условий для рендера отдельных классов, вместо тех же самых условий в самих полях стилей которые видны сразу. Ты ушел не так далеко от того, чтобы сделать это еще удобнее. 3 вида кнопки, это изначальные стили, а уже к ним применяется состояние активно или заблокировано, в итоге тебе все равно нужно будет создавать отдельный компонент, который еще и стили будет подгружать, вместо того чтобы этот компонент изначально на стайлед компонентах и сделать чел пчел пчелибас, тут просто не может быть никакого смсысла в добавлении стилей к тому, что изначально стилями можно описать
330 1954251
>>4244
Не вижу твоего варианта, видимо не прикрепилось. Попробуй еще раз.

>как это выглядит на самой кнопке


<button className="btn btn-primary"/>

>в итоге тебе все равно нужно будет создавать отдельный компонент


Создам я его только тогда, когда он мне понадобится, не раньше. У меня же нет невынимаемой sc-затычки в жопе, которая требует кастомного комопнента на любой пук.
331 1954258
>>4251
То, что ты мне показал, вообще к изначальному условию, которое я описал не применимо. Очень похоже на то, что ты просто верстальщик, и не хочешь терять своё место, либо учить js

><button className="btn btn-primary"/>


Даже в этом простейшем примере у тебя уже на первой же итерации начала выходить дристня. Объясни мне, а лучше сначала себе, зачем в этой цепочке нужна прослойки из css классов?

>Не вижу твоего варианта, видимо не прикрепилось. Попробуй еще раз.


Я твоего тоже не увидел, но забавно то, что даже в твоём урезанном до предела примере всё уже выглядит как говно. Представь, что у тебя btn-primary1, btn-primary2, btn-primary3, для каждой active, disabled, и для каждого варианта wide/mobile. И попробуй убедить себя в том, что классами это можно сделать элегантнее и читабельнее. И это при том, что тебе все равно нужно будет создавать компонент. В итоге ты сделаешь бессмысленную прослойку видимо только из вредности мне?
332 1954272
>>4258

>То, что ты мне показал, вообще к изначальному условию, которое я описал не применимо


Шизик, твое начальное условие описанное тобой же, это: 3 разных стиля, 2 варианта для мобильной и десктопной версии и два состояния. Все соблюдены до точки. Что ты там нафантазировал у себя в голове я прочитать не могу, только то, что написано текстом.

>Объясни мне, а лучше сначала себе, зачем в этой цепочке нужна прослойки из css классов?


Ну наверное потому что просто кнопка и кнопка с primary стилем - это разные кнопки и это стандартная практика шеринга стилей, чтобы их не дублировать несколько раз в итоговом коде? Лично ты можешь сделать миксин кнопки и включать его внутри btn-danger/btn-primary, тогда даже btn писать будет не нужно, если готов заплатить за это несколько килобайтов. Разрешаю.

>Представь, что у тебя btn-primary1, btn-primary2, btn-primary3


Представить не могу, если не дебил с цифрами в классах. То, как мои кнопки будут выглядеть, я уже написал:
<button className="btn btn-primary" disabled={isDisabled}/>
<buttom className="btn btn-danger" disabled={isDisabled}/>

Расскажешь, почему для это вдруг "нечитабельно" и как js-дрисня сделает это лучше? И все еще жду пример твоей js-дрисни, а то в воздух ты пердел-пердел о конкретике, а в итоге сливаешься без примеров.
333 1954290
>>2889
Пробуй без статики и с меньшим количеством зависимостей
https://stackblitz.com/edit/typescript-kpxz6k?file=index.ts
334 1954299
>>4214
Сначала дай хоть один внятный аргумент чем архаичный sass лучше стайледов.

>>4215

> Как будто говно, которое ты импортируешь свой стайлед, не состоит из дрисни ифов.


Ничего никуда не импортируется, пропы в стайледы прикидываются как в обычных реакт компонентах и дрисни из ифов нигде нет. Только однострочные тернарники.

> Странно, что ты тоже нихуя не выложил, а доказывать тебе должны тебе.


Первым было утверждение, что стайледы говно, вот и доказывайте, сасс-шизы

>>4224

> Нет дружок, речь как раз о том, что сасс делает все то же самое, что делает любая js-дрисня для стилей, но выглядит лучше, воспринимается легче, работает быстрее и понимается любым человеком, знакомым с азами css-html


Но стайлдеы могут всё то же, что и сасс, но при этом больше из-за возможней js. Стайледы выглядят красивее и легче воспринимаются, потому что в них нет дрисни из css-классов, и в них нет ничего сложного, из понимает любой человек, который уже работает с реактом.
336 1954337
>>4299

>Но стайлдеы могут всё то же, что и сасс, но при этом больше из-за возможней js


Каких возможностей тебе в сассе не хватает, подскажи?

> Стайледы выглядят красивее и легче воспринимаются


Перетолстил.
>>4302
Ну вот видишь, уже выглядит как дрисня с магическим кастомным DSL и у этих людей хватает наглости кукарекать про "неявность" сасса, а теперь возьми стандартный реакт компонент с десятком разных элементов. Будешь каждый раз хуячить 10-строчные импорты своих кнопок, таблиц, лейаутов?
Стикер255 Кб, 512x512
337 1954342
>>4302
Блен. Не обессудь пчел. Как по мне это всё слишком нагромождёно смотрится и читается. И это я так понял маленькая простыня, а если большой компонент будет...

мимо
image.png44 Кб, 603x482
338 1954343
>>4342
Скрин не прикрепился. Фикс
339 1954350
>>4342
По объему не больше sass, так что не вижу нагромождения. Ну и читается не сложнее, как по мне, тем более подсветка синтаксиса в vscode лучше, чем в codesandbox.
Огромный компонент будет не больше, чем sass, но удобнее. Выше в треде был пример с sass, там не меньше объём.

>>4337

> Каких возможностей тебе в сассе не хватает, подскажи?


Возможностей js, очевидно.

> Будешь каждый раз хуячить 10-строчные импорты своих кнопок, таблиц, лейаутов?


Импорт всего лишь несколько строк в начале файла занимают, это вообще не мешает, в отличие от засирания jsx css-классами и логикой из переключения. Но ещё одно преимущество стайледов в том, что локальные компоненты можно объявлять прямо внутри реакт компонента, а импорты будут только для общих компонентов типа кнопок.
340 1954351
>>4350
Попробовал этот стайлед, если размещать стили в самом компоненте приходится туда сюда скролить постоянно, хуй знает с другой стороны удобно что все в одном месте, прям пиздец хуй знает че делать
341 1954353
>>4350

>Возможностей js, очевидно.


Каких? Одну назовешь?

>в отличие от засирания jsx css-классами


То есть засирание импортами говна тебе не мешает, а обычные html-классы вдруг мешают? Ты поехавший?

>и логикой из переключения


Не засирай, вынеси логику переключения в отдельный компонент, прямо как выносишь любую другую. Зачем тебе для этого ебаный sc?

>Но ещё одно преимущество стайледов в том, что локальные компоненты можно объявлять прямо внутри реакт компонента


Это называется "антипаттерн" и "говнокод", а не "преимущество".
342 1954434
>>0886 (OP)
Нужно получить JSON с данными с сервера. Есть условие, что в респонсе должен быть ответ со значением {stop: true}, тогда типа все ок, JSON готов.
Я решил поиграться в браузере - вбил строку с реквестом, и смотрю в консоле респонс, там stop всегда false (пробовал отправлять реквест несколько раз снова и снова, в итоге сервер просто обрубил меня).
Это как - в промисе ждать, пока в респонсе тру не будет, не резолвить? Или другой способ? Почему в браузере не получается?
343 1954439
>>4434

>в респонсе должен быть ответ


В респонсе должно быть значение
слоуфикс
344 1954453
>>4342
Чел пчелибас, то, что ты видешь это буквально весь код. То, что высрал сасасозащитник, это только css код, который уже выглядит хуже и каждый пук еще и свой УЖАСНЫЙ НЕНУЖНЫЙ JS КОД будет просить, но этого он отчаяно не хочеть видеть и не хочет показывать
image551 Кб, 733x678
345 1954496
Пацаны, чет подзабыл, подскажите:

Когда через скрипты меняем например текст в html документе.

Где хранится этот измененный DOM ? В кэше?

Типо если обновить страницу, то HTML страница возвращается к стандартному DOM который был прописан в HTML до выполнения скрипта. Измененный DOM типа временный получается.
346 1954512
>>4496
Не знал, да ещё и забыл!
347 1954518
>>4496

>Где хранится этот измененный DOM ?


В DOMe
348 1954555
Как бы мне SASS не нравился, но он пососет, когда надо будет делать стилизацию вложенных компонентов. В SASS амперсанд селектор нельзя ставить не в начале селектора, а в SC можно (&&). Это нужно для правильной семантики, не всегда родительский компонент должен диктовать как выглядит дочерний. Также CSS-in-JS позволяет лучше отслеживать модули и их импорты, что упрощает рефакторинг и переход к имплементации по клику в IDE. В SC ты можешь импортировать компонент и вставить в литерал вместо CSS класса компонента, что не позволяет оставить старое имя класса, после его переименования.
Все, что по факту предъявляют SASS-шизы в треде - импакт по производительности. Который на деле является микроскопическим, если ты делаешь все правильно и не дрючишь стили 60 раз в секунду. А если ты настроишь SSR, то этот импакт вообще устремится к нулю.

Про отвал всего приложения на SC: приложение надо тестировать и ошибки оборачивать в ErrorBoundary
349 1954585
>>4512
>>4518
А нормально ответить, а не как долбоебы с задней парты можете?
350 1954627
Написал свой онлайн магазин, типо вайлдбериз или озона. Как думаете на IPO уже щас подавать? Или еще подождать лучше?
351 1954630
>>4627
Думаю сейчас рынок не готов к такому, ты опередил своё время. Нужно выждать момент
352 1954640
>>4627
Тебе самому как, нравится, что у тебя от селекта айтемов грид прыгает будто у него эпилепсия?
353 1954666
>>4640
Там флекс стоит. А как надо сделать прально? При выделении позишн абсолют делать?
354 1954686
>>4666
можешь border заменить на box-shadow, он не будет ничего сдвигать. Если игнорировать сам факт того, что ты делаешь какую-то хуйню. Ну или просто использовать гриды
355 1954712
>>4353

> Каких? Одну назовешь?


Уже не раз назвал возможность передавать пропсы, например, или темизация, но ты копротивляешься ради архаичного пердолинга с классами, дата-атрибутами и написанием большего количества кода просто потому что у тебя иррациональная неприязнь к новым, более функциональным инструментам. Сасс-шизы это прямо неолуддиты из мира фронтенд разработки.

> То есть засирание импортами говна тебе не мешает, а обычные html-классы вдруг мешают? Ты поехавший?


Импорты во-первых ничего не засирают, их вообще не видно потому что они в самом начале файла, а вот css-дрисня гадит прямо посреди jsx.

> Не засирай, вынеси логику переключения в отдельный компонент, прямо как выносишь любую другую.


Зачем что-то куда-то выносить и засирать проект лишними файлами, когда я могу в стайледах аккуратно, красиво и удобно а одну или пару строк это сделать?

> Это называется "антипаттерн" и "говнокод", а не "преимущество".


Ты скозал? Single file components в vue тоже антипаттерн? Лол. Я для тебя ещё раз повторю: внутри реакт компонента иногда люди могут оставлять локальные стайледы. Common вещи вносятся в отдельные файлы, очевидно. Но импорты — это последнее, что засирает код, потому что их тупо не видно на экране во время работы.
356 1954719
>>4434
Бампану вопрос разок.
357 1954726
>>4686
Спасибо! Хорошего дня!
изображение2021-03-01203233.png132 Кб, 756x576
358 1954764
Аноны, подскажите как убрать эту гифку и текст из программы! Спасибо.
359 1954782
>>4555

>возможность передавать пропсы


sass у тебя эту возможность не отнимает, хочешь - делай логику и передавай. В 99% случаев тебе так и так нужно эту логику писать, потому что это рабочая логика приложения, а стили просто приходятся сверху дополнением, как и должны. Схуев ли ты решил, что завязывать стилизацию и рабочую логику переключения стейта в одно месиво это хорошая идея - большой вопрос.

>или темизация


Что тебе мешает сделать темизацию css-методами вместо ре-рендеринга всего приложения нахуй?

>написанием большего количества кода


Но больше кода пишут как раз sc-шизы, потому что выкидывают в окно готовые инструменты(html-классы) и пердолятся со своим инлайн говном и кастомными компонентами.

>их вообще не видно потому что они в самом начале файла


Охуительные истории, 30 строчек импортов - это заебись, они в начале файла и их не видно. Представляю твои файлы.

> Зачем что-то куда-то выносить и засирать проект лишними файлами


См. выше. Логика переключения стейтов - это рабочая логика, и писать для нее "лишние файлы" ты будешь так и так. А если не будешь, то инлайн добавить класс по условию нихуя не проблема.

>Ты скозал? Single file components в vue тоже антипаттерн


Да, я скозал. Что там в vue не ебу, но хуярить sc внутри комопнента - это точно то же самое, что хуярить инлайн-стили вместо классов. Почему это плохо и говнокод, можешь спросить в 2010 году, еще тогда все выяснили.
sfc.png110 Кб, 806x1092
360 1954845
>>4782

>Что там в vue не ебу


Во .vue файлах пик, scoped аттрибут изменяет любой селектор и добавляет доп. условие, чтобы в других компонентах/дом элементах с таким классом ничего не применялось. Ну еще можно сделать <style lang="scss"> и у тебя сасс работает (да что угодно, главное чтобы вебпак понял о чем ты), импортируешь свои миксины и дрочишься. И еще можно несколько <style> тагов, например хочешь прямо из компонента срать в глобальные стили. Короче хз нахуя я это пишу но лично мне вью очень нравится тем что его можно постепенно очень хорошо внедрять в уже существующее легаси говно.

мимо
361 1954849
Подскажите такой вопрос. Есть сервер простой на экспрессе. Где хранить в нем всякие api keys и прочие приватные данные? Установить dotenv, и через него получать доступ к моему созданному файлу .env с переменными? А как в продакшене это будет работать ? Я сбилджу, мои переменные из моего файла закодируются и у приложения к ним будет доступ без dotenv?
362 1954850
>>4849
Переменные не закодируются. Переменные будут браться из окружения
363 1954873
>>4850
Ну правильно я понимаю, что дотенв - пакет только для того что бы можно было из созданного мною файла брать переменные для разработки ? А в проде мои переменные подтянутся в окружение.
364 1954908
>>4849
1) Создаешь .env файл, пишешь в него все свои ключи, добавляешь этот файл в .gitignore
2) Создаешь .env.example файл пишешь в него все те же самые ключи, только без секретных значений, чтобы можно было окружение воспроизвести на другой машине или другому разработчику без заебов. Коммитишь этот файл и обновляешь по мере надобности.
3) Добавляешь в README как часть сетапа строчку `cp .env.example .env`
4) На любом новом сервере с проектом просто выполняешь команду выше и заполняешь все ключи, либо проставляешь эти ключи в ENV переменные контейнера, если у тебя какой-нибудь докер, а файл оставляешь пустым.
365 1954938
>>4434

>должен быть ответ со значением {stop: true}


И что, вечно будешь ждать? Может сервер его не пришлет. Нужен лимит времени, setTimeout, установить какой-либо.
366 1954944
>>4908
Ок. Спасибо.
367 1954979
Начал проходить эпический курс по js на 100 часов.

Так вот в конце курса проходим реакт. А в начале щупаем es6 и пишем свою библиотек по типу jquery, мол что бы понимать как классы работают и вообще библиотеки. Пока сидели разбирали как jquery работает я чуть не охуел от перегрузки, эта тема действительно нужна или можно скипать и учить реакт?
368 1954986
>>4979
А ты от реакта не охуеешь?
369 1954987
>>4979
Можно в целом обучение скипать и работать идти.

Да и чего воемя тратить? Иди сразу зарплату получать.
370 1954990
>>4986
а че там тоже надо писать свой классы с циклами на замыканиях?
371 1954993
>>4987
Ага, а ты можешь не писать сообщения, просто сразу нахуй идти.
372 1954995
>>4990
А ты программировать учишься или что вообще делаешь?
373 1954996
>>4993
Правда глаза колит?
374 1954997
>>4995
>>4996
Ладно, ладно.. пошел учить
375 1954998
>>4997
Курсы то покажи, а то вдруг там действительно реакт с классами, кек
376 1955004
Какие иде еще можете посоветовать кроме ВСК и ВЕбшторма для реакта+тс? В ВСК вроде бы неплохо, но в целом интерфейс какой-то тормознутый, я хз. Вебштормом пользуюсь полгода, даже платную версию купил, в целом все работает круто, но как доходит до каких-то нестандартных фич, он шлет тебя нахуй и отправляет в загон багрепортов, которые там годами висят.
377 1955005
>>4998
Там их 4, каждый продолжение предыдущего.
378 1955007
Сейчас смотрю курсы htmlacademy по html, у кого-нибудь есть весь html и css файл по сайту barbershop?
Курс невозможно смотреть, много воды + эти два деятеля не печатают код сами, а показывают какие-то картиночки.
КАРТИНОЧКИ, БЛЯДЬ!!!

P.S. Чьи курсы по html/js вы можете посоветовать?
379 1955011
>>5007
Нормальные у академии курсы. Весь макет лежит в гугле, на первой строчке, с приставкой git

петриченко нормально еще за html css поясняет, на рутрекере валяется
380 1955014
Как правильнее юзать редакс?
const add = () =>{
dispatch({type: actionTypes.ADD_TO_CART, payload: {id:id, name:data.Name, price:data.Price} })
}

или создать отдельный файл для экшенов, а потом просто написать
const add = () =>{
dispatch(addToCart(id,data)
}
381 1955015
>>5005
jquery bower oop decorator mobx
4/10
382 1955017
>>5015
устаревшее все типо? да оно и жиквери никто щас не юзает, но понимать надо
383 1955019
>>5014

>создать отдельный файл для экшенов, а потом просто написать


это
redux-toolkit поставь, чтобы первого варианта даже как варианта не было
384 1955027
>>5017
ну первый пик про версточку которая типа на работе учится и dom, к которому настоящие реакт-интеграторы не притрагиваются
Знать конечно это все нужно, но ты же уснешь

второй - это ооп за 24 часа ы, объект - значит ооп)) и ajax через jquery. jsonp хорош для кругозора, cors на работе почитаешь

третий неплох, но вот эти декораторы через бабель поняты не будут. mobx для начала тоже сомнителен, надо сразу погружать в редакс, чтобы spacex dragon завидовал жопной тяге, но это субъективное

4 был бы норм, если бы побольше хуков и поменьше классов, ну и смотря что там в разделе про формы

Все эти полифилы для фетча попахивают 2018. Ну и ни слова про тайпскрипт.
385 1955032
>>5027
Это все так, для общего кругозора, беру так сказать колличеством.
А качеством буду брать на курсе буры, там по реакту полный порядок.
Спасибо анончик, хорошего вечера!
386 1955042
>>5004
Ну пизда в общем, видимо придется продать душу дъяволу и уходить обратно в ВСК. Пиздец конечно, бесплатный опенсурс уделал платный редактор. Нормально там у них вообще всё в джетбрейнсах? Голова не болит? Срут нормально?
387 1955050
>>5014
npm uninstall react react-redux
npm install zustand

Не благодари.
388 1955052
>>5050
Ох две тонны чая
389 1955057
>>4585
Какой вопрос - такая, знаешь ли, и реакция, создается ощущение, что ты вообще не понимаешь что такое dom. Браузер получает html, браузер у себя в памяти строит модель по этому html - DOM, и показывает ее тебе. Если ты вносишь изменения в DOM - они разумеется не сохраняются в полученный с сервера html, даже если он кеширован, и сбрасываются, как только ты закроешь или обновишь вкладку.
390 1955059
>>5057
Да я так и думал, вопрос не так сформулировал наверно.
391 1955077
>>4782

>sass у тебя эту возможность не отнимает, хочешь - делай логику и передавай


Как передавать? Через дрисню из классов и дата-атрибутов? Нет, спасибо.

>Что тебе мешает сделать темизацию css-методами вместо ре-рендеринга всего приложения нахуй?


Неудобная и всратая ебля с css-переменными.

>Но больше кода пишут как раз sc-шизы


Ну, это просто не так. Стайледы наоборот сокращают количество css-дрисни.

>Охуительные истории, 30 строчек импортов - это заебись, они в начале файла и их не видно.


Схуяль 30 строчек? Сас-шиз, откуда ты себе это придумал?

>Что там в vue не ебу


Охуенно. "Не читал, но осуждаю". Типичный долбоёб, которому лишь бы спиздаануть своё охуенно важное мнение о том, в чём он даже не разбирается.

>хуярить sc внутри комопнента - это точно то же самое, что хуярить инлайн-стили вместо классов


Нет, не то же самое. Я скидывал codesandbox и там видно что это не так.

Продолжай оправдываться.
392 1955083
Есть для реакта генерилка компонентов, чтобы тс и шаблон в разных файлах?
И что в нем вместо ангуляровских модулей?
393 1955094
>>5077

>Как передавать? Через дрисню из классов и дата-атрибутов?


Через дрисню из пропсов, прямо как ты передаешь в sc

>Неудобная и всратая ебля с css-переменными.


Действительно, очень сложно 10 переменных объявить и поменять по мере нужды, лучше ре-рендерить инлайн дрисню во всем приложении каждый раз.

>Я скидывал codesandbox и там видно что это не так.


Там видно только то, что лично ты ленивый дурачок и написал все в одном файле. Если ты так пишешь в реальное приложение, 200 строк компонента и 100 строк стилей в один файл, то это нахуй из профессии.
394 1955099
Как считаете, на сколько долгий перерыв в обучении можно сделать чтобы не проебать всё, что я узнал?
мимо 2 месяца дрочусь, нужно прерваться
395 1955103
>>5099
Ты че долбоеб? Иди нахуй бля есжи
Стикер191 Кб, 350x350
396 1955110
>>5103

> Ты че долбоеб? Иди нахуй бля есжи

397 1955131
>>5083
Нет, там же не надо декораторы настраивать.
Просто в хук вынеси
https://codesandbox.io/s/elegant-nash-4ui2p?file=/src/cats/RandomKitty.tsx
16146203786800.jpg75 Кб, 780x1040
398 1955134
>>5099
За пару лет ничего не пропустишь, не переживай. Отдыхай.
399 1955142
>>5094

> Через дрисню из пропсов, прямо как ты передаешь в sc


Не вижу в sc дрисни, это же не цсс-классы

> Действительно, очень сложно 10 переменных объявить и поменять по мере нужды, лучше ре-рендерить инлайн дрисню во всем приложении каждый раз.


Каждый раз? Один раз при смене темы, только делать это удобнее через ThemeProvider

> Там видно только то, что лично ты ленивый дурачок и написал все в одном файле. Если ты так пишешь в реальное приложение, 200 строк компонента и 100 строк стилей в один файл, то это нахуй из профессии.


Всё — это что? Одну кнопку? Я говорил, что компоненты вроде кнопок выносятся в отдельные файлы потому что они для общего пользования. Но именно здесь кнопка используется только в одном реакт компоненте поэтому она объявлена в нём же

Не совсем понимаю, почему я до сих пор не услышал ни одного преимущества саса, сас-шиз? Даже преимущество в 0.0000001 ms скорости обходится через linaria (компиляция стайледов в цсс). Какие твои оправдания, сас-шиз?
400 1955153
>>5142
Шизло, я же тебе сказал, преимущества должен указывать ты, потому что именно ты пытаешься заменить стандартные ксс-классы на дрисню из магических темплейт строк с функциями и бексконечными ?. && чеками на любой пук, не предоставляя своему шизобесию никаких оправданий, кроме пердежа "итажи жапаскрипт, значит он удобнее". Пока преимуществ, кроме "можно серить там же, где и ешь" я не услышал. Пытайся лучше.
401 1955155
Аноны, подскажите, пожалуйста, где можно попрактиковаться в браузерном джаваскрипте? Не всякие задачки, которые можно и на других языках решить, а именно проработать всякие добавление/удаление узлов, фетчи, события, координаты окна/документа, формы итд

Вот типа такого:

https://htmlacademy.ru/projects/online-store/payment

Только бесплатно.
402 1955164
>>5155
Придумываешь веб-приложение. Делаешь.
403 1955171
>>5099
Ну я делал перерыв примерно на 1.5 месяца, после этого было ощущение, что забыл вообще всё, но за пару дней дроча вернулся на место
404 1955172
>>5153
>>5094
Шизы, хватит срать. Просто покажи мне условный медиазапрос в css, когда у тебя один и тот же элемент должен делать запрос по разной ширине, если к примеру слева какая-то менюшка открыта или закрыта. И таких медиазапросов у тебя может быть 4 штуки. В СК это делается парой строчек. В ЦСС ты будешь срать кровавым поносом
405 1955177
>>5172

>если к примеру слева какая-то менюшка открыта или закрыта


Ты ради всплывающих менюшек будешь весь лэйаут пидорасить? Но вообще-то относительные величины поддерживаются даже третьим эксплорером.
Теперь понятен психопрофиль потребителей стайлед элементс.
16136583285340.jpg125 Кб, 1024x1024
406 1955179
>>5177
Психопрофиль стайлед-бояр: стремятся изучать новое, применяют современные, более функциональные инструменты в разработке. В отличие от сас-шизов не стремятся пилить бревно перочинным ножичком, а используют для этого бензопилу. Быстрее делают свою работу благодаря более рациональному подходу и владению эффективными инструментами. В них живёт дух молодости, исследования, открытости, прагматичности. Предпочитают находиться в авангарде технологий, их стек всегда востребован, им постоянно предлагают работу с всё более крупной компенсацией, их любят коллеги-зумеры и тяночки из HR-отдеда, а коллеги-бумеры их боятся и избегают зрительного контакта с ними. Их профиль на линкедине спамят рекрутеры из США, Австралии, Сингапура и Нидерландов, в то время как сас-шизы довольствуются редкими подачками предложений с пост-советских актсорс-параш.

Психопрофиль сас-шизов: ретрограды, имеют нездоровую привязанность к архаичным моделям, их психика утратила гибкость и подвижность. В общем, это закостенелые бумеры, боящиеся вылезти из зоны комфорта. Неолуддиты из мира разработки интерфейсов. Отсутствует понимание о том, что такое чистота в коде, эстетика им чужда. Любят защищать громоздкие конструкции, к которым они привыкли, ведь из-за ригидной психики новые изменения приносят им боль. Их существование наполнено страхом потерять работу из-за неактуально стека технологий, который они используют. Фронтенд разработка приносит особенно много боли сас-шизам, ведь здесь скорость изменения технологий наиболее высокая. Сас-шизов презирают сообществах наиболее сильных и высокооплачиваемых разработчиков. Им рады только на галерах, где они могут с радостью для себя дрочить легаси сас-дрисню за низкий прайс, после чего спустя несколько лет они будут вытеснены с рынка из-за выборочного эйджизма, который не применяется к светлым умам стайлед-бояр, в которых живёт дух молодости даже в солидном возрасте.
407 1955181
>>5179

>стремятся изучать новое


Писание стилей в жс так же старо, как сам жиквери. Скорее переизобретают велосипед, причём с гексагональными колёсами и с нечётным количеством этих колёс. Зато новое!
408 1955198
>>5171
А сейчас как успехи?
409 1955200
>>5172
Любую сложную хуйню, вроде вычисления ширины динамически на основе ширины других элементов, делать нужно через жс и изолировать от всего остального, а не пытаться накостылять это через медиа-запросы и стандартные стили.
410 1955228
>>0886 (OP)
Я не понимаю, почему мой по клику не меняется значение в стейте. Я уже все что можно перепробывал

https://codesandbox.io/s/tender-christian-4igcw?fontsize=14&hidenavigation=1&theme=dark
411 1955231
>>5228
Нахуя тебе в рендере переменные ?
16146203786800.jpg75 Кб, 780x1040
412 1955260
>>5231
Использовать
# OP 413 1955265
>>5260
Будешь спамить своим говном получишь бан.
16146721260301.jpg75 Кб, 780x1040
414 1955275
>>5265
Чмоня, ты?
415 1955297
Может кто пояснить, как здесь попапы всплывают плавно когда у него просто меняется display none на display block https://celluline.ru/

Как реализовать плавную анимацию без jquery?
416 1955300
>>5297
На скок я понял там дисплей меняется моментально, а filter blur на заднем фоне катится с задержкой через transition
417 1955318
>>5231
ну первая просто посмотреть что у меня в стейт отправилось
вторая для клика чтобы number передавался в стейт
легче будет использовать хуки для этого, но мне интересно почему это не работает и что я сделал не так
418 1955333
>>4025
Ахахахах
Что это за ебанибала? Вы поехавшие? Наху вы выжимаете из бедного языка все соки как баба постирушка на реке
Чем вам дефолтные инструменты не нравятся?
419 1955341
>>5333
Какие?
420 1955422
Прошёл 1 лвл javascript.info. Почти нихуя не понял, больше половины не перескажу. Что делать и нормально ли это?
421 1955426
>>5422
Нахуй ты это проходил? Начни верстать страницу, похуй какую, жс это довесок вёрстки
422 1955432
>>5426
Один же хуй пригодится когда на фреймворки пойду. В вёрстку с жс умею.
423 1955433
Может кто нибудь объяснить, почему когда мы передаем функцию в аргумент другой функции.

function sum(argument1, argument2){
argument1(){}};
argument2(){};
}

То что бы потом потом вызвать функцию с аргументом, мы должны написать не имя переданной:

let randomFunc = function(){console.log("1+1")}
sum(argument1, randomfunc)

функции ее обертку в анонимную функцию? вот так:
sum (argument1, function(){randomFunc()})
424 1955435
>>5433
т.е. почему мы оборачиваем в анонимную функцию, функцию которая передана аргументом?
425 1955442
>>5426
Залетная пхп чмоня, ты? Срыгни нахуй лендос пилить за мивину
426 1955445
>>5433

>мы должны


Не должны.
427 1955462
>>5445
если не обернуть ее в анонимную функцию, то она сразу вызывается же
428 1955470
>>5462
А ты не вызывай ее сразу.
429 1955503
>>5333
Сас-шиз, ты? Или ты жиквери-шиз?
430 1955533
Есть 5 месяцев. Сколько из них уделить изучению JS и сколько изучению React?
431 1955554
>>5503
Даже с асс ненужное переговно.

Жиквери до сих пор применибельный если лень много писать ебанины для васяна за 5000 сайт. Ты небось и в лендос интерактивную кнопку без энпиэма не пойдешь добавлять.

Крякт это вообще отдельная история.
432 1955555
433 1955562
>>5433
function idi( na, hui ) {
console.log( "idi" + na() + hui() );
}

function v() { return "v"; }
function pizdu() { return "pizdu"; }

idi(v, pizdu);
434 1955563
>>5555
Как работу потом искать со знаниями одного JS?
435 1955565
Как вкатиться аноны, кажись создать телепортацию будет проще, чем изучить эти строки бессмысленного текста
436 1955568
>>5533
Через 5 месяцев на землю метеорит упадет? Реакт не настолько уж сложный, лучше как следует задрочи ЖС
437 1955571
>>5563
Не хватит 5 месяцев.
438 1955572
>>5568
Нет, я выпущусь из универа, съеду с общаги и сниму квартиру. Нужно будет идти на работу.
439 1955573
>>5571
А сколько хватит?
440 1955576
>>5573
А какую ты работу хочешь?
441 1955579
>>5572
Ну и пойдешь, в чем проблема?
442 1955581
mobx
443 1955586
>>5576
Чтобы можно было на гироскутере ездить в офисе. И вейпить.
444 1955587
>>5579
Проблемы нет, есть вопрос, как распределить время. По Реакту много вакансий, поэтому буду учить его. Хочу знать, сколько месяцев надо учить/практиковать JS перед Реактом.
445 1955604
>>5587
А чё если по профессии пойти работать?
446 1955606
>>5562
Понял, return надо ставить. Спасибо анончик!
447 1955611
>>5586
удален очка
448 1955619
>>5604
Не хочу.

>>5611
Неужели везде? Но так даже лучше.
449 1955624
как к кнопке привязать функ,которая передает данные пхп?
такое возможно?
450 1955639
>>5624
<form action="script.php">
<input name="danniiie">
<button type=submit>peredaet</button>
</form>

<?php echo $_POST['dannie']; ?>
451 1955640
>>5624
Невозможно.
452 1955641
>>5619
Нас тут и так дохуя, ты не нужно со своими пятью месяцами.
453 1955643
>>5639
а если у меня 30 кнопок,что 30 инпутов и баттонов делать?
454 1955645
>>5641
Ты не уверен в себе и боишься конкуренции из-за вката новых людей?
455 1955646
>>5643
Если у тебя 30 кнопок, тебе 30 батонов всё равно придется делать. А инпутов это уж сколько тебе данных надо передать.
456 1955648
>>5645
Нет, я просто предупредить тебя пытаюсь, глупец.
457 1955649
>>5646
я думал,что можно допустим нажать 10 кнопок(они должны подсветится красным),а рядом в форме шло перечисление того,что я нажал и потом одной кнопкой это все отправить пхп и в БД(советуют жсон формат исп)чтобы не херачить кучу колонок в БД
458 1955654
>>5648
Предупредить о том, что тебе некомфортно?
459 1955655
>>5649
Тогда тебе не кнопки нужны, а чекбоксы.
460 1955724
>>5655
чекбоксы ни как нельзя там использовать,стиль должен быть именно как кнопка( или активное поле)
461 1955842
Сап, фронты, скажите как вебсервис должен отдавать файлы на фронт, пишу апи и понадобилось отдавать mp3, быстро глянул что там есть какие-то обертки для этого, возник вопрос как именно на фронте рендеряться медиа файлы, мне, например нужно сделать так как я понимаю, у пользователя есть список mp3, его фронт получает с запроса на аудио, списоком, потом они загружаются с сервера, потом пользователь может из слушать, верно? Так вот вопрос, написать api по которому можно просто скачать один файл это рабочий вариант? Как в таком случае обычно еще json отдаеться с названием, описанием и датой создания? Отедльный запрос делать на инфу по первичному ключу аудио? Помогите разобраться
462 1955844
>>5842
Или может достаточно майм тип сделать что это мп3 и тогда все будет ок?
463 1955863
>>5842
Разве метаданные не должны в самом файле храниться?
464 1955893
>>5863
при запросе вроде должен быть правильный майм тип, а он в хедерах отдается, хотя энивей хз важно ли это для фронта, ладно браузер понимает что делать, типа если майм тип мп3, то открыть, хтмл парсить и т.д, а как фронт это использует вообще не знаю
465 1955897
Сюда же вопрос, вот я сделал 2-мя способами отдачу файла - 1. Возвращает по урлу мп3 и он открывается в браузере и 2. По урлу файл скачивается, я даже не знаю как у гугля правильно спросить в чем разница, а главное как фронт с этим работать будет
466 1955913
>>5897
Хуй знает что вы там делаете, но тебе похоже нечем заняться, так что сделай пока это
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range
The Anchor element.png19 Кб, 766x369
467 1955918
>>5893
Аудио и видео на клиентской стороне в большинстве случаев обрабатывается через `<audio>` и `<video>` тэги, которые по сути контейнеры для ссылок, как `<img>`. Хуй знает, что ты там собираешься писать, в том же экспрессе по дефолту настраивается папка `public`, которая и отдаёт файлы без всяких дополнительных движений.
Если же надо оформлять ссылку на скачку, то достаточно указать `download` у ссылки.
Если же прям надо кишочки работы апи того же `<audio>`, то тут только читать https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API или спеку.
468 1955932
>>5918
А как-нибудь протестить эти теги можно? Паблик нельзя юзать, аудио считай голосовые сообщения и просто с медиа урла нельзя отдавать, нужна проверка прав, но при проверке получилось пока только именно скачивать, в обоих запросах и когда скачивается файл и когда именно в браузере появляется(как у картинок типа открыть оригинал, чисто картинка по урлу), в обоих запросах метод гет, майм тип один и тот же
469 1955935
>>5918
Я вдруг понял что есть ссылки с названием расширения .jpg, может от этого зависит?
470 1955936
>>5932

>А как-нибудь протестить эти теги можно?


Делаешь эти теги в шаблоне и можешь обтестироваться на тестовом сервере.

>Паблик нельзя юзать, аудио считай голосовые сообщения и просто с медиа урла нельзя отдавать, нужна проверка прав, но при проверке получилось пока только именно скачивать


Просмотри https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio#attributes и если никак проверку прав через аттрибуты не сделать, то придётся нырять в интерфейс HTMLAudioElement и там уже пердолить свою реализацию запроса прав.
471 1955937
>>5554

>Ты небось и в лендос интерактивную кнопку без энпиэма не пойдешь добавлять


Нахуя, если есть чистый жс. И исходя из этого, нахуя нужен жиквери, если все на чистом жс делается?
472 1955961
>>5932
Да почти все медиасервисы так делают со статикой, урлы только хэшируют анально да от роботов прячут.
Можешь при загрузке статики токен какой-нибудь в заголовке или запросе проверять для авторизации. Можешь файлы в статику складывать только после запроса за метаданными и потом удалять. Можешь DRM обмазаться если совсем упорот.
1322615842122.jpg25 Кб, 400x400
473 1955967
Аноны, я тут взялся пилить проект, который когда мне озвучивали я честно сказал что никогда сам от начала до конца не делал, но близкий опыт имею.

Суть моей части проекта в том чтобы написать полностью фронтенд, начиная от UI элементов с версткой до всей бизнес-логики работы с API. Проект сам это интернет-магазин PWA. Сделать надо на генераторе статических страниц Gatsby для оптимизона, при этом на него мне пришлось написать source-plugin для работы с их кастомным API. Сам Гатсби на реакте если что.

Ну так вот, я дал свой эстимейт закачику ио времени и цене, и уже поздно метаться, ибо по руками ударили, но я чет теперь думаю что я по неопытности взял слишком мало времени и денег и меня ждут бессонные ночи в попытках не проебать очередной дедлайн.

Дайте пожалуйста ваши примерные эстимейты на проект по времени и цене. ТЗ нет, потому что мне буквально точно также всё на словах раскидали, да знаю что пиздец, но кушать хочется.
474 1955970
>>5724
Внезапно css.
475 1955976
>>5937
Б
Ы
С
Т
Р
Е
Е
476 1955979
>>5976
<button onclick="myFunction()">Click me</button>

function myFunction() {
document.getElementById("demo").innerHTML = "Hello World";
}

Куда быстрее?
IMG20200904211149.jpg106 Кб, 935x528
477 1955985
>>5979
Хорош!
478 1956021
>>5979
Показательный код человека, который не знает ванильного жс и вебапи, но думает, что знает заебись.
479 1956169
>>5967
На апворке посмотри
069f244887456954b58ab9f82afbf87b.jpg305 Кб, 960x960
Event Loop 480 1956191
Поясните, как этот ваш евент луп работает? Сколько не смотрю, не читаю - нихуя не пойму.

Возьмем к примеру нодовский модуль http представим, что я делаю 10 асинхронных запросов на удаленный сервер. Задачи ставятся в очередь, но не блокируют друг друга, т.е. возвращается ответ на запрос, который пришел первым, а не был первым поставлен в список задач.

Это что получается? Эти задачи выполняются параллельно? Т.е. не в одном потоке? Но нода однопоточна же. Гдето краем уха услышал, что многопоточность реализует не язык, а окружение, в котором язык выполняется, например в браузере - браузер, у ноды с++ (или что там).

Поясните про эту хуйню короч.
481 1956203
>>6191
Все верно, движок не выполняет ио, а ждёт ответов от ио устройств
482 1956212
Как промис понимает, когда ответ получен и его можно вернуть?
483 1956216
>>6212
Тебя это ебать не должно
Самому тоже интересно
484 1956253
>>6212
Этим занимается движок браузера или ноды. И он не возвращает ответ. Он переводит промис в состояние фуллфиллд и запихивает ф-ю, которую ты вписал в then в конец очереди микрозадач.
485 1956259
>>6191

>Но нода однопоточна же.


Однопоточна в том смысле, что у тебя один event loop и одновременно может выполняться только одна строчка JS кода. Но fetch и setTimeout это не JS-код и они там могут быть хоть 100-поточными. Когда ты пишешь fetch то тебе в ЖС сразу (!) возвращается промис, на этом JS переходит к следующей строчке, а самим XHR занимается уже браузер и как -- это его дело. С таймером то же самое, ВСЕ джуны валятся на этой хуйне. setTimeout возвращает идентификатор таймера МГНОВЕННО и сразу после этого JS выполняется дальше, таймер тикает в браузере и когда таймер заканчивается, то браузер просто ставит переданный в setTimeout callback в очередь макрозадач. Ни таймеры ни XHR не являются фичей джаваскрипта, это фичи БРАУЗЕРА (ну или ноды или любого другого окружения).
486 1956266
>>6259

>один event loop


один thread of execution точнее, но в данном контексте это об одном и том же.
487 1956273
>>6253
Хорошо, как движок браузера понимает, когда значение зарезволилось и его можно перенести в состояние фулфиллд и отдать? Опрашивает промис раз в n миллисекунд?
488 1956289
>>6273
В смысле опрашивает промис, чо ты несёшь? Движок браузера написан на С++ и он в случае с фетчем делает днс запрос, открывает соединение на нужный айпишник и шлёт туда байтики, потом получает обратно из сокета какие-то байтики, смотрит хорошие это байтики или не очень и в зависимости от этого переводит промис на стороне ЖС в одно из состояний фуллфиллд или реджектед. Ну или может быть он вообще достаёт файл из кэша, может из дискового, может из оперативки.

>Опрашивает промис раз в n миллисекунд?


Што? Промис это просто объект в JS - его не опрашивают. Он создаётся и при создании получает значение пендинг. Потом он обязан быть переведён в фуллфиллед или реджектед, после чего в очередь микрозадач движком ставится соответствующая таска.
489 1956296
>>6253
А можно подробней узнать про эту очередь микрозадач? Чисто для общего развития интересно как это устроено.
490 1956298
>>6259
Можно сказать, что все асинхронные операции - это не ЖС? Т.е. жс просто имеет синтаксис для вызова этих операций в отдельном потоке и обработки результата, но сама работа делается устройством?
491 1956301
>>6296
Ебать, теперь это называется для общего развития кек?

https://www.youtube.com/watch?v=cCOL7MC4Pl0

https://learn.javascript.ru/event-loop
492 1956306
>>6289

>Движок браузера написан на C++


В контексте Chrome -- да. Движок firefox например на джаве написан.

>в случае с фетчем делает днс запрос, открывает соединение на нужный айпишник и шлёт туда байтики, потом получает обратно из сокета какие-то байтики, смотрит хорошие это байтики или не очень и в зависимости от этого переводит промис на стороне ЖС в одно из состояний фуллфиллд или реджектед.


Так уже понятней.
Вот это https://chromium.googlesource.com/v8/v8/+/3.29.45/src/promise.js?autodive=0/ вроде как реализация промиса в V8.
493 1956307
>>6298

>все асинхронные операции - это не ЖС


На практике да, это выглядит именно так.

>>6298

>имеет синтаксис для вызова этих операций


Да

>и обработки результата


Обработку в том смысле, что он ставит задачу в одну из очередей, да. С самим результатом ты уже всё разбираешься сам в коде коллбэков своих.

>сама работа делается устройством


Ответ на этот вопрос не относится к ECMAScript. Он знает, что промис рано или поздно будет фуллфилд или реджектед, на этом всё и это гарантируется. Будет там браузер поднимать для этого потоки, устанавливать соединения или пойдёт в кэш дисковый или в кэш памяти - ECMAScript'у категорически похуй.
494 1956312
>>6307
Добра. На все ответил
495 1956316
>>6306
Знание того, как оно устроено внутри в движке абсолютно бесполезно. По крайней мере на том уровне, пока ты не понимаешь досконально то, как это выглядит снаружи, что гарантируется, в каком порядке итд итп. А как только ты с этим разберёшься, то у тебя про внутренние детали браузера вопросы сразу и исчезнут, потому что это не имеет значения. Сам там был. Когда разберёшься с event loop, у тебя пропадёт неуверенность и непонимание того, чо в каком порядке происходит в твоем коде и почему оно так делает, и браузер тогда из твоего поля внимания исчезнет. Сейчас ты чтением исходников хрома пытаешься прикрыть пробелы в понимании, не трать время.

Купи лол скачай конечно же сам знаешь откуда https://frontendmasters.com/courses/javascript-hard-parts-v2/ и пересмотри хотя бы раза 2-3, оно стоит того.
496 1956319
>>6316
Не делай поспешных выводов, дружище, про ивент-луп я читал уже и он не давал мне ответа на вопрос, который я спрашивал выше.
497 1956322
>>6319
А то, в каком порядке выполняется код я и так знаю, вот тут ивент луп помог разобраться.
498 1956324
>>6319
В последней ссылке есть буквально ответ на вопрос, который ты спрашивал выше. Вот прям буквально про fetch, поэтому я тебе эту ссылку и кинул.

И да, тот чел рассказывает ОЧЕНЬ душно и подробно, но я не советую на первой итерации скипать. На второй-третьей уже можно, ессно.

Алсо, далеко не все курсы с того сайта я бы рекомендовал. бОльшая часть там всё же неплохие, но есть и не очень удачные и просто запредельное говно.
499 1956333
>>0886 (OP)
В жс всё является объектом как пистоне или есть какие-то исключения?
500 1956336
>>6333
В смысле исключения? В ЖС просто НЕ всё является объектом.
501 1956338
>>6336
Что не является?
503 1956343
>>6298

>сама работа делается устройством?


Не устройством, а окружением.
JS это встраиваемый язык без средств ввода/вывода.
Он нужен для программирования среды, в которую он встроен. А встроен он может быть куда угодно - браузер, нода, фотошоп, автокад, ардуино, и сотни других даже есть ядра операционной системы, где js engine работает в нулевом кольце и на нем ты можешь программировать, например, планировщик потоков этой операционки или аллокатор памяти.

Вот есть язык Lua, который исторически встраивают в игровые движки, чтобы писать игровую логику. Есть тысячи других встраиваемых языков программирования. ЖС ровно для того же нужен. Только он многим мощнее и выразительнее всех прочих встраиваемых, и с ортодоксальным синтаксисом.
504 1956397
>>6343

>ортодоксальным


Значение знаешь?
505 1956411
>>6021
Предьяви этим ребятам: https://www.w3schools.com/jsref/event_onclick.asp
506 1956413
>>6411
Ты же в курсе, что ссылаться на этот сайт это сразу стакан мочи в лицо?
507 1956422
Как побороть NPM зависимость? Вот делаю небольшой сайт, в принципе количество нпм пакетов в нем вообще ни на что не влияет. Но суть в том, что интересно было бы и самому реализовать какой-то функционал предоставляемый нпм пакетом, но если я буду пилить его руками, то уйдет очень много времени, а тут поставил и всё. Как вы пришли к тому, что все начали пилить руками? Как вообще понять, что что-то стоит затраченного времени? Хочется с одной стороны поднимать скилл, с другой не хочется тратить очень много времени на то, что кто-то до тебя уже сделал, и вроде бы тратить время заказчика на своё обучение тоже не очень-то прилично вроде как
508 1956431
>>6422

>Как вы пришли к тому, что все начали пилить руками?


Зачем? Руками имеет смысл пилить какие-то учебные вещи, чтобы разобраться с концепцией. А библиотеки - это глупо. Там очень много рутинной работы, которая к повышению скиллов отношения не имеет.

Запили реализацию async/await через генераторы, например. Хорошее упражнение. Займёт у тебя от 3 минут до 1 месяца и повысит твой скилл.
509 1956452
>>6397
Да. А ты?
510 1956495
>>6431

>async/await через генераторы


Но ведь async/await это обертка над промисами... Это в питоне том же асинхронность на генераторах
511 1956526
>>6495
Обертка, но реализация то
512 1956536
Давно такая ебала появилась?

https://trekhleb.dev/blog/2021/gyro-web/
image.png34 Кб, 735x377
513 1956599
Всем советую пикролл. Кантор моча ебаная, после него мдн шерстил как сука. С этими видосами понял все моменты на которых затыки были.
514 1956605
>>6536
10 лет назад.
515 1956638
Вернёмся к event loop, requestAnimationFrame в какую очередь попадает и кто его тригеррит?
516 1956644
>>6638
С каких пор в жсе разные очереди?
517 1956645
>>6644
С микротасков
518 1956667
>>6599

>платить за курсы


>udemyпараша


Ебать ты говноед конечно
14641025965000.jpg154 Кб, 1200x1023
519 1956671
Читаю Кантора. До главы "Продвинутые функции" было всё понятно на 100%. Дальше понимание снизилось до 80-90%. Когда дошел до прототипов и наследований понимание снизилось до 60-70%. На промисах понимание упало до 50%. Главу с генераторами вообще два дня читал и перечитывал, плюс на других сайтах гуглил материалы на эту тему, чтобы понять каким образом работает передача значения в генератор. Потом вроде бы понял, а на следующий день осознал, что потерял понимание. Забил хуй, стал читать дальше - работа с ошибками, главу "Разное", манипуляции с DOM - там вроде как понятно, но память стала вообще дырявая, синтаксис вообще перестал запоминаться. Чё делать? Смогу ли я вкатиться, если даже базовые вещи не особо понимаю? Ещё верстаю как дебил, не по БЭМу. Не умею в анимации, раскрывающиеся менюшки, попапы и т.д. - копирую готовые. Адаптивность делаю через жопу: верстаю сперва ПК-версию, потом начинаю понемногу уменьшать разрешение экрана (инструмент "Адаптивный дизайн" в Firefox), и когда какой-нибудь элемент перестаёт вписываться, то я останавливаюсь и через media-запрос прописываю для него новые свойства. Мне кажется, что по-умному это делается как-то иначе
image.png1,4 Мб, 1000x637
520 1956675
>>6667
Ты дэбил?
521 1956689
>>6413
Нет. Аргументы чем этот код тебя не устроил будут или ты только пердеть можешь?

>>6671
Вот в такие моменты решается сможешь ты вкатиться или нет. Либо бери себя в руки и долбись дальше, либо бросай это дело и пиздуй на завод.
522 1956693
>>6689

>Вот в такие моменты решается сможешь ты вкатиться или нет. Либо бери себя в руки и долбись дальше, либо бросай это дело и пиздуй на завод.


Или вкатиться, или умереть. На завод не смогу.
523 1956700
>>6671

>Мне кажется, что по-умному это делается как-то иначе


Правильно кажется. Есть определённый набор разрешений под которые стараются адаптировать. Чем больше набор тем больше бабла берут. Алсо, по моему опыту mobile-first делать легче.
524 1956711
Что за хуйня со Slick-слайдером на мобилках? Объясните раку. В адаптиве на ПК слайдер работает, когда переношу папку с файлами на телефон, слайдер отлетает. Сами стили телефон видит (решил через Total Commander), но слайдер тупо слетает. Responsive прописывал - не робит. В чем трабла? В том, что слайдер не робит таким образом, если я переношу папку непосредственно на смартфон?
525 1956718
>>6711
В девтулзах посмотри как у тебя стили не загрузились
526 1956732
>>0886 (OP)
Нужно ли подчищать что-то вил анмаунтом после того как зафетчил что-то? Например как у меня сейчас, я фетчу с апи мои обьекты, массив полученный записываю в стейт, по вил апдейту этот стейт перезаписывается (с переходом на новую страничку)
Заметил что иногда страницы подружаются по 6 секунд (там 8 картинок 200х200 и чуть текста), иногда как-то подлагивает мб из-за того что где-то не анмаунтнул?
527 1956733
>>6732
Вопрос по реакту если что, чтоб никто не недоумевал
528 1956734
>>6671

>Ещё верстаю как дебил, не по БЭМу


Так наоборот, дебилом бы был, если бы верстал по полностью устаревшей и ненужной отрыжке яндекса из 2010 года, вместо того, чтобы пользоваться сассом.
529 1956740
>>6734

>из 2010 года


А саас из 2006-го.
530 1956743
>>6732

>иногда страницы подружаются по 6 секунд


Ну ты в девтулз посмотри сколько запрос выполняется. У тебя в теории могут быть утечки только когда руками вешаешь события.
531 1956760
>>6734
Как связаны сасс и БЭМ? Вернее что тебе мешает верстать по БЭМ на сассе?
532 1956768
Сап, двач. В чем проблема: есть iframe, я пытаюсь обратиться к его полю. Захожу в исходный код, смотрю нужный мне name, пишу в консоли documebt.getElementByName - все ок, нужное мне поле находится. Стоит мне обновить страницу, как все ломается и это поле больше не находится, пока я снова не зайду в исходный код и не найду его. Вар Ант того, что я меняю его кликом, пока ищу его в исходном коде исключен. Понимаю, что мало вводных, скажите, если что то ещё нужно. Жс я знаю на уровне гугления и пишу маленькое расширение для хрома для себя
533 1956770
>>6768

>есть iframe, я пытаюсь обратиться к его полю.


ты кто такой сука чтоб это делать
534 1956776
>>6732
Анмаунт нужен в основном чтобы отписываться от каких-либо событий, хз что ты там хочешь подчищать, учитывая, что стейт и так очищается после удаления компонента. Хз что у тебя с картинками, но по хорошему ты их ниоткуда скачивать не должен, должен быть хостинг изображений и ты просто вставляешь ссылку оттуда в <img />, тогда это никак работу сайта стопать не будет.
535 1956777
>>6770
То есть не получится у меня это сделать средствами жс?
536 1956780
>>6768
Твой код не дожидается момента, когда фрейм загрузит контент.

Вы вообще заебали проебывать понятие ВРЕМЕНИ.
537 1956781
Продолжаем изучать джава скрипт вместе с аноном.
Сегодня мы с помощью библиотеки JQuery и функции animate придаем нашей страничке немного мобильности и живого вида!

Так же мы научимся как делать всплывающий upbutton.
image134 Кб, 512x512
538 1956783
катимся, красноглазые

>>1956782 (OP)
>>1956782 (OP)
>>1956782 (OP)
539 1956804
>>6191

>Это что получается? Эти задачи выполняются параллельно? Т.е. не в одном потоке? Но нода однопоточна же.


Нода на плюсах параллелит, это движок для ЖС
https://www.toptal.com/back-end/server-side-io-performance-node-php-java-go
540 1957018
>>6781
Божественный синтаксис. До сих пор не понимаю, почему не пытались жукуэри развивать, а родили реакт.
541 1957029
>>6495

>Но ведь async/await это обертка над промисами...


Каким образом у тебя промис может "остановить" выполнение функции, расскажи мне, пожалуйста. await может. и yield может.
542 1957034
>>6638
В ещё одну отдельную очередь. Макротаски дёргаются из очереди строго по одной за итерацию лупа. Микротаски выполняются за одну итерацию все по очереди, причём, если ты будешь на лету добавлять микротаски (синхронно резолвить промисы, например), то ты застарвишь очередь (это будет выглядеть как while (true) по сути). А коллбэки rAF выполняются когда браузер решит, что он готов рендерить и они выполняются за одну итерацию все, если их несколько, но вновь добавленные уже уйдут на следующую итерацию.
543 1958556
>>6324
Сейчас прохожу Кантора, потом думаю смотреть Frontend Masters. Какие их курсы ты бы однозначно порекомендовал?

другой анон
544 1958558
>>6599
Сколько времени потратил на прохождение?
Тред утонул или удален.
Это копия, сохраненная 13 мая 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски