24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Ты СОВЕРШЕННО не понимаешь в чем суть JS. JS это не раби «о, привет чуваки, зацените я слепил три гема и получился блог, гыгы». JS это не псевдофункциональный код питона. JS это не C#, Джава или ПХП. JS это язык, на котором люди могут побыть программистами-творцами — ужасными, поехавшими, ненормальными чудовищами, которыми они на самом деле и являются.
Добавили промисы, а мы смеемся. Присыпали сахаром прототипы и назвали классами, а мы смеемся.
Три тимлида прыгнули с крыши 16-этажного дома, взявшись за руки после попытки разгрести код с тридцатикратной вложенностью, а мы смеемся и просим еще. Промисы, колбэки, асинки/авайты — мы смеемся. Модульность, асинхронность, непрерывная интеграция, юнит-тестирование, key-value хранилища, два десятка фреймворков на любой вкус — мы смеемся. GitHub позволил писать приложения на десктопе, запихивая в каждый хеллоуворлд отдельный браузер — мы смеемся. Мы бездушно подпишемся под чем угодно, наши предпочтения не основаны на здравом смысле, бесцельные споры — наша стихия, мы — истинное лицо современного IT.
Сука бля я сейчас с ума сойду с этой асинхронностью. Как мне заставить эту пизденб работать? Пока все это было в одной функции оно работало, но мне нужны они отдельно, потому что там еще несколько блоков и каждый нужно отдельно мапить, не хочу иметь функцию в сто строчек .thenов. Почему в fetchJSON console.log() вызывается в нужный момент, но return нихуя не возвращает? https://jsfiddle.net/yqtzgz1r/6/
Сап джаваскриптач. Наткнулся на такую проблему: TS изменяет имена переменных в коде, из-за чего в отладчике получается вот такая хуйня, как на пике. Можно как-то исправить?
>>1158220 Пытается исполнить функцию принятую параметром с параметром, полученным из предыдущей. Ты не знаешь, сколько я времени въебал чтобы к такому виду прийти. Конечно пару подсказок у друга взял, но в целом это часы и часы гугла, иногда несколько суток к ряду. Я не могу понять как ебучие колбеки делать, абстрактные примеры на стаковере или ещё хуй знает где вообще не помогают. В целом это эта функция, которую я пытаюсь разбить на блоки https://jsfiddle.net/9fv5stx4/ , и я просто читаю и нихуя не понимаю как колбек сделать чтобы вызвать populate с аргументом, полученным из fetchJSON. Да я знаю, что из асинхронной функции нельзя просто взять и вернуть значение, но разве await/async не для того чтобы асинхронные вещи выполнять в синхронной манере?
>>1158281 >но разве await/async не для того чтобы асинхронные вещи выполнять в синхронной манере? Именно для этого, да.
Ладно, хуй с тобой, не буду пытаться тебя самого подвести к ответу, распишу.
Твой код https://jsfiddle.net/yqtzgz1r/6/ >await populateLegend(json); Вызывает функцию populateLegend, передавая в неё json. Где ты создал объект с именем json внутри функции populate? Нигде, у тебя его нет. Откуда он должен браться? очевидно, из fetchJSON(url). >await fetchJSON(url); Действительно вызывает fetchJSON, дожидается его выполнения (т.е. получения данных из интернета) и лишь затем переходит на следующую строку. Внутри fetchJSON >return json; вполне вовремя возвращает эти данные, только когда они получены. Но куда он их возвращает? Вникуда. Ты не сохраняешь возвращённые данные нигде.
Вот тут > const json = await response.json(); же ты нормально сделал, и асинхронную функцию вызвал, и возврат присвоил переменной. так и там тоже >const json = await fetchJSON(url); сделай и всё должно заработать.
>>1158346 Блядь, точно, анончик, пиздец. Я не спал пару дней и уже дупля не давал почти что я делаю. С работы вернусь и сделаю, спасибо, держи интернеты.
сап, гайс. нуфага вопрос можно ли создать удаленный репозиторий(на гитхабе) локально? я знаю, что можно сделать "git clone" уже существующего на моем гитхабе репозитория.но как сделать наоборот, т.е. например создал папку на рабочем столе -> сделал в ней git init, и как через командную строку дальше разместить его на гихабе?
>>1158173 В общем плане вкусовщина. Для новичка- если совсем нуб, проще будет электрон, если нуб, но при этом много пилил расширений под хром и знаком с его хромовским api - nwjs.
В не общем плане, разница в построении архитектуры приложеия на низком уровне. Если у тебя ПО для которого важно то,к ак устроенна в нем мультипроцессорность, как именно и по какой логике создаются рендер процессы, работа с контекстами ноды\браузе, и прочее, то тут есть разница. (самое очевидно из такого, nwjs позволяет не создавать на каждое новое нативное окно по процессу, в то время как в электроне это невозможно).
Я пилю кастомный браузер для себя. И долго метался между ними двумя. Витоге по всем юхкейсам все взвесив nwjs подошел лучше. Но для "стандартных" проектов, которые все берутся пилить на этих платформах, каких-то там утилит и прочим, что вообще не стоит пилить на таких тяжеловесных штуках - проще электрон, ибо у него api более удобно оформлено для нубов.
Electron построен вокруг CEF, NWJS вокруг полноценного хромиума. Вся разница в том, как контексты ноды внедряются в браузер движка, и как дергаются нативные апи. (в электроне это обертки над cef, в nwjs это переиспользование апи для chrome apps\extensions.) Короче говоря, разница эта важна только в очень специфических случаях.
>>1158390 >например создал папку на рабочем столе -> сделал в ней git init В командной строке переходишь в нужный каталог и делоешь git init >и как через командную строку дальше разместить его на гихабе? git push
>>1158487 А мне вот больше электрон приглянулся, так как по стилю программирования он как нода, а нвжс показался "простоватым"(понятно, что не в плане возможностей). Не знаю, как объяснить. Ну и по быстродействию, нвжс быстрее работает лично у меня. мимо
>>1158551 У них совершенно одинаковые возможности в плане функционала, который они предоставляют и позволяют реализовать.
Разница на низком уровне реализации. И архитектуре этой реализации. Это может быть важно лишь тем, кто и пилит что-то углубляясь на этот самый уровень, а не просто делает обертки для сайтов.
>>1158487 Ну и если это важно, то - nwjs старше электрона. Электрон пилится гитхабом + сообществом, но рулится самим гитхабом и его компанией. Это изначально корпоративный проект, хотя начинался тоже как проект одного единственного чувака (до релиза atom-shella, он пилил PoC у него есть в его репозитории).
nwjs пилится в сущности одним чуваком + сообществом + инвестиции от компаний (в nwjs вливаются intel). Короче как-то так.
>>1158556 Это о том, что на электрон подвязано намного больше продакшен проектов корпораций (атом, vscode), что собственно не даст ему просто так внезапно если вдруг что издохнуть.
С nwjs дела иначе, на нем таких крупных массовых проектов вроде нет.
>>1158562 Электрон в общем-то и выстрелил в тот момент, когда разработка nwjs сильно затормозилась. Истории была очень похожа на раскол node.js на io.js, собственно и просиходила в тоже время. Хотя в тих случаях это история была не о форках, а о платформах.
>>1158487 >если совсем нуб, проще будет электрон, если нуб, но при этом много пилил расширений под хром и знаком с его хромовским api - nwjs Видимо я как-то не правильный нуб. Электрон мне показался сложнее, чем нвжс.
Рили, есть какие-то норм группы для вкатывальщиков JS? Где уже есть те, кто не просто млять переменные создавал но и слайдер какой-то запилил. А то все что не попадается мне - мертвые конфы. Не с кем и посоветоваться.
>>1158599 Зачем тебе с кем-то советоваться? Сиди и дрочи сначала базовые конструкции языка. Потом придумай себе задачу и пили её. Далее план всегда одинаковый: 0. Хочу сделать N 1. Не знаю, как сделать 2. Гугл 3. Гугл 4. Гугл 5. Гугл 6. Спросить конкретно твой вопрос на стаковерфлоу/2чч.хека/пр 7. go to 0
Со временем будет опыт, что-то будешь делать без гугла или хотя бы будешь конкретно знать, где искать. Так примерно вся разработка на всех языках и происходит, если ты, конечно не синьёр и не пишешь всё на память(кроме синьёров 2000 года рождения)
Котаны, давно забил на JS. Напомните правильно ли я помню (и понимаю) как работает async/await: После инструкции await ожидается промис, после чего конструкция ожидает пока этот промис выполнится и результат из него (resolve или reject, не важно вроде) будут переданы в константу, в данном случае в res. В конце функция обозначенная как async всегда будет возвращать промис, даже если там примитив, т.е оно неявно создает промис в выполненном состоянии и возвращает его, поэтому этот async можно передать в другой await тем самым как бы создавая цепочку.
>>1158688 Если промис реджектится, то await выдаст ошибку, так что await нужно в try/catch заворачивать.
>В конце функция <...> как бы создавая цепочку. Хуй знает, что ты тут имел в виду, но скорее всего ответ да. >async function f(){return 5} >const p = f(); // p — промис >const r = await p; // r == 5
Как можно реализовать плеер аудио с ютуба, кроме банального встраивания плеера в страницу и скрытия видео? Пакет нпм YouTube-audio-stream какой то уебанский, ничо не понятно. Смог консольный плеер замутить только. А мне веб нужен. Хелп. надо создавать аудио-стрим как то? А как? Если для экспресса есть догадки, то как на коа реализовать - я в тупике.
>>1158692 Спасибо братишка. А то я уже стал разбираться с библиотеков 'co', чтобы вспомнить как эта хуйня вся работает. Там же вроде на корутинах все реализовано было.
>>1157660 (OP) Есть существующий сайт, пишу юзерскрипт для себя. Ясно, что я вообще понятия не имею как это делать. И мне в общем нужно изменить элемент на пикриле. Что это такое и как к нему обратиться, чтобы изменить стили у него?
>>1158698 Ты аудио-файл с ютуба получить не можешь или имея аудио на сервере на сайт не можешь застримить его? youtube-dl -f <код_формата_для_аудио> -g <video_id> Получаешь прямую ссылку на аудио файл, дальше хоть в <video> вставляй. (вебм аудио, работающее в html5 video имеет коды 251, 250 и 249 самые часто доступные, остальные в сорцах youtube-dl сам найдёшь).
>>1158698 >Пакет нпм YouTube-audio-stream какой то уебанский, ничо не понятно. А тут ютуб виноват, не дают, гады, нормального АПИ для скачивания всех форматов. Я youtube-dl на js для себя портировал, там да, жопа та ещё, особенно для декрипта сигнатур всяких.
Алсо, упомянутая тобой либа какая-то ниочинь, она какчает видео и с помощью ffmpeg'а конвертит в аудио. Лучше вот https://github.com/fent/node-ytdl-core попробуй.
На каком уровне мне нужно знать JS если я буду писать на TypeScript? Сам я c# макака, но начинал свой путь с JS и многое уже подзабыл, и вот думаю стоит пройтись по JS и вспомнить его или сразу заняться TS?
>>1158831 > CSS-ку кастомную? Ну я насколько понял - да. > Я через плагины браузерные добавлял свои правила на лисе Stylish, например Да не хотелось бы ещё лишний плагин заводить.
Жабосеры, вкатывальщик ебучий итт. Очень интересует такое ебливое явление, как curyying. Оно же блять ебанутое, оно надо вообще? Или это вебмакаки придумали, чтобы их нормальные программисты не так сильно говном поливали?
Господа, помогите пожалуйста, в одном моменте. Задача:
Простейший экспресс (или чистая нода) сервер локально. Принимает с локальной реакт аппы запрос, редиректит на адрес, получает ответ, редиректит реактовской аппе.
Аноны, посоветуйте хороший IDE под жабаскрипт и особенно Node.js. Хочу чтобы как в Эклипсе можно было нажать на функцию и посмотреть как она работает в библиотеке, если я захочу ее переписывать, или в свой код утащить.
Есть аутентификация по токену, который хранится в localStorage. В токене хранится информация об аватаре и имени пользователя. На стороне клиента декодится и уже на основе этих данных рендерится личный кабинет, в котором можно поменять аватарку и юзернейм. После того, как пользователь решил поменять что-то, идет патч запрос на сервер, там вся инфа обновляется. Но вот теперь на стороне клиента, если обновить страницу, то данные ведь берутся из старого токена, где ничего не обновилось. И как лучше с этим быть? Сервер мой, могу просто на каждый патч запрос вешать новый токен с обновленной инфой и на стороне клиента тоже его использовать. Это вообще логично? Как подобные приложения должны работать? Кажется, я уже с логикой где-то налажал.
>>1159287 О, я придумал. Кажется, будет проще не в токене хранить юзеринфо, а каждый раз, как страница обновляется, слать запрос на сервер, чтобы он возвращал нужные данные о залогиненном пользователе, а по токену будет просто аутентификация. А зачем мне вообще в токен что-то пихать? Почему так делали в видео, по которым я учился? Там, наверное, статическая информация была. Ну и ладно.
Ну, если я конечно все делаю неправильно, то можете что-нибудь подсказать.
>>1159347 Как вы заебали. Иди читай про асинхронное программирование. И учись тому, что тебе не надо сохранять свои данные из жсона в переменную, блядь.
>>1159362 Или ты ждешь, что тебе там будет написано как дебаггером пользоваться? ТОгда вынжужден тебя разочаровать, как пользоваться дебаггером конкретной среды, которой ты пользуешься - ты должен и так знать. Инспектор лишь предоставляет протокол для взаимоействия тоего дебаггера с нодой.
>>1159363 Мне непонятно, можешь считать меня идиотом.
>Он тебе пишет порт. Открываешь блядь вdevtools в хроме ссылку, и работаешь. Пикрелейтед. Ну или WebSockets request was expected если ws:// убрать
>>1159364 А так чтобы без установки всякого левого говна?
>>1159365 Вообще я задавал конкретный вопрос, как мне посмотреть что делают функции: >>1159355
В C для того чтобы это сделать я сразу открываю хедер с нужной функцией, если что потом еще в сорцы могу залезть. И в эклипсе это у меня так настроено, что я по ЛКМ+Ctrl сразу открываю функцию. Ну я и хочу похожий функционал, но для редактора ноды, чтобы не копаться в сотне файлов и искать где же там эта херня реализована.
>>1159370 >Пикрелейтед >Chrome DevTools >Option 1: Open chrome://inspect in a Chromium-based browser. Click the "Open dedicated DevTools for Node" link.
>>1159376 У меня дедлайн через 3 дня, а еще нихуя не сделано, я только всякую документацию по Javascript открыл и в ней нихуя не понятно. У меня уже 200 вкладок в браузере открыто и я половину из них я прочитал, но нихуя не могу понять.
Сейчас пытаюсь разобраться, как мне выводить все мои https реквесты в лог.
>>1159379 >Сейчас пытаюсь разобраться, как мне выводить все мои https реквесты в лог.
Ебать. Сделать обертку вокруг модуля https в котором реализовать логгирование и использовать его вместо оригинального. Паттерн Прокси - слышал о таком, горее ООП-программист.
>>1159140 WebStorn. Я пользуюсь его аналогом для Java - IntelliJ IDEA, тут тоже есть поддержка джаваскрипта, в принципе норм работает. Правда тупит иногда.
>>1159030 Да, но второе семантически правильнее, как бы сразу очевидно что оно делает и это функция. Можно делать так: arr.map(Boolean). Возможно оно и работает быстрее, но не уверен.
Чуваки, а вот скажите. Как считаете, нормальная практика использовать промисы и асинки в более высокоуровневых целях?
Ну например, пишу я игру, и говорю гипотетическому персонажу human.raiseLeg('left'). Он раздумывает, запускает анимацию поднятия левой ноги, а после того, как анимация закончится, он кидает Promise.resolve(). Я резолв принимаю и после этого говорю ему: human.raiseLeg('right'). Он раздумывает, а потом кидает Promise.reject('Я что, на хуе стоять должен?'). Я в кэтче это ловлю и отправляю пользователю соответствующее сообщение, предлагая поразмыслить ему над более подходящей командой.
Вот насколько так правильно делать? Я заметил, что 1) к моим реджектам подмешиваются другие эксепшены типа ReferenceError, и 2) даже если отделять мои сообщения от остальных исключений, дебажить становится трудно, потому что через промисы просерается стек вызовов. Или может, по крайней мере, возвращать мои ошибки через резолв типа resolve({ fail: 'Я что, на хуе стоять должен?' })? Или вообще как бы вы подобную задачу решили?
Анон, вопрос по AngularJS: как запилить обновление данных на странице с интервалом И без перезагрузки (ну т.е. чтобы уже отображенные данные не исчезли).
>>1159381 Так, ну с хуйней разобрался более менее.
Мне на самом деле не сам Javascript нужен, а понять как работает сетевой стэк Дискордовского API, ну вот я и пытаюсь развинтить эту либу: https://discord.js.org/
Сейчас пока только разобрался как отправлять сообщения через Webhooks, и то там свои ньюансы.
Анон, а как обстоят дела с работой заграницей? Готовы ли работодатели помочь с релокейтом или они предпочитают местных макак? Все таки речь идёт о жсе. И знающих его довольно много, из-за низкого порога вхождения. мимо засматриваюсь на джава и питоно макак, которых пачками перевозят заграницу.
Аноны, почему все базовые объекты ссылаются на Object.prototype? Зачем так сделано? Можно же было сразу ссылаться на Object. То есть не __proto__ = Object.prototype, а __proto__ = Object. В чем смысл?
>>1160170 так ведь перед indexOf() стоит отрицание ~ . значит функция будет работать в обратном направлении . если бы небыло отрицания - indexOf вернула бы индекс элемента , значение которого = e
>>1160175 В смысле? Я не понимаю твой ответ. Можно спокойно изменить любой метод в любом прототипе, в том числе стандартный в базовых объектах. Так в чем смысл отдельного свойства prototype?
>>1160155 Вернет значение индекса и потом применит побитовое отрицание. То же самое что перевести число в двоичное представление и заменить нули на единицы а единицы на нули
>>1160352 >Правильно ли я понимаю взаимодействие между клиентской и серверной частью ? не намудил ли с выбором инструментов ? Вот на этом этапе стоило бы задуматься, правильно ли ты поступаешь, что дрочишь инструменты не понимая основ.
Приветствую. Хочу удаленную работу с навыком полученным через самообучение. Навык должен расти вместе с опытом. Прошу объяснить без категоричных высказываний - туда ли я зашел? Если мне придется работать не удаленно определенное время для стажа - я готов, не критично. Важна первоначальная цель.
>>1160352 Нормана, главное делай, через 100 сайтов ты считай уже мастер верстки, методологии и всего всего. Но мой совет: Спрашивать это хорошо, но ведь самому попробовать это неплохо?
Главное вести отчет о себе в Гите, но правда я не знаю какая у тебя цель, деньги или Искусство.
>>1160542 >>1160547 Вотнихуясебе, ты зачем мой пост из пыхапе треда закопипастил? Дискредетировать меня собрался? Или ты так помогаешь своей рекомендацией пацанского JS треда в том треде?
>>1160177 Спасибо за интерпретацию, но у меня вопрос именно в асинхронных методах. То есть, ты вызвал moveLeftLeg, он подумал, сходил покурить, вызвал какой-нибудь setTimeout, доложил серверу о том, что ты приказал ему поднять ногу, и только потом поднял. А следующую команду ему нужно дать только, когда он закончит предыдущую. И вот здесь у меня прямо чешутся руки делать это через промисы, учитывая все вышеописанные недостатки.
>>1160180 В том, что если мы унаследуем первый объект от второго, а потом поменяем свойство второго объекта именно объекта, а не его прототипа, то это не затронет унаследованный объект, прототип останется неизменным. Можно и прототип поменять, никто не запрещает. Но тогда это затронет и все делегирующие объекты, если у них внутри себя эти свойства не переопределены.
Аноны, решил вкатить себя в ваш апельсиновый джус. И сразу начал буксовать. Объясните мне за замыкания. Вот 2 скрина. Почему первый вариант работает, а второй нет. Разницу я выделил (как железа).
>>1161147 (() =>{...}) () ; - синтаксис функции, которая вызывается сразу же. Без () в конце она не будет вызываться. Удали во втором варианте ( перед function и заработает.
>>1161154 То есть разница лишь в том, что в первом варианте она сразу вызывается, а во втором не сразу. То есть если функцию сразу при объявлении не вызвать, то переменная counter не сохранится, а если вызвать, то сохранится. Втф?
>>1161163 Что у тебя есть сейчас вообще? Куда ты вывести хочешь? Имей в виду, что из-за CORS'а просто так в скрипте на своём сайте в браузере эту xml'ку ты не скачаешь (так что jq бессилен). Ну а на сервере в nodejs всё элементарно: request(url, (err, resp, data) => { xml2js(data, (err, data) => { console.log(data) // { rating: { kp_rating: [ [Object] ], imdb_rating: [ [Object] ] } } }) })
>>1161162 А первом случае ты делаешь один вызов, после которой у тебя появляяется одна единственная переменная counter в замыкании. И замыкание всего одно.
А в вот тором случае, ты каждый раз создаешь новое замыкание, в котором хранится своя собственная переменная counter.
>>1161167 >просто так в скрипте на своём сайте в браузере эту xml'ку ты не скачаешь из-за этого и пришёл сюда, так как не смог, к сожалению доступ есть только к дизайну, так что хотелось бы всё таки на стороне клиента выполнять, вот пример который из-за этого сейчас не работает yraaa.ru/scripts/rating-kinopoisk-imdb
>>1161171 Спасибо, анон. Я понял. Правда минут 15 доходило, но разобрался. Я искал проблему в первой функции, а она оказалась во второй. Вторая функция стирала из памяти мое замыкание каждый раз после своего завершения. Если добавить перед ней add = add(); то все снова работает.
>>1161147 Второе не наботает потому, что он каждый раз создаёт новую функцию и вызывает её. В первом случае функция создаётся изначально и вызывается одна и та же.
Господа, есть список состоящий из N элементов, в зависимости от того, какой элемент в списке выберет юзер - должна отображаться та или иная форма на странице. Как организовать это всё? Или хотя бы как загуглить правильно?
>>1161269 Повесить обработчик на список, который будет смотреть какой нибудь дата аттрибут у event. Target и в зависимости от этого аттрибута открывать/показывать форму. Гугли делегирование событий.
>>1161277 Так и сделал, по id выцепляю выбранный элемент из списка и отображаю нужную форму, через show/hide. Но вот теперь проблема - поля во всех формах required=True, и когда форма скрыта, а поля в ней не заполнены, то данные не хотят отправляться. Какие есть варинты решения? required=False - не самый лучший вариант т.к. не хочу на стороне сервера ещё и заполненность формы проверять.
>>1161295 Динамически создавать форму с валидацией в процессе. Динамически заполнять required. Проверять заполнение формы вручную (не использовать required). Халявы нет.
Почему когда я добавляю атрибут html-тегу через jquery метод .data(id, 1), то в тексте страницы его не видно? Это же эквивалентно тому, что я ручками прописал <tr data-id="1">?
>>1161489 На самом деле, можно попробовать такой фокус: Изначально required не ставишь вообще. Для элементов формы, которые должны быть required, делаешь класс типа "frm_required".
Дальше - у тебя же есть набор элементов, которые ты показываешь в данный момент? Допустим, они у тебя в переменной $currFrmElts. Тогда ты пишешь: $currFrmElts.find(".frm_required").prop("required", true); Вместо переменной у тебя может быть селектор: $(...).find(...).prop(...);
>>1157660 (OP) > Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Вот это спизданул. На плакат нахуй.
>>1161639 правильно посмотреть в доках CRA bootstrap-react и просто bootstrap как они работают вместе. Инклюдить в хтмл хуйня, собери нормально, чтобы все пакеты из твоей сборки вебпака применились к бутстрапу.
>>1161668 я ен пробовал, но предполагаю, что если все вебпаковские модули сработают (глянь сколько их в cra) на одной части кода и не сработают на той что с сдна будет неоч. Ну и лишний запрос с целой библиотекой не ок, когда тебе нужны только некоторые части, которые и запихаются в бандл.
>>1161466 Кстати, если мне надо сделать каждую строку таблицы кликабельной, чтобы при нажатии открывалась страница с описанием этого объекта, хранить id как <tr data-id="1"> это норм? Если без Jquery.
Где искать примеры реального кода? Вот к примеру я уже более менее освоил стандарт, ES6 фичи, штмл, ксс + синтаксис реакта, для понимания к чему мне надо стремиться я хотел бы увидеть как выглядит реальный, профессионально написанный, проект на том же реакте, какие есть стандартные приёмы и практики, но где искать фиг знает. Про гитхаб знаю, но где там искать, учитывая, что уровнем моих знаний я не смогу отличить говнокод, от эталонного.
>>1161295 На стороне сервера валидацию в любом случае надо делать. Потому что послать данные на сервер не через пользовательский интерфейс, а как-то ещё (например, через Postman или Curl) — дело пяти минут. На клиенте валидацию делают только для удобства пользователя, а не в качестве реальной меры безопасности.
>>1162246 Пробовал как и перед define, так и в define функции, так и все сразу. Все 'use strict' стоят перед началом кода (в самом начале файла). Нужно не только для функции, а для всего модуля.
>>1157660 (OP) привет, кто нибудь делал скрипты которые читают историю браузера и подстраивают стиль на сайте под его вкусы например если юзер читает мейлач, то фон будет как у мейлачика, тот же цвет. если порнхуб то черный фон и желтые буквы и тд
Ты прежде чем задавать такие вопросы не задумался хоть на секунду о том, насколько абсурдна твоя задумка? То есть ты действительно предполагал, что любой кто угодно, может просто вот так запросто посмотреть какие сайты ты посещаешь?
>>1162640 Бля, ну пагинацию делать через отдельную библиотеку - это уже совмем перебор. Ну тоесть блядь вообще пиздец как перебор. Там самому на коленке писать минут 5. И то из них 4 ты кофе пить будешь.
>>1157660 (OP) Анон, история такая. Подрядили на работе писать фронтенд. Ну я его и пишу уже месяца два. За это время у меня в голове образовалась просто нечеловеческая каша из стандартов, подходов, фреймворков и всего остального. И вот настал день, когда мы решили начать переписывать наш фронт на реакт. Естественно, я хочу подойди к этому вопросу ответственно и структурировать в голове всю мою кашу. Так вот, где бы найти хороший учебник по js, в котором учитываются самый новые стандарты и вот этот ваш ES-6 (погуглил тут и оказалось, что есть уже 8), но в пизду его.
>>1157660 (OP) Антоны, я не знаю ни парадигм ООП, ни модели MVC. Хочу окунуться в практику, познавая и осмысляя теорию в процессе. Зарабатывать программизмом не буду, поэтому мой говнокод в продакшене вы не увидете.
Вопрос у меня вот в чем. Хочу уметь в node js. Стоит ли мне сначала изучить js, а потом уже постигать нюансы ноды? Или сразу, с нулевыми знаниями можно с нее начинать?
В двух словах чем отливается app.use в router.use (Express JS). App - это объект приложения. А router это объект маршрута? Т.е он сразу как-то привязан к app и знает что мы определяем миддлвары именно для этого приложения?
И еще один вопросик. Объект req.session доступен в течении того времени, пока сохранена определенная кука в браузере? Т.е даже если HTTP-сессия будет закрыта, то эта, можно сказать user-session будет все еще активна, правильно?
Тогда как работает res.locals? Это локальное хранилище переменных для текущего запроса или для всех запросов в определенной сессии?
>>1162948 >придумал как вариант закэпчурить this в переменную, но не ли чего-то более идеоматичного Ну так-то >const self = this вполне себе типичный жс-код был какое-то время (может даже и сейчас), так что нормальный вариант.
>>1163235 >Зачем ты вообще тогда в это полез? Ну например потому, что я вообще не на js-е пишу, но пришлось немного заняться фронтендом и я не хочу творить откровенную хуйню?
>>1163328 >Пол Грэм в статье «Великие хакеры» утверждал, что программисты, пишущие на Java, далеко не так умны, как приверженцы Python. Он взбесил множество глупых Java-программистов (неужели я это написал?), которые принялись писать на своих сайтах развернутые контраргументы. Бурная реакция показала, что он задел за живое.
>Я присутствовал при первой презентации этой статьи. И она заставила меня вспомнить один эпизод.
>Я приехал в Индию, чтобы набрать сотрудников, и просматривал сотни кандидатов, претендующих на десяток рабочих мест. Наша команда, проводящая собеседования, страдала от нехватки сил и времени из-за низкого процента успешно пройденных собеседований. Несмотря на поздний вечер, головную боль и красные глаза, мы не расходились, пытаясь найти новый подход к отбору кандидатов. Требовалось оптимизировать процесс, увеличив число интервьюируемых или каким-то образом привлекая более толковых людей (а лучше и то и другое). Тем, что осталось от моего голоса после двенадцатичасовых попыток получения ответов от ошеломленных программистов, я предложил добавить к ключевым словам, по которым наши специалисты по поиску персонала отбирали резюме из базы данных, слово «Smalltalk». «В Индии никто не знает этого языка», — кричал заведующий отделом кадров. Но на это и был направлен мой расчет. Ведь программирование на Smalltalk коренным образом отличается от программирования на Java. Вариативный опыт даст нам новый уровень требований к кандидатам, а динамическая природа Smalltalk позволит Java-программистам подойти к решению задач с другой стороны. Я надеялся, что эти факторы дадут нам специалистов с высоким уровнем технической подготовки, которого не было у уже просмотренных соискателей. Добавление к списку требований Smalltalk удивительным образом уменьшило кадровый пул. Но теперь к нам приходили более одаренные люди. Они действительно разбирались в объектно-ориентированном программировании. Они знали, что Java не является универсальным, как его порой пытаются представить. Многие из них обожали программировать! Нам оставалось недоумевать, где же вы все были в предыдущие две недели?
>Я до сих пор пользуюсь этим приемом при поиске разработчиков. Как лицо, отвечающее за подбор персонала, могу сказать, что в первую очередь это показывает степень вашей заинтересованности. Если я узнаю о том, что человек изучает некую область для саморазвития или, еще лучше, — для удовольствия, то пойму, что передо мной целеустремленный и любящий свою профессию специалист. Когда я спрашиваю людей, довелось ли им познакомиться или использовать некоторые нестандартные технологии, меня сводит с ума ответ: «У меня не было возможности работать в этой области». Не было возможности работать?! Но у меня ее тоже не было! Но я использовал свою возможность учиться. Эти второстепенные технологии и методологии не только создают образ правильно мотивированного и увлеченного своим делом человека. Они и в самом деле делают вас глубже, лучше, умнее и изобретательнее. Если вы не считаете все вышеперечисленное достойными внимания причинами, возможно, вы неверно выбрали профессию.
>>1163465 Извини, это уже что-то экстраординарное и сложное. Что-то уровня сложных оптимизаций, чтобы понять суть которых нужно иметь ученую степень. Вряд ли тут найдется человек, способный дать тебе ответ. Просто не обращай внимания на этот кусок кода, пожалуйста.
>>1163623 Во-первых, взгляни ещё раз, в какой момент ты выводишь значение scrollTop'а. Затем, иди по шагам назад и смотри, где, как и какие ты ему значения присваивал. Если не получится, в NASA не возьмём, это твой последний шанс.
>>1163630 Я все уже перепробовал прежде чем сюда писать. Если присвоить только body то будет object HtmlBodyElement, если присвоить 1 && body, то NaN, а если body && 1, то 1
Ладно, пора бросить двач, он мешает мне. Я не зайду в этот тред пока не устроюсь. Не считайте это чем-то типа ньюйиар резолюшенов. Я не отвечу вам пока не устроюсь. Ждите! Это не && где ты после первого проеба все бросаешь, это ||!
Посоны, а есть что-то свежее, чтобы сейчас сесть за Node.js? Работая на клиенте я конечно постоянно с ним каким-то боком взаимодействовал, но не хватает системных знаний. Привык учиться по книжкам, нравится логичность подачи материала в них. Но вот смотрю на "Node.js in Action", а ей 100 лет в обед, при том что новые версии ноды выходят очень часто. Поделитесь опытом кто за ноду садился в последние год-полтора - по каким материалам изучали, как набивали руку, как разбирались с best practices.
>>1163791 >Посоны, а есть что-то свежее, чтобы сейчас сесть за Node.js? Работая на клиенте я конечно постоянно с ним каким-то боком взаимодействовал, но не хватает системных знаний. Привык учиться по книжкам, нравится логичность подачи материала в них. Но вот смотрю на "Node.js in Action", а ей 100 лет в обед, при том что новые версии ноды выходят очень часто. Поделитесь опытом кто за ноду садился в последние год-полтора - по каким материалам изучали, как набивали руку, как разбирались с best practices. > На чистой ноде вроде как никто не пишет, поэтому смело выбирай фреймворк для начала, а потом литературу. По Express'у неплохо зашла «Веб-разработка с применением Node и Express. Полноценное использование стека JavaScript» Итана Брауна. *мимо фронтендер, написал пару недель назад API на Express'е с авторизацией и всеми нужными плюшками.
>>1163923 Нет конечно. Это просто интерпретатор вне браузера, грубо говоря.
Как предоставить компоненту только часть state в mapStateToProps?Аноним28/03/18 Срд 11:43:12#284№1163941
Я использую redux и react. У меня есть две страницы: поиск организаций и добавление организации. На обоих страницах есть одинаковые компоненты: EconomicActivitiesSelect и TaxesCommitteeSelect. Оба подргружают данные по пользовательскому вводу и позволяют выбрать что-то из подгруженных вариантов. Мой store имеет следующую структуру: https://pastebin.com/bCwR2BfB Как сделать так, чтобы в mapStateToProps передавался не весь state, а state.organizationsSearch или state.addOrganization, чтобы можно было сделать так: https://pastebin.com/r8tUuwvE
>>1163941 Пока что додумался только брать нужную часть state в родительском компоненте и спускать данные в свои EconomicActivitiesSelect и TaxesCommiteeSelect как обычные props. Это нормальный подход?
А это нормально, то что у меня поведение страницы определяется ее адресом? Или лучше хранить тип сущностей, с которыми идет работа, где-то в другом месте?
И в этой модели написать функции, которые в твоём случае назывались бы: organizations() addOrganization() searchOrganization()
и так далее.
>>1163944 Модель в числе прочего имела бы функции-«геттеры», что позволило бы передавать её куда угодно, в любой компонент. И он бы читал из неё данные, как будто они там есть. Как раз в зависимости от класса компонента, его параметров (они же «props» компонента) и от того, где он сейчас размещён.
Свои же данные, а тем более «window.sessionStore» модель ото всех скрывает.
>>1164277 Да, и у тебя должен быть компонент Router, их много, возьми любой стандартный роутер, он будет вызывать нужные функции или возвращать константы, в зависимости от адреса страницы.
Кто-нибудь может пояснить про Dependency Injection и инверсию зависимостей с примерами на JS? Чет немного не понял нахуя эта вещь нужна. Второй пик - это часть теоретической части на Hexlet по этой теме, но там все равно не особо понял.
>>1164428 Там русский технический писатель _умничает_, как у них принято. Упивается собой, вместо того, чтобы объяснять предмет. Не читай ничего по программированию на русском, и будет тебе счастье.
Алсо, до некоторых вещей надо "дорасти". Т.е. столкнуться с проблемой, для которой данная вещь является решением.
>И причём тут парадигмы и модели, лол? >Учи язык. Т.е. ты утверждаешь, что можно выучить объектный язык, не понимая модели ООП? Надеюсь, ты такой же программист как и я.
>>1162946 Можешь начинать с 0 знаниями, но раз ты всё равно будешь постоянно бегать в доки ЖС, то почему бы не пробежаться по ней сразу, тогда будет меньше беготни в будущем.
>[ test ] && {action} (Угу кавычки во втором случае) И? action && action тоже можно, чтобы вторая команда выполнялась только при успещном выполнении первой, например.
ВВеди в ЖС'е, блин, a == true && console.log("я лох"), точно так же выведется текст. Так работают логические операции, блин.
>>1164692 За пределами хипстерских влажных фантазий реакт никуда не девался. Но если хочешь гоняться за бородатыми модниками в узких штанишках -- ради бога.
Откуда вы, блядь, лезете? Сказать по делу тебе нечего. Припекло - охлаждай. Зачем засирать тред? Пиздец, сука, просто филиал /b уже тут устроили, программисты-пидоры-дебилы.jpg
>>1164692 > сейчас куда ни плюнь - вью Примеры? Вот BitBucket недавно зарелизил одностраничную версию - там реакт, куда ни плюнь - dropbox, slack, sentry, rollbar - везде реакт.
>>1164792 Очевидно же, что this - это именно this - этот экземпляр. С сахаром или без. Вообще, смысл сахара - совместить функцию-конструктор и привязку наследуемого прототипа.
Вместо "this.increment = function(){ ... }.bind(this)" в конструкторе надо просто определить метод в классе, раз уж ты решил с сахаром.
>>1164434 Я думаю заранее разобраться было бы неплохо, тем более что JS это все-лишь ебаный язык.
>>1164515 Ну хз, объясняет нормально видимо если люди делают практику и не задают вопросов в комментах. Я вроде бы немного понял суть, но без примеров сложно разобраться.
Это называется "преждевременная оптимизация". И она ничем не лучше преждевременной эякуляции.
>объясняет нормально
Знаешь, я давно уже программирую. И все эти (детские) темы давно уже усвоил и даже успел забыть, лол.
Так вот, мне пришлось буквально продираться через текст на твоей картинке. Не понятно вообще нихуя. Левая терминология, манера изложения и т.п.
И у меня постоянно такое с русскоязычными текстами. Они просто ни о чём. Даже оригинальные, не говоря уже о переводах. По английски читаю и понимаю гораздо быстрее. При этом, с разговорным у меня не очень, например.
Хуета ни о чём, как я и говорил. Если бы я не имел дело с этой темой раньше, не понял бы вообще ничего. Отдельно стоит отметить бессмысленные примеры кода.
>>1164858 Спс, просто у меня с английским языком пока проблемы (в процессе изучения), поэтому читать могу только какую-то документацию, и то понимаю лишь 40% написанного, остается читать лишь тексты на русском. У меня нет желания прямо влиться и понять - хотя бы иметь общее представление об этом. Спс за статью.
>>1157660 (OP) Блядь, ну охуеть. Что делать? Предыстория: накатил как всегда ноду/нпм, все вроде заебись, но потом у меня отказался галп работать, причем по ряду причин видимо, я долго с ним пердолился, несколько ошибок пофиксил, в итоге нагуглил, что по дефолту нод и нпм в репозиториях древние. Ну я удалил ноду и нпм, накатал все по гайду, а потом такая залупа. При том команда npm изначально работала после ранее перечисленного, лол, пока я не удалил /usr/lib/node_modules.
>>1164428 dependency injection - видимо когда пакет в себе и своем коде не содержит вредного и опасного кода, но содержит в себе зависимости, которые могут таковыми быть. Проблема слишком раздута имхо, просто юзай проверенные библиотеки и почаще пиши свои решения и будет тибе щастье
>>1164968 >речь не об оператора шла >use of operator Это те же самые операторы. Впрочем, так-то почти всё можно назвать оператором https://www.gnu.org/software/bash/manual/bashref.html#Lists И тут их тоже И и ИЛИ называют, пускай и с припиской "... lists". Самое главное: суть их та же, что и при проверке логических условий: в A&&B бесполезно проверять второй операнд на истинность (исполнять команду B), если A не истинно, в то же время, если A истинно, то B необходмо проверить (выполнить команду/выражение) на истинность для получения.
Впрочем, вот тут http://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_10 этому оператору дали навание AND_IF, так что частичка истины в твоих "if true" может и есть, я лишь хотел настоять на том, что нет какой-то глобальной разницы между этими и операторами и теми, что в условиях используются (как в JS, так и в баше), это одно и те же логические операции. Ну а ещё, тот >>1163831 вообще цикл умудрился привязать сюда, что уж вот точно бред.
>>1164847 >И у меня постоянно такое с русскоязычными текстами. Они просто ни о чём. Даже оригинальные, не говоря уже о переводах. По английски читаю и понимаю гораздо быстрее. При этом, с разговорным у меня не очень, например. Неистово двачую. По мне всё русскоязычное чуть ли не спизжено, переводы с английского в основном делают коряво, порой ничего не понятно, что имел ввиду автор оригинала. Причем пиздят всё и делают это в разы хуже.
>>1164984 >dependency injection - видимо когда пакет в себе и своем коде не содержит вредного и опасного кода, но содержит в себе зависимости, которые могут таковыми быть.
Ну услышал человек когда-то о code injection (а то и вовсе одно лишь sql injection), вот и ассоциируется у него теперь это слово исключительно с вредоносностью, что вы накинулись. Что с дурака взять, не бейте его, только насмехайтесь и унижайте.
А объясните по-хардкору дураку, пожалуйста, почему люди так противопоставляют ноду и js (>>1162946, >>1164551 и куча других в каждом треде)? Да и вообще видят в ноде какую-то проблемность или сложность, что ли. Сам язык ведь не отличается, и уж если с чем-то её и противопоставлять, так это с бровзером с DOM'ами и прочим фронтендом, не? Или моя ошибка в том, что я просто не отождествляю javascript с этим самым фронтендом? Писал и то, и другое (личные говноподелия, не по работе), и по сути ведь одна хуйня что там, что тут, просто немного разные вещи делаются.
Не знаю, правильно ли сделал что написал в тред про JS, так как частично я думаю это и серверную часть должно затрагивать (node.js).
Есть множество сервисов, которые предоставляют клиентам возможность встраивания их виджетов к ним на сайт. Как правило процесс встраивания заключается в банальной вставке стороннего скрипта к себе на сайт. Есть два типа таких скриптов: //core.sitename.com/api.js или скажем //api.sitename.com/<uniqid>.js
Поговорим о втором варианте. Просмотрев его код (и код нескольких похожих сервисов), стало понятно, что содержимое там следующее: /// /// Вначале идёт конфигурация конкретного пользователя /// /// Далее идёт общий код для всех
Соответственно: 1 пользователь = 1 файл js, где внутри пару строчек уникального конфига, и далее общий код для всех.
Вопрос следующий. Понятно, что изначально сформировать такой файл просто. Понятно, что если изменилась конфигурация у одного пользователя, то легко заново сформировать такой файл для него.
НО! А если у нас меняется что-то в коде, общем для всех (понятно что это изначально отдельный файл, а при создании файла <uniqid>.js идёт конкатенация). Нам что надо в таком случае? Пробегаться по всем таким файлам <uniqid>.js и их переделывать? Я не понимаю. Понятно что так не делается, но я не могу понять как это всё организовано.
У меня были мысли что на самом деле множество файлов <uniqid>.js и вовсе нет. Просто когда идёт обращение //api.sitename.com/<uniqid>.js он генерируется скажем так на ходу. Но каким образом? Есть вариант c .htaccess: AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js <FilesMatch "\.(js|php)$"> SetHandler application/x-httpd-php </FilesMatch>
Но мне кажется что это костыли. Тем более возникает вопрос кэширования. Может кто-то сталкивался с подобным или объяснит как это всё устроено?
>>1165030 Я думаю, что такие файлы генерируются и кешируются на той стороне. Т.е. при изменении какой-либо части файл (или все файлы) автоматически генерируется заново.
Кешированием на клиентах можно управлять, добавив параметр (номер версии или хеш файла) в URL, типа api.example.com/ololo123.js?v=123456
>>1165030 >>1165059 >>1165065 Бля, только что дошло, какую хуйню я написал - насчёт параметров. Это же в чужие страницы вставляется, лол. Инерция мышления, хули. Ну, значит, только http заголовки.
>>1165030 >он генерируется скажем так на ходу. >Но каким образом?
Общая идея такова, чтобы сервер при запросе js файлов (всех или некоторых) вызывал какой-то серверный скрипт, который и будет генерировать этот файл или брать уже сгенерированный ранее, проверять, менялось ли что-то и т.д.
Подробности зависят от того, чем ты пользуешься на сервере.
>>1165099 >все файлы автоматически генерируется заново. То есть если у нас скажем 500 000 пользователей, у нас будет 500 000 файлов js? И при изменении в скажем так ядра, нужно будет все 500 000 файлов сгенерировать заново?
>>1165104 Ну вот это уже ближе к теме. Я тоже так думаю, но каким образом это делается? Ведь если мы запрашиваем /<uniqueid>.js мы сразу получаем js. Как его сформировать на ходу при запросе?
Я как писал ранее нашёл единственный вариант с .htaccess: AddType application/x-httpd-php .js AddHandler x-httpd-php5 .js <FilesMatch "\.(js|php)$"> SetHandler application/x-httpd-php </FilesMatch>
То есть js при запросе в определённой папке обрабатывается как php, и отдаёт сформированный новый js. Но я где-то читал что это костыль, и так делать не надо.
>>1165107 Это можно по-разному делать. Зависит от того, что дороже - время выполнения запроса (и загрузка сервера) или место на диске.
Генерировать заново можно всё сразу, а можно именно по запросу - для конкретного пользователя.
Можно использовать что-то вроде include - общую часть читать с диска (брать из памяти, на самом деле), на лету добавлять (генерировать) специфику для пользователя и отдавать всё вместе.
Не знаю, как это сделать на PHP, но на Java EE это можно сделать несколькими способами совершенно несложно.
Это не костыль (само по себе). Так это и делают - при запросе файла xxx.yyy вызывают скрипт, который генерирует нужное содержимое, выставляет заголовки и отдаёт. Так генерят картинки, например, и вообще что угодно.
Как это сделать именно на пхп - спроси в треде по пхп.
Изучил JS и DOM, дальше смотрю в сторону реакта. Но написав пару простых скриптов на чистом JS'e понял что многие свистоперделки банально не реализовать (или можно но будет говнокод), тот же пример - плавный скролл, или различные анимации. Про заёбы с IE и постоянные несовместимости во всяких мелочах молчу. Так же нет многих плагинов, которые есть на JQuery.
Так вот вопрос, сначала стоит освоить JQuery и потом перекатываться в реакт и уже писать JS исключительно с помощью JQuery? Нормальная ли это вообще практика JQuery + React?
>>1165217 Если хочешь учиться тому, что актуально сейчас -- забудь про jquery. Если только ты не ставишь перед собой задачу поддерживать очень старые браузеры.
>>1165217 >освоить JQuery Чего там осваивать, наркоман? Как $ использовать? Даже у самого аутиста максимум неделя уйдёт. Ебашь реакт и не еби нам мозг.
>>1165222 Это понятно, я спрашиваю о том нормальная ли практика вообще использовать React и JQuery вместе?
>>1165219 Хрен с ними с браузерами, но как быть с тысячью написанных под JQuery плагинов? Неужели чтобы реализовать какой-нибудь банальный слайдер при разработке на React нужно его писать с нуля?
>>1165226 >Хрен с ними с браузерами, но как быть с тысячью написанных под JQuery плагинов? Тебе сразу вся тысяча нужна? 99% вероятность того, что то, что тебе реально понадобится, реализовано уже сто раз под реакт. >Неужели чтобы реализовать какой-нибудь банальный слайдер при разработке на React нужно его писать с нуля? material-ui тебе в помочь. Ну и гугл научись уже использовать, классная штука, базарю.
>>1165217 Мля, анон, зачем ты к у кого-то спрашиваешь разрешения? Бери JQuery да используй на всю катушку. Если увидишь, что он на каком-то этапе перестанет тебе подходить, то просто возьмешь другой инструмент.
>>1165255 Вот да. С учётом нынешнего зоопарка в JS-разработке, "нормально" будет всё, что сам считаешь нормальным.
Тем более, что требования у всех разные. Например, покажите мне аналог DataTables на React или Angular или на Vue - хуй там ночевал. И я не имею в виду "просто таблицу", а таблицу годную для промышленного применения и десятков тысяч строк данных + вся хуйня, что там наворочена.
Также и кукарекания про то, что jQuery "не нужно" - это отличный маркер долбоёба ограниченного человека.
Стоит ли вкатываться во фронтэнд в компанию которая делает лэндинги на вордпресс? Там js и wp знания требуются, ну и немного php. Что скажете? Я только закончил изучение js.
>>1165260 Что мешает интегрировать все это? Дохуя ж библ. Ну а так, похер конечно каким инструментом пользуешься. Обычно главное результат. Хотя для меня реакт по сути очень удобный.
>>1165666 С реактом я не работал (почти). Но, >так как внутрь функции <span> this не передан. с чего ты это взял? Смотрел исходники реакта? Как раз, логично было бы, чтобы он привязывал "правильный" this в таких случаях. Ты ведь понимаешь, что "<span>" обрабатывается транспилером и превращается в настоящую фунцию, а потом вызывается с теми аргуметами и this, с какими реакт захочет?
А вот "onClick = {this.increment}" - это уже какая-то другая фигня, не могу сказать - читай мануал, смотри исходники.
>>1165676 //с чего ты это взял? Смотрел исходники реакта? Как раз, логично было бы, чтобы он привязывал "правильный" this в таких случаях.
Бро, видимо по логике вещей и так и есть. Метод рендер как то передает this во все свои внутренние функции, и его можно подхватить. Поэтому и биндится метод из прототипа прямо внутри функции.
//И да, там может быть не bind(this), а call() или apply().
Представь, но нет, вот такая конструкция работает у меня. В баттон передается не вызов же метода, а сам метод. <button onClick = {this.increment.bind(this)} >Кнопка</button>
Выглядит как лютый костыль. Так не должно быть (по идее). Но, как лучше - не знаю. Странно, что такая проблема вообще возникает. Ты бы погуглил ещё, возможно, как то вообще иначе всё делается (с учётом специфики реакта).
Вообще, в подобных случаях в ES5 часто используют такой фокус, как объявление в функции-конструкторе переменной self: var self = this;
И далее, внутри всех методов используют self вместо this. Но, странно, что подобный фокус, получается, нужен и в ES6 тоже.
>>1165690 Да блядь, откройте уже для себя стрелочные функции наконец. class MyShiityComponent extends React.Component { .... increment = () => { .... }
>>1165699 Ну, вариант со стрелочными функциями я не стал предлагать потому, что они не являются полноценной заменой обычных. А с другой стороны, для методов экземпляра - это то что нужно, да.
Здравствуйте! Я завершил изучение js и у меня возник вопрос. Какой протокол и метод используют в чатах на приличных сайтах? Я так понял там непрерывное соединение. Я знаю что только iframe имеет поддержку во всех браузерах, но не верю, что его используют например в вк и фейсбук. Мне кажется там используют вэбсокеты. И если так, то как у них это работает в ie версии ниже 10? Ведь на них не будет поддерживаться вебсокеты.
Посоветуйте либу для построения интерфейса в терминале (а-ля midnight commander, ranger, yast...). Я так понимаю, самое популярное - это blessed, но он выглядит каким-то ебаным монстром, если честно (прозрачность и перетаскивание окошек мышью мне нахуй не сдались).
джейсоны , я ньюфажный и розовый , выручите пожалуйста. Вот у меня есть папка с однотиными изображениями , они должный быть в цикле загружены в однотипные же элементы DOM. Галерея , да
И это вызывает кучу идиотских вопросов типа: - Есть ли готовой решение вида "загрузить все файлы из папки в массив или объект или какое то еще хранилище"
- Нужно ли мне для этого называть файлы изображений максимально просто типа " 1.jpeg" и тд.
Пока всё до чего я додумался это сделать для каждого раздела объект и в нем поля 'scr' : '../img/1.jpg', 'description' : 'какая нибудь подпись под картинку'
Это вообще адекватно?
Анончики , подскажите пожалуйста . обещаю как научусь сам тоже буду помогать новичкам.
зачитываешь айтемы любым способом у теб будет массив объектов с полями src, description
теперь либо тупо ставишь их в ДОМ, но тогда они сразу начнут загружатся и будет немного хреново, либо ищи js-компонент который умеет подгружать картинки "правильно" - в бэкграунде, чтобы не было блинка при загрузке, по скроллу и тд
Где отдельный загон для бэкенда? Чому тут одни фронтомакаки?
Запилил приложуху, на men'е, с регистрацией, RESTом и прочими ништяками, сам, с нуля. До этого запилил бложик-приложение, а также всякие мелкие приложухи с использованием сторонних API.
>>1165991 Вот ты хуй. А кинь гит.. А то я вот учусь и могу работать только с открытым апи. Делать запросы, посылать чет. А как свой бек на ноде или сервер запустить не могу - ваще не ебу че там и как. Ты где учил эт все, и сколько?
>>1165999 >На РАБоту У меня 0 опыта, не думаю, что куда-то возьмут, тем более с моими скудными познаниями. Год назад получил диплом погромиста, но нас учили всякой древней хуйне. Вот решил научиться самому пилить веб-приложухи, во фронтенд могу на уровне вёрстки/жквери/ваниллы.
>>1166008 Бля, деанон по гиту...ну на дваче уже слишком много шкварок.
>А чего там уметь лел? node %приложениенейм%.js :D Я имел ввиду на хостинг какой-то, со своей бд, чтобы работал как полноценный сайт, а не дерьмецо..Но видимо надо рили учится долго чтоб такое пилить. >последние пару месяцев ты учил бек последние пару месяцев, или вообще все? Хтмл, цсс, фронт и прочее.
>>1166011 Только бэк, а именно men. Но я плотно так задрачивал, часов по 8-10 в сутки т.к. нигде не работаю, почти всё время на это трачу
>Хтмл, цсс, фронт Это я ещё со школы знаю. Ну и в универе нас учили бэку на питоне, но безуспешно. Плюс всякой легаси хуйне типа пхп, жквери, cms-кам разным, типа друпала и джумлы.
>>1166027 объявить переменную вне функции и присвоить в теле функции. Пили подробнее, я тебя не понял. >>1166008 >У меня 0 опыта, не думаю, что куда-то возьмут дай на ХеХе резюме и откликнись на вакансии с небольшими требованиями - авось возьмут, рынок к весне вроде оттаивает.
Я правильно понимаю что при первом запуске тернарный смотрит на переменную в функции, а при следующих уже на nextIndex созданного объекта? Вообще немного смущает эта nextIndex переменная.
>>1166145 прост заумно написаный цикл. при каждом вызове счетчик цикла (nextIndex) увеличивается до тех пор пока не достигнет profiles.length, тогда выставляется done=true и все.
>>1166145 Переменная nextIndex не создается в объекте, она создаётся один раз при вызове ProfileIterator в области видимости этой функции, а потом вызовы анонимной функции обращаются к ней через замыкание.
Подскажите, как научиться норма верстать под реакт? То есть я вроде все умею, весь мдн пролистал, могу подключить сss модулес, стайлд компонентс, материал юи и проч, но как самому-то норм быстро верстать и дизайнить мелкие юишные компоненты? Где примеры найти?
>>1166198 >становится связанной с profiles[nextIndex] Она не становится связанной. nextIndex сам по себе, это индекс — число. profiles[nextIndex] — это просто обращение к элементу профайла под номером nextIndex.
Не могу никак понять зачем нужен и как пользовать тхис. Он указывает на текущий объект, это я понял. Примеры у кантора видел тоже, понимаю как работают, но я вообще не могу вкурить как я его могу применить на практике в своем быдлокоде, а явное указание - это для меня что-то из разряда сверхразума. Это нормально или я совсем даун? Где почитать, чтоб для совсем ебычей разжевали?
>>1166226 Да он ебнутый по всей видимости. Он выделил элемент в инспекторе, и пытается его выбрать по селектору :hover в консоли через querySelectorAll.
Только вдумайтесь в его затею, и осознайте какой пиздец в голове у этого "прекрасно знающего основы js" человека.
>>1166770 Да все уже, я разобрался. Там проблема вообще с этим не связана. Просто значение присваивается через асинхронный запрос и объект формируется раньше, чем оно присваивается. Я просто заменил запросы синхронными, это сильно bad practice, или норм?
>>1166769 Такие как он насмотрятся васянских уроков на ютубе, научаться копипастить, и уже считают себя гуру фронтенда. А на деле не могут селектор в доме выбрать.
Как же хорошо, что нам в ВУЗе разжевали ванильку, хоть это и было сто лет назад.
>>1157660 (OP) Существуют ли функции для деления и отнимания больших чисел в виде строк, как например вот эта: https://jsfiddle.net/mtsL1k2x/5/ Можно ли написать так же кратко, используя какой-то быстрый алгоритм рассчёта?
У меня есть ещё функция для перемножения чисел, если хотите - дам.
>>1166728 если инглиш знаешь, скачай курс с рутрекера understanding weird parts, там лучше чем в Канторе пояснено (кантора я не понял в свое время, а их легко). Оттуда тупо 2 главы можешь посмотреть, одна про контекст запуска функций, скоуп и евент луп, вторая про объекты и функции.
>>1166809 Ну теперь сходи узнай, что существуют не только целые числа. Потом узнай про IEEE 754и что такое действительно большие числа, а не твоя детская поделка.
Джачаны, стоит ли мешать flexbox с grid? Или на всякий случай сделать по старинке страницы с display:block и т.д? С Grid'ом и flex'ом все удобно и легко, поэтому боюсь.
>>1166083 а на что у тебя мышь наведена, когда сей запрос выполняется? >>1166858 вай нот, зачем тогда их прикрутили - на любоваться же. >>1166876 если код вбивать - то да
>>1166819 >Ну теперь сходи узнай, что существуют не только целые числа. Любое дробное число, если это не бесконечная дробь (периодическая или непериодическая), можно представить в виде N/(1⋅10^R), где N - целое, R - число знаков после точки. Поэтому, меня интересуют целые числа.
>Потом узнай про IEEE 754и что такое действительно большие числа. наименьшее отличное от нуля положительное число, которое может быть представлено как 1 × 10^-101, а самым большим 9999999 × 10^90 (9,999999 × 10^96)
Тот код может оперировать намного большими числами, в виде строк. Максимальное число для безопасной работы в JS - это MAX_SAFE_INTEGER 2^53-1 = 9007199254740991. >твоя детская поделка Сходи лучше узнай что такое - длинная арифметика.
Интересуют алгоритмы быстрого вычитания длинного большего от длинного меньшего, с целочисленным положительным результатом, а также алгоритм быстрого деления с остатком - с целыми числами в результате или же нулём, если остатка нет.
Я знаю, что есть BigInteger, но инклюдить его не очень хочется, а перелопатить код, чтоб найти функции долгое и нудное занятие. Они могут зависеть от других. А в ссылке, что я закинул сюда - там лишь две простые функции.
Думаю над выбором между TypeScript и Flow. Предпочитаю чтобы nullable типов было явным, в TS такая опция есть, но не по-умолчанию. Поясните, использование strictNullChecks в TS может сломать декларации типов библиотек, которые писались без strictNullChecks?
Подскажите, здесь аррай получается передается по ссылке? и fs ссылается на тот же массив из кложюра? или создается новый арр после ретерна и ссылка идет только на изменившийся i?
>>1167192 Посмотрел презентацию, все говорят мол хватит поддерживать старые браузеры, нужно двигаться вперед. Но ведь без поддержки никак, да и производительности, но технологии от W3 намного лучше по оптимизации и производительности, и они вернули старый вид разметки, который был удобен, да и работает лучше. Просто делаю магазин, с гридами и флексами прям удобно делать все, не нужно кучу коробок создавать, чтобы их флотить, никаких больше паддингов, никаких width: 30%. Уже встроенный фрейворк. Как ты думаешь, всунут ли Grid или Flexbox в другие фреймворки? Если уже не всунули? Я нуб просто.
>>1167233 в юишные фреймворки всунули. Есть же компоненты в материал-юи типа грида, они стопроц на флексах с медиа кваери под любую ширину. Да и бутстап вроде тоже на флексах уже
>>1167229 Буду ли я прав, если скажу, что кложюры - это частный случай работы скоуп чейнаа, когда функция, которая вызвала экзикьюшнл контекст проебуется со стэка, но ее переменные, на которые остались ссылки, остаютяс в памяти?
>>1167233 мне кажется что говном мамонта в современном интернете пользоваться просто не получится, даже какой-нибудь оперой-12, не говоря про ие. так что можешь сильно не переживать или влепить плашку. в бутстрапе юзается, и в других скорее всего тоже
Насколько реально фрилансить на жаваскрипте? Мне много не надо, я студент и деньги нужны только на игоры и подобные небольшие траты, это не вопрос выживания, просто какие-нибудь даже 10-20$ за неделю(по полчаса-час) по вечерам мне пригодятся, но главное что хоть какой-то реальный опыт в чем-то будет, пока в вузе я задрочу математику. Вообще опыт у меня в программировании довольно большой для первого курса(кресты, опенгл, жаву и юнити юзал), но максимум что я делал - небольшие игры. Я посмотрел на фрилансер.ком что требуется от жсбояр - в основном "ай нид а сайт" за 100$, реакт, расширения для хрома, "пофикси вот это". Сейчас у жаваскрипта я немного знаю синтаксис и написал какую-то хуйню с jquery ui с минимальной версткой страницы(просто кнопки всчкие расставил и пару виджетов от жквери). Я правильно понимаю что надо позадротить хорошо реакт(который пойдет ка кдля запиливани и попробовать сделать расширения для хрома и можно приступать к фрилансу?
>>1166788 ну вы долбоебы что я могу сказать. Код должен читаться без комментариев и должен быть без сложных структур которые заставляют задумываться. Т.е ты читаешь код, видишь конструкцию зависаешь вспоминаешь и читаешь дальше и так по 200 раз в место прямого пути ветвистый. А когда дочитал до конца функции уже устаешь. Я когда стал писать так свой код, комменты даже редко стал оставлять потому-что и так понятно что он делает из названий методов + разделение ответственности, слабо связанный код и явных конструкций типа function() {} в место закорючек которые отвлекают от себя внимание. Код в результате легко читается. А если там вложенные данные, массив состоящий из объектов у которых свойства - методы создаваемые в циклах или еще что-нибудь, запарьшься читать подобное [{{}=>[{}[][][][][]{}]}].
И еще пример, вот ты читаешь книгу, она бывает насыщена всякими терминами и сложными выражениями которые несут закодированный смысл (zip архив ирл). А бывают легкие книги, где раскрыты все мысли, но текста больше, прикол в том что они и читаются быстрее и понятнее и не утомляют
Ну что посоны, как копируете инстансы классов, если у них есть функции, а? А? Попробуйте с помощью Object.assign, охуеете, что оно не умеет копировать МЕТОДЫ КЛАССА БЛЯДЬ.
>>1167459 Нахуя мне читать оправдания жалких жабаскриптовских макак, которые только и умеют, что решать IMMEDIATE проблемы и не могут на шаг вперёд предусмотреть последствия своих действий?
>>1167517 колл можно проэмулировать оператором () и постановкой функции в нужный объект и запуск оттуда, кроме (), кола и эплая других способов запуска функции нет, все они ссылаются на внутренний метод prototype.[[call]] вроде как. Еще их можно друг через друга переписать.
>>1167476 Как же заебали шизики, которые обсирают фичу_нейм в язык_нейм, хотя не знают других языков и как эта фича в них устроена. Внезапно, в большинстве ОПП-языков обычно ты сам должен для класса определить метод copy(), который обычно включает в себя вызов, блять, конструктора класса.
>>1167608 И что с этого? В других языках даже методы из третьих либ не делают такую хуйню, какую творит копировалка из родной либы жабаскрипта. Не копировать сука методы, что это за пиздец вообще? Почему они до сих пор не пофиксили или не заинтродюсили нормальный вызов, который делал бы нормальную копию инстансов класса, если уж классы в жабаскрипте есть?
>>1167638 Да я уже понял, что походу объявлять функции в жабаскрипте - это себе в ногу стрелять, нужно юзать только инстанс функции. Создателям надо вообще нахуй выпилить их, раз они нормально вообще нигде не работают: то блядь this теряют, то сука не копируются. Вообще охуеть.
>>1167633 Таким уебкам как ты даже помогать нет желания.
В js классы в отличии от твоих зашоренных мировоззрений - это такие же полноценные объекты, как и все остальное. Методы твоего "инстанса" не лежат в твоем инстансе, они лежат в другом объекте. И более того, они не перечисляемы. Ты используешь метод, для КОПИРОВАНИЯ СОБСТВЕННЫХ СВОЙСТВ ОБЪЕКТА, и ожидаешь, что скопируются НЕ СОБСТВЕННЫЕ. Ты умственно-неполноценный?
>>1167641 Они работают как раз нормально, как и должны. Это ты работаешь не нормально, пытаясь натянуть сову на глобус. Схуяли ты вообще решил, что везде должно быть так, как ты привык где-то в другом месте? Ты не видишь дальше собтсвенного носа.
>>1167642 И как, часто тебя выручал такой Object.assign, который не копирует методы класса в новый объект? Дохуя логично же! Вот, в общем, костыль против такой хуйни: const copiedInstance = Object.assign( Object.create( Object.getPrototypeOf(correspondingInstance)), correspondingInstance); где correspondingInstance - инстанс класса.
>>1167653 Тебе весь тред говорят, что Object.assign не предназначен для того, для чего ты его используешь. Ты нихуя не понимаешь и продолжаешь тянуть свою лямку.
То, что ты изобразил - это не копирование. Твой новый объект точно так же зависим от цепочки прототипов, и от изменений в ней.
>>1167653 А Классовые объекты вообще нельзя копировать, так,к ак это делаешь ты. Ни водном языке. Потмоу что они блядь должны конструироваться. И если копироваться, то специальными, внутренними конструкторами. Это тебе не структуры данных, дебил ебанный. Иди попробуй поклониируй DOM Ноды или Файловые дескрипторы, представленные объектами.
>>1167653 >И как, часто тебя выручал такой Object.assign, который не копирует методы класса в новый объект? Дохуя логично же! Дохуй. У Object.assing совершенно иной юзкейс. Он предназначен для ассигнирования хэш-мапов, а не объектов. Например когда не было дефолтных значений аргументов функций, он использовался повсеместно.
>>1167735 Типа кривой механизм обработки плавающих чисел? Я уже забыл чет про экспоненты в си. >>1167736 Да ими особо никто и не пользуется если вести речь про обычные программы, но в большинстве случаев они очень полезны для некоторых вещей. Математики широко используют для вычислений, всякие ученые там.
>>1167634 У тебя пример логике противоречит. Если ты передашь зис сам, то он всегда будет верным и нет смысла его проверять и вообще зисом называть. Просто ссылка на объект. Методы другого объекта ты все равно не сможешь использовать на этом объекте, как бы ты не исхитрялся передавать. Мб я не прав. Я просто даже не вижу у тебя строчки зис = зисарг или чего-то такого.
>>1167760 >то он всегда будет верным и нет смысла его проверять Это ты не понмаешь как оно работает. Переданный this может быть null, undefined и тогда он должен указыать на global, или может быть примитивом числом\строкой\булом, и тогда его надо завернуть во временный объект иначе ничего не заработает.
Где найти код дефолтных событий браузера? Хочу посмотреть дефолтную реализацию onSubmit для разных форм и не могу найти - гугл выдаёт всякие учебники и обработчики событий от васянов.
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы: https://github.com/vladimir37/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения: https://github.com/vladimir37/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки: https://github.com/vladimir37/js-thread/blob/master/Wiki/tools.md
Конфа /pr/ в Slack: https://slack-2chpr.herokuapp.com/
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.