24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Ты СОВЕРШЕННО не понимаешь в чем суть JS. JS это не раби «о, привет чуваки, зацените я слепил три гема и получился блог, гыгы». JS это не псевдофункциональный код питона. JS это не C#, Джава или ПХП. JS это язык, на котором люди могут побыть программистами-творцами — ужасными, поехавшими, ненормальными чудовищами, которыми они на самом деле и являются.
Добавили промисы, а мы смеемся. Присыпали сахаром прототипы и назвали классами, а мы смеемся.
Три тимлида прыгнули с крыши 16-этажного дома, взявшись за руки после попытки разгрести код с тридцатикратной вложенностью, а мы смеемся и просим еще. Промисы, колбэки, асинки/авайты — мы смеемся. Модульность, асинхронность, непрерывная интеграция, юнит-тестирование, key-value хранилища, два десятка фреймворков на любой вкус — мы смеемся. GitHub позволил писать приложения на десктопе, запихивая в каждый хеллоуворлд отдельный браузер — мы смеемся. Мы бездушно подпишемся под чем угодно, наши предпочтения не основаны на здравом смысле, бесцельные споры — наша стихия, мы — истинное лицо современного IT.
>>1167958 (OP) Существуют ли функции для деления и отнимания больших чисел в виде строк, как например вот эта: https://jsfiddle.net/mtsL1k2x/5/ Можно ли написать так же кратко, используя какой-то быстрый алгоритм рассчёта?
У меня есть ещё функция для перемножения чисел, если хотите - дам. Это - длинная арифметика. Интересуют алгоритмы быстрого вычитания длинного большего от длинного меньшего, с целочисленным положительным результатом, а также алгоритм быстрого деления с остатком - с целыми числами в результате или же нулём, если остатка нет. Я знаю, что есть BigInteger, но инклюдить его не очень хочется, а перелопатить код, чтоб найти функции долгое и нудное занятие. Они могут зависеть от других. А в ссылке, что я закинул сюда - там лишь две простые функции.
Где найти код дефолтных событий браузера? Хочу посмотреть дефолтную реализацию onSubmit для разных форм и не могу найти - гугл выдаёт всякие учебники и обработчики событий от васянов.
>>1168565 v8 за всю работу дома отвечает и просто закидывает в очередь эвент лупа онклики и прочее говно, которые потом входят в стэк вызовом колбэков. (я себе всегда это так представлял)
>>1168605 v8 отвечает за эвентлуп, а не за дом. дома в v8 нет и никогда не было. алгоритм обработки форм дома описан в сорцах компонентнов браузера отвечающих за дом. v8 это js-engine, а не дом.
Антоны, посоветуйте нормальный видео курсы или книги по js, чтобы потом было легче вкатиться в react native. Если вкатываться в react native то нужно ли знать html и css?
Анон, помоги, как реализовать функцию __extends в примере ниже. Я так понимаю она должна работать как расширение классов в ES6, но как это реализовать отдельной функцией? https://repl.it/repls/StarryJudiciousLoopfusion
Недавно вкатился в этот ваш жаваскрипт(после статически типизированных языков) и мне очень непривычно. Я забываю просто какие проперти у какого объекта или класса есть, какого типа аргументы какая-то моя функция принимает(а иногда это должен быть какой-то класс), ну и так далее в том же духе. Про всякие функции и обжекты из других библиотек я вообще молчу, это же пиздец - вот есть какой-нибудь getZalupa(hui, mocha) который принимает хуй знает что и возвращает хуй знает что, и вместо того чтобы за 1 секунду навести курсор на эту функцию и посмотреть типы мне надо лезть в документацию и смотреть что там оно принимает и что возвращает, и какие проперти у того и другого есть и зачем оно вообще нужно. Это не жава, в которой я иногда вместо просмотра документации начинал просто писать примерно первые буквы слова которое связано с тем что мне надо и так наугад находил нужную мне вещь.
Это я что-то не так делаю или надо просто привыкнуть к этому пиздецу? Или даже не привыкать, а использовать что-то статически типизированное, тайп скрипт какой-нибудь?
Как уронить WebWorker? Именно уронить, crash, а не просто вогнать в бесконечный цикл. Хочу понять, упадет ли его родитель, и если да, то до какого колена.
Пробовал выделять овердохуя памяти в нем, нихуя не происходит. Эффект аналогичен бесконечному циклу, в какой-то момент он просто перестает отвечать на сообщения, но падать не падает.
>>1169431 Ты писал не на языке, а на IDE. Если довольно долго, то считай, что ты уже профдеформирован. Дальше сам выбирай. Вряд ли динамика для тебя. Программист на форте везде будет писать на форте. Ты везде будешь искать статичность и автокомплит. Соответсвенно и выбирай инструменты аналогичные - типизированые трансляторы, типизированные статичные библиотеки, без мета-магии, и вот это всё.
>>1169431 А, ну и алсо, js это современный ассемблер, просто для более высокго уровня абстракции. Вот и думай. Писал бы ты на асме под аппаратуру, откуда бы брал себе автокомплит. С js-ом тоже самое. Это встраиваемый язык, и его возможности диктуются окружением. Так что на TS ты писать конечно можешь, но вот можешь ли ты писать на TS, например под Автокад?
>>1169537 Проблема не с областью видимости, а с контекстом вызова функций, то есть this. Когда ты в showItems вызываешь форматтер, ты ему напрямую указываешь, что вот твой контекст, работай в нём. Он такой окей, понял. А когда ты вызываешь его через show, ты уже не говоришь передаваемой функции, в каком контексте работать. В итоге этот контекст проебался. Последний способ не работает, потому что ты передаёшь в параметре уже вызванную функцию, и в show в итоге пришла строка, которую вернула передаваемая функция, и show такой: "и хуле ты от меня хочешь, строку вызвать? Ты шо ебобо?"
Решение - передавать контекст дальше внутри show. Тогда функция будет указывать, что принятому аргументу нужно выполниться в контексте этого show.
Анонеймы, молю помогите. Проебываю понятие callbackов, из-за этого не понимаю суть работы map, reduce, for each и т.д. Гуглил - нихуя не понял. Смотрел видосы на ютабе - нихуя не понял. Где еще можно почитать/посмотреть чтобы понять?
>>1169809 Я тоже не понимаю это слово, но оно и не нужно совершенно. Map и проч. очень элементарно работают. Тупо функция принимает в кач-ве параметра другую функцию. Возможно это и есть колбэк.
>>1169811 Да, это и есть колбек. Но блять в моей тупой голове не укладывается суть работы функции которая в качестве параметра принимает другую анонимную функцию.
>>1169820 Что сложного блядь. Представь, что ты землекоп. Копаешь траншеи. Сколько скажут столько и копаешь. Вот отсюда и до обеда.
Вот, ты блядь - функция. Принимающая на вход параметры нужной траншеи, и возвращаюшая в итоге саму траншею с этими параметрами.
Теперь представь, что тебя повысили до бригадира землекопа. Теперь ты сам траншеи не копаешь. А используешь для этого других землекопов, которых тебе дают.
Вот ты снова блядь функция. Только теперь один из принимаемых тобою параметров, это другая функция - землекоп. Скажем, говорят тебе выкопай 10 траншей по 1- метров с помощью вот этих вот землекопов. Ты такой окей, берешь землекопов и говоришь им что делать.
Пиздец просто, принцип проще некуда. Весь мир на нем построен. Что не ясного.
>>1169864 Неужели тебе не очевидно, что к моменту когда ты пытаешься вызвать ss в своем fq = ss(..) функция ss уже не существует вообще? Это не говоря о том, что в той области видимости ее и не существовало никогда, но это ладно. Я о том, что вы когда код пишете - вы наугад ебашите, не приходя в сознание? Не пробовали побыть интерпретатором и по шагам выполнять то, что вы написали? Вас как детей надо, чесслово, ставить в круг, и играть в игру аля-крокодил, давая каждому задачу - вот ты переменная, ты функция, ты вот число, ты вот поток выполнения, давайте посмотрим, что тут происходит.
Просто катастрофический дефицит абстрактного мышления у вас, товарищи.
>>1169999 Такое обычно рисуют на канвасе, а не на дом-нодах. Если вместо дивов готов рисовать все на канве, то изи какой-нибудь d3 или что-то было. Гугли по js graph visualization
Аноны, есть тут кто шарит в промисах? поясните какого фига в results пушится не сразу, а только в конце? Откуда он знает что будет последний then? И что вообще записывается в chain? http://plnkr.co/edit/pzWpd9418pnVJxlvK4SV?p=preview
Т.к я очень тупой, сухой формат Кантора иногда бьет по голове даже после 10ого перечитывания главы. Может есть книга где более на пальцах разъясняют? Я, как и все дебилы из фронтенд треда привык к курсам от хтмлакадемии, где объясняют для аутистов полнейших, тяжело вкатиться так резко в сухую литературу (а что будет когда документацию читать буду вообще не понимаю, наверное повешусь или в дворники вкачусь в итоге).
>>1170355 Можешь на тытрубе глянуть видосы по жс, там их много. Но дело не в том что хтмлакадемия хорошо объясняет, а в том что хтмл и цсс очень простые вещи. Кодинг это сложнее намного. Привыкай. Решай задачки-говоломки на сообразительность для развития мозгов.
Смотрите, решал задачку на кодварс (Delete occurrences of an element if it occurs more than n times) https://jsfiddle.net/vsuzmkko/1/ Хочу, чтобы двачик сказал мне, что решение очень элегантное
>>1170490 написано странно. проще было просто для каждого числа счетчик увеличивать и если больше N то не выводить результат. типа for( var i : input) { cout++; if(cout>n) continue; result.append(i); }
>>1169431 JSDoc для кого придуман, блять? Большинство нормальных либ его используют. А нормальные редакторы его хавают и показывают по наведению мышки.
>>1170355 Кодинг на самом деле намного проще сss'a, в кодинге ты просто кодишь очевидные фронтовские алгоритмы, а не ебешься с пикселями и движениями неведомой хуйни вправо-влево. По основам жса глянь курс с юдеми, скачай с рутрекера вирд партс жаваскрипт.
Кантор хуевейшая книга сама по себе, объясняет он по-даунски, не советую
>>1170982 Он простой программист. Его основная заслуга, если ее таковой можно считать, что он распространил формат json и пропихнул его для спецификации. В то время все обменивались xml'ом, Крокфорд взял нотацию хэш-таблицы и js и популизовал как формат для обмена данными на замену ксмл. Так вот.
Но суть в том, что ссылаться на чьи-либо мнения, как какие-либо аргументы, в темах, не касающихся самих этих людей, тем более в формулировках САМ, ну это пиздец. Особенно для программиста.
>>1170909 Да не неосиляторы. Я прекрасно понял, что твоя каша из тернарных операторов делает. Только вот с точки зрения читаемости за такое нужно по рукам бить.
Аноны, есть ли в html такой тег, который выводит текст в окне? То есть, есть окошко с белым фоном, и там написан текст, который нельзя менять на странице? Что-то вроде textarea, но текст на странице изменять нельзя.
Безопасно ли использовать protected route в Angular? Да, если пользователь не идентифицирован на сервере и не имеет ключа, он не посмотрит защищенный компонент и, уж тем более, не получить json с данными от сервера (asp.net core если важно). Но, злоумышленник, посмотрев в код, будет иметь представление какие данные отдает сервер и как они отображаются у пользователя. Это нормально?
Нужна небольшая консультация, так как не имел опыта на JS вообще, кроме пары тестовых заданий. Я хочу сделать html форму с JS скриптом, который будет генерировать данные (на основе JSON файлы в этой же папке) и выводить их в форму. + хочу прикрутить возможность сохранять данные в txt формате на диск. Возможно ли это реализовать на чистом JS? При условии, что на компьютере, где будет работать скрипт, не будет админских прав и интернета. Только IE и Chrome.
>>1171722 Ну смотри. Обычными средствами ты не сможешь получить доступ к файлам в браузере, ибо безопасность. Но если твое приложение крутится на локалхосте, то ты вполне можешь получить содержимое файла через ajax.
>>1171722 Можно. Формируешь файл в памяти и даешь его на созранение.
На ознакомься с экхемплом https://app.keeweb.info/ Это одностраничное приложение работающее локально, ты можешь сохранить страницу html себе на диск и запускать локально, а не удалено.
Что почитать дауну, чтобы понять, как работают коллбек-функции? Нихера не понимаю, слишком сложно для меня. Вернее суть я уловил, но когда начинаю смотреть примеры, то пиздец как сложно.
>>1172050 Также есть недокументированные способы, но они применяются с диалоговыми окнами через загрузки.
Ты можешь сохранить такой файл (при согласии пользователя), но не можешь загрузить, поэтому как писали выше используй хранилище браузера и не парься это тот же файл на диске юзера. Разницы нет никакой.
>>1169871 А деструктуризация в других ЯП тоже есть? Хоть и понял как она работает, но до сих пор когда её вижу напрягаю свой мозг, чтобы понять что куда присваивается, особенно когда присваивают свойства какого-нибудь объекта. Иногда кажется не очевидной хуйнёй, которая только усложняет код.
>>1172067 >А деструктуризация в других ЯП тоже есть? Есть, конечно. В этом плане в js нет ничего уникального ни в чем, кроме того, что он собрал лучшие фичи из всех остальных языков.
>Иногда кажется не очевидной хуйнёй, которая только усложняет код.
Серьезно? вызво функции тебе не кажется нечевидной хуйней? А операция сложения? Уверен? А если бы ты жил во времена программирования на перфокартах?
>>1172035 Спасибо, вроде немного получше понял. Ещё дебильный вопрос - в каких ситуациях использовать forEach, а в каких for? Первый мне всегда давался с трудом, так что я всегда писал всё через for и если видел в чужом коде forEach, то переписывал его в for для лучшего понимания. Но в чём отличие и где применять каждый из них - я нигде не нашёл инфы.
>>1172115 >и если видел в чужом коде forEach, то переписывал его в for для лучшего понимания. Вот же червь-пидор. Надеюсь тебя гонят отовсюду ссаными тряпками.
>>1172087 В которой раз убеждаюсь что комьюнити на дваче ужасно агрессивное. Это наверное потому-что здесь в основном омеги которые если в чем-то разобрались лучше других, начинают компенсировать и самоутверждаться
>>1172115 >Ещё дебильный вопрос - в каких ситуациях использовать forEach, а в каких for? Первый мне всегда давался с трудом, так что я всегда писал всё через for и если видел в чужом коде forEach, то переписывал его в for для лучшего лол, тоже этим страдал, просто Кантор упор на for в уроках делал, и у меня это от него. Хотя на деле все перебирающие методы наоборот упрощают жизнь, поэтому нужно специально заставлять себя именно их использовать, пока не станут как родные
>>1172146 ФП это прежде всего зависимые типы, а не лямбды. Лямбды - это обычная императивнщина. И функции передают по ссылке в другие фукнкции испокон веков. И в си, и в плюсах, и даже в асме. Особенно в асме.
>>1172131 Мне в форыче не нравилось то, что из цикла нельзя выйти преджевременно. Плюс, в каком-то перформанс тесте я встречал, что итератор и forEach работают намного медленнее классического for (let i = 0; i < a; i++). Так что если встаёт вопрос быстрого перебора больших массивов, да ещё чтоб останавливать в нужном месте, то лучше каноничного фора ничего нет.
>>1172115 >Но в чём отличие и где применять каждый из них - я нигде не нашёл инфы. В том что в жс нет цикла форич. Метод массива форич есть, а цикла нет. Соотв-но фор универсален, форич нет.
Анончик, чё пачитать по вебпаку? У меня три пакета p5js+webpack+webpack-cli тянут 1 мб зависимостей в деве, это немножко дохуя и собирается неприлично долго для хелло ворда. Я хочу чтобы эта сука не пихала в бандл неиспользуемые зависимости.
>>1167958 (OP) Привет, программач. Пишу приложение на Node. Нужно сделать так, чтобы при подключении первый пользователь попадал на страницу с ссылкой, передав которую второму пользователю тот мог бы подключиться к первому. При этом, этом, нужно чтобы одновременно больше одной пары пользователей могли поддерживаться подобным образом. Как это сделать? Подозреваю, что нужно как-то химичить с socket.io и неймспейсами, но не совсем понятно, как именно.
Анон, поясни идиоту, какого хуя тут 16? Цикл выполняется до i = 7 (потому что знак i<8, а не i<=8), и "sum+=i" тоже делает sum = 7. Так чому тут 16? Я понять не могу.
>>1172330 Как вы заебали. А вы ожидали, что вызов функции на кажду. итерацию будет быстрее цикла, что ли? Вы ебаутые? нахуй вы каждый раз повторяете быстрее, быстрее. А код без функций еще быстрее, что теперь - не использовать функции? Ты тупой? Сукка, нахуй иди мудак.
>>1172580 Да, это я понял. Просто при самостоятельном разборе кода я совсем забыл про sum+=i и не брал в расчет выполнение этой строки совсем. Невнимательность - один из моих главных врагов.
>>1172940 Это понятно, что найти сейчас можно всё. Просто мне хотелось бы найти нечто цельное и систематизированное по ноде и (желательно) реакту, вот и присматриваюсь к разным курсам.
>>1172910 Не стоит, просто всрёшь деньги. Обычно на курсы идут те, кому сложно читать статейки, и им хочется чтобы их научили. На деле информации там всегда меньше чем нужно, и самое страшное, ты себя приучиваешь к тому что-бы кто-то тебе всё обьяснял. Но при этом всём курсы всё равно годная штука чтобы их наворачивать с видосами, статьями, документацией, мастер-классами, но естественно если не платить за них деньги, и не проходить их по два-три месяца, лол. А смысл отдавать деньги за что-то если тебе все равно потом придется дообразовываться из других источников? К тому же я смотрел один курс с лернжс, и там было просто адовое качество с бульканьем микрофона и со звуками автомобилей из окна. А люди за это ведь платят.
Анон, вопрос по сокетам, а точнее библиотеке socket.io. Как, сука, задетектить, что socket.emit('msg') прошел, а не соснул с ошибкой? Там вторым аргументом ебаный коллбек на выполнение, в оф.доке не нашел ответа.
>>1173112 Че тут сложного то Для каждого i элемента в массиве: _если сумма элементов от 0 до i-1 равна сумме элементов от i+1 до последнего: __добавить i в массив ретурна
>>1173094 Грубо, но верно. Есть ли какие- то сервисы, которые подгоняют строки для более приятного и понятного чтения? Вроде бы похожий сервис видел гайде по пхп в соседнем треде.
Вы мне только скажите, я реально настолько тупой или синтаксис жса действительно местами сложный? Откуда столько скобок блять, как не привыкшему глазу это уловить все? Как понять что где куда?
Читаю Кантора, дошел до замыканий и обсираюсь на каждом шагу. Не могу решить ни одного задания, внезапно из-за того что 3 дня уже читаю это - позабыл все. Даже сортировку забыл как делать. Заново читать Кантора или лучше пока не проебал вообще всю цепочку перепрыгнуть на альтернативный источник информации?
Почему к реакту практически нет никакой официальной документации? На reactjs есть либо туториалы, либо типа доки, которые на самом деле никакие не доки, а набор сказок с примерами, из которых нужно сидеть вылавливать, что же блять делает конкретная функция, что она принимает, и что возвращает. Вот хочу я, допустим, узнать про setState, что там за колбек есть, принимает ли он аргументы и какие, есть ли гарантия, что он вообще выполнится, и если выполнится, то когда именно -- а хуй там, нихуя не написано. Про события вообще молчу, молчаливо высрали наборы пропертей для каждого события и типа на этом доки закончились. А что это блять за проперти, какие у них области допустимых значений, где я это должен узнавать? В гугле в бложиках ноунейм смузидебилов? Это типа норма для жс-экосистемы или как?
>>1174070 Ну охуеть теперь. То есть вывалили библиотеку без доксы, без нихуя, с полутора рекламными высерами в бложике и все, пользуйтесь, ребята? Заебок, чо. Надо ораклу предложить тоже на такую систему перейти. А то чо в каменном веке-то жить, документация какая-то, обратная совместимость, program against interface, какая чепуха, господи. То ли дело написал drinkSmuzzi() и потом переебываешься с ней по гуглу, пока не найдешь восемнадцатым коментом в бложике васяна, что же эта блядская функция все-таки делает.
>>1174110 The second parameter to setState() is an optional callback function that will be executed once setState is completed and the component is re-rendered. Generally we recommend using componentDidUpdate() for such logic instead.
Вот все, что написано в твоем хваленом апи референс про колбэк в setState. Что из этого мне должно стать понятно про его использование?
Смысл в том, чтобы дать тебе знать, когда эта операция закончится. Иногда в таких случаях в колбек передаётся ещё некий параметр - состояние, ошибка и т.п.
>>1174153 Нииит. Это не правильна. Ни па уму. Надо, чтобы в описании каждого метода\функции, любой, даже самой простейшей библиотеки были пояснения, что такое функция, что такое коллбэк, что такое строка, что такое число, как числа представлены в языке, как представлены объекты, что такое объекты, что такое методы, что такое переменные. Иначе это не па инжинерному и жс гавно
>>1174175 Ну, честно говоря, документация для большинства js либ и фреймворков оставляет желать.
Видимо, сказывается эфемерность всей этой хуеты. Написать годную документацию - нужно время. Пока напишешь половину - выходит версия 2.0, не совместимая с 1.x вообще.
А писать самодокументируемый код многим смузихлёбам запрещает их религия, ибо так пропадает флёр собственной исключительности.
Ну и чем меньше доков - тем больше поисковых запросов, больше постов на SO, больше хайпа.
Поэтому, вместо документации пишут сказки о том, как всё будет охуенно, если начать использовать фреймворк Pink Reactive Zalupa 3.0.
>>1174153 >>1174171 Ребята, я знаю, что такое колбэк и что setState выполняется асинхронно. Но какие аргументы передаются в этот колбэк? Можно ли внутри него вызывать setState? Вопросов такого рода можно назадавать кучу, а ответы на них искать негде, разве что в сырцы лезть. >>1174175 Че ты кривляешься, не маленький уже.
>>1174264 Рискну предположить, что твой div не сфокусирован. Более того, из коробки он и не будет фокусируемым, тебе нужно руками добавить ему это свойство. tabIndex вроде называлось, погугли кароч.
>>1174308 без условия выведи в консоль кейкод на любую нажатую клавишу, и увидишь что твоё условие построено совершенно неверно, код совершенно другой на буквенные клавиши
Анон, зающий реакт и сокеты, и использовавший эти две технологии в построении спа, есть к тебе вопрос (круто было бы в личку, @ke3evra) Нужна интеграция сокетов с редаксом, и есть наработки в ту или иную сторону, хочется услышать критику этих решений или твой совет, как не соснуть с расширением приложения.
>>1167958 (OP) Анон, подскажи, как сделать такой файл, чтобы из него можно было тянуть примера json-запроса?
Я тут пытаюсь написать обработку json-ответа от сервака, но сами ответы нерегулярны и вот хочу записать пример в файл, чтобы дергать, когда понадобится, но просто запихнуть массив в квадратные скобки - недостаточно!
>>1174425 Хм, постараюсь донести мысль. В спа есть два варианта общения с сервером -- обычные запросы через axios и через socket.io. При инициализации приложения создается инстанс апи-клиента аксиоса. _Все_ запросы этого инстанса вызываются исключительно через асинхронные редакс экшоны, доступ к апи-инстансу изнустри любым компонентов невозможен. Вопрос -- как реализовать общение через сокеты? Как я вижу. Все сокет.эмиты идут точно так же, как и запросы аксиоса -- через асинхронные редакс экшоны. Нужно что-то заэмитить -- вызывается экшон, после прохождения него диспатчится успешный (или не очень) экшон. А вот куда пихать все листенеры сокета? В моем представлении -- в роутах аи рядом с объявлением инстанса сокета. Причем при объявлении инстанса сокета передавать ему заинициализированный стор, уже диспатчить нужное действие при получении данных с сервера. Жду критику решения.
Посоны, есть привязанный к html .js, в нем набор функций и ивент листенеры. Проблема в том, что эти функции выполняются в любом случае, как только на строчки с ними попадает парсер. А мне нужно, чтобы только при кондишене. При этом запихать её сразу после этого кондишена не могу, потому что вызывать надо при разных событиях. Что делать?
Аноны дайте совет как лучше реализовать, предположительно юзеру нужно выдавать логины-пароли через сайтик вида "user1488;12345" по нажатию на кнопку после авторизации. Мне нужно эти логины периодически куда то добавлять в более удобном виде, что бы потом они после выдачи юзеру заносились в какую нибудь другую БД как использованные с меткой времени, когда именно было выдано. Как самое простое думал заносить их просто в txt файл, парсить первый. После выдачи юзеру удалять позицию и заносить ее в другой txt файл отработанных логинов с припиской времени когда именно было выдано. Может подскажите более элегантный вариант, желательно подсказать в какую сторону копать. Я еще не макака, я только учусь.
Есть ли какие-то библиотеки для попиксельной обработки изображений в js? Это вообще на нём возможно? Там же нужно файл декодировать. Или в ином случае мне на стороне сервера лучше преобразовать в json и на клиенте уже работать с массивом? Как тогда сократить по памяти огромный несжатый список?
>>1174455 Есть токая хуйня, как callback. Эта просто функция, которая вызовется в будущем, и ей будут передана нужная информация в виде аргументов.
$.each возьмёт твою data, попидарасит там чутка, а после этого для каждого объекта в коллекции data вызовет ту самую функцию. И вот в будущем при вызове он передаст туда те самые key и value. Их объявление, как и вызов самого коллбэка, зашиты внутри реализации $.each.
А вообще хорош лезть сходу в бутылку с jQuery. а) В 2к18 она нахуй не нужна б) Разберись с паттерном callback в принципе как он работает. Это абсолютно необходимо для любого асинхронного программирования. Этот паттерн не JS-specific, кстати.
>>1174579 Советы мудрые: 1) Вынеси всю работу с асинхронным говном (будь то аяксы или сокеты) в моддлвары. Можешь юзать redux-saga или redux-observable, рекомендую последнее. Оно поначалу посложнее, но rxjs дальше круче. 2) Сдизайнь так компоненты системы, чтобы у тебя была одна хуйня, которая принимает информацию из внешних источников, и остальная система, которая на неё реагирует, не зная, откуда она пришла. Типа ты можешь сделать аякс /users, или сокет может ебануть эвент типа 'updateUser', и у тебя есть отдельный адаптер к сокетам, и отдельный к аяксам, но у них одинаковый внешний АПИ, и остальная система в обоих случаях обновит юзера
В принципе, п. 2 норм реализуется через редьюсер и миддлвару. Экшны только синхронные, редьюсер чисто обновляет стор, реагируя на экшны, а задача миддлвар — ебаться с аяксами/сокетами, и в нужные моменты просто хуярить экшны UPDATE и т д.
>>1175178 Спасибо за отклик. 1) общение с сокетами идет через мидлвары по аналогии с апи, компоненты не знают, какой способ связи будет задействован при передаче экшона в диспатчер. Юзается стандартная хуйня вида { types: [request, callback], socket: async (socketClient) => { return await socketClient.doSomething() } }
2) Ты предлагаешь сделать обертку над сокетами и апиКлиентом? Или что?
В принципе, писал сейчас простыню и понял, что в уме раскидал, как должны лежать слушатели, эмиттеры и прочее говно, и потому стер все вопросы. Спасибо за ответ.
>>1175199 Ну да, мидлвары для сокетов и для апи разнесены. И type: success (или fail) диспатчится в стор только после прохождения запроса, на промисах.
Боги ЖСа, прошу вашего взора на простого смертного желающего прикоснуться к прекрасному: Хотел сделать по-простому, чтобы удалялась кнопка при клике на неё, но даже если кликать справа налево, он идёт строго по порядку. https://codepen.io/JavaHutt/pen/ELYrVo Пробовал назначать по классам и выбирать их, не реагирует
>>1175747 Во-первых, согласно html спецификации, id должен быть уникален для каждого элемента. Если ты хочешь выделить группу похожих друг на друга элементов, используй class.
Во-вторых, не навешивай js-события в инлайновый html, это плохо пахнет. Пусть в html будет разметка, а в js — интерактивность. Для этого есть метод addEventListener.
В-третьих, в современных браузерах поддерживается классный метод elem.remove() вместо ебучего elem.parentNode.removeChild(elem).
>>1175753 >>1175747 >>1175765 Спасибо, чуваки! Ожидал закидывания говном, а мне прилетело 3 бодрых ответа Хочу ещё кнопку одну добавить туда же типа "Добавить интерес", которая добавляет такие же баттоны, подскажите, в каком направлении гуглить?
Но это я не отговариваю учиться. Очень крутая, мощнейшая экосистема вокруг JS. Язык, который стоит учить. Дохуя денег платят, хорошие карьерные возможности, а потом сам поймёшь, куда дальше двигаться.
Кнопка «Добавить интерес» добавляет интерес в список интересов. Для каждого пункта есть рядом псевдо-ссылка, удаляющая его из списка.
Если инпут пустой, ничего не добавляй.
Задание «со звёздочкой» (основы вылидации): 1) Если чувак попытался нажать кнопку при пустом инпуте, сделай alert('Ты пидор') 2*) Если чувак попытался добавить интерес, который уже был добавлен ранее, сделай alert('Лечи склероз')
>>1175824 Я прагматик. А толковым разработчиком я давно уже стал.
Но, конечно, лучше, если человек сам дойдёт до понимания, что просто так, ad-hoc, ковыряться в dom - это не кошерно, и надо как-то это систематизировать.
>>1175827 Я не тот чел которому ты пишешь, но отвечу. Там задание то ведь обычное и изичное. Даже туду не назову. Там 50 строк кода будет, из которых 30 просто работа с ДОМ: создать элемент, добавить класс\айди, засунуть элемент. А остальные строки это проверки. Вот и все. Ради такого не надо подключать реакт, вью или ЖК.
>>1175948 >Там 50 строк кода будет Да, и все их придётся переписать при небольших изменениях в ТЗ. А потом ещё раз. И ещё.
>Но, конечно, лучше, если человек сам дойдёт до понимания, что просто так, ad-hoc, ковыряться в dom - это не кошерно, и надо как-то это систематизировать.
>>1175772 -изучающий ЖС анон репортинг ин https://codepen.io/JavaHutt/pen/zjYNvy Вобщем копаясь в стаковерфлоу, пытаюсь что-то делать по своей задачке, но всё не гладко Вроде бы новым баттонам присваиваю класс removable, но удаление по клику не срабатывает как с предыдущими кнопками. Обработчика событий в инспекторе на новые кнопки вообще нет.. Алсо есть какой-то способ новые элементы помещать вначале блока, а не в конце?
>>1176123 Тебе же выше писали, что инлайново вешать функции — не круто. Сделай как было раньше, а при создании новой кнопки вешай на нее eventListener отдельно. между кнопками которые добавлялись скриптом не было отступа потому что они расположены инлайново и между ними нет текста, а в первых трёх он есть, это переход на новую строку, вот, если хочешь, чтобы был отступ – сразу добавляй текст ноду
Блять, что за говно ваш карриинг, почему сука функции создают функции, которые создают функции, которые создают функции. Идите нахуй, говно ебаное. Нахуй это надо, когда можно просто взять 3 ебаеных аргумента в скобочки и не ебать мозги с этим говном ебучим.
>>1176197 Передавать сука! функцию, как аргумент, ебаные мудоебы, твари недотраханные, рендер сука, ахаххах, просто блять жирная мать шлюха не влезла в пропсы, вот они и высрали это говно
>>1176203 Да я заебался, я каждый раз пишу ебучее говно = говно=>моча=>тупое говно тупого говна И нихуя не понимаю как это работает. Ебучий контринтуитивный паттерн, нахуй он вообще нужен. Сколько блять месяцев еще надо писать это хуеговно, чтобы привыкнуть
>>1176182 у меня там при добавлении новых кнопок им приписывался класс removable, но почему-то это не считалось элементом массива removableButtons Я не понимаю как это работает, поэтому "крутизной" пришлось пожертвовать и добавить инлайн А вот вопрос про инсерт всё ещё в силе
>>1176207 Сделай это на jQuery. Гораздо проще будет. А потом - попробуй сделать без, если захочется.
Сейчас набегут мамкины прогрессисты и расскажут, что jQuery не нужно в 2018-м. Не обращай на них внимания.
Алсо, я не спроста тут несколько раз упомянул MVC. DOM должен быть вторичен - это всего лишь отображение.
Т.е. лучше добавлять объект "интерес" в массив интересов (или удалять из него), а потом рендерить это в DOM. Руками или с помощью шаблонизатора (JsRender). Тебе же не сами по себе эти кнопки нужны, правда?
>>1176303 >>1176311 Спасибо вам, но я реально новый в js и программирование вцелом, хотелось бы разобраться в нативе для начала. Кому интересно, переписал в очередной раз всё заново, даже вперёд смог поместить https://codepen.io/JavaHutt/pen/ZoEVLz Единственная проблема что он не отрабатывает условие, при котором я ввожу пустое значение в промпт
1) addInterestButton — вот так к DOM элементам не надо обращаться. Используй document.getElementById или document.querySelector
2) onclick='this.remove()' Давай теперь перепишем всё без инлайновых onclick. Только addEventListener.
3) var newDiv = document.createElement("button") это же не <div>, это <button> :3. Почему не var newButton = ...?
3) Когда справишься с этим, я бы всё же рекомендовал вернуться к оригинальной вёрстке задания. Там и html инпут был, и псевдоссылка для удаления. В общем, поинтереснее
>>1176361 Да ну, что плохого быть мартышкой с трехзначной зп. А вообще в реакт доках есть инфа как его написать самому) если серьезно, то я считаю, что нет разницы учить ли сверху вниз или снизу вверх,по эффективности по крайней мере. Но мне было интереснее начать с реакта. Тк он проще
>>1176303 Ты говоришь про state management. Это пока вторично, следующий этап. Надо для начала разобраться, какие бывают элементы, какие события и узнать несколько базовых DOM-методов.
Для простых сайтов/страниц стейт менеджмент вообще не нужен, как и сложные фреймворки с сотнями зависимостей. Можно очень элегантно на нативном JS делать простые вещи.
Когда будет уже какое-то сложное приложение с логикой, тогда можно будет и о state management, и о фреймворках задуматься.
>>1176371 Есть разница. Мартышка, которая привыкла учиться, пробегаясь по вершкам, не докапываясь до сути, может и достигнет трёхзначной зп, но с большой вероятностью так и остановится на средненьком уровне. В начале первой сотни, если тебе так нравится всё мерить зп.
Люди, предпочитающие фундаментальный подход к обучению, постараются разбираться в сути того, что происходит, и делать вещи, понимая, как они работают. Таким людям будут доверять строить реально сложные системы, принимать решения. Это уже путь ко второй-третей сотне.
Бля, я таки дал себе труд прочесть то, что ты там написал. Тебе сначала надо получить строку из prompt, проверить её - if (newString) {...} и, если она есть, то создавать text node.
А всё потому, что переменные надо нормально назвать, лол. Новый text node - значит newNode или newTextNode, а newContent я принял за строку чисто на автомате. И эта блядская хипстерская тёмная тема ещё.
>Давай теперь перепишем всё без инлайновых onclick. Только addEventListener. Сорри, не укладывается в голове как это сделать. Не первые сутки уже с этой фигнёй работаю, как только не подлазил, мозги кипят реально уже :\ И ты тот самый квестгивер, я тебе писал на фейкопочту, а ты не ответил
>>1176392 >не укладывается в голове как это сделать. Почитай про то, как работают события в браузере.
Если коротко - надо назначить всего 1 обработчик на контейнер, в котором у тебя будут создаваться твои кнопки. Или вообще на документ. А в обработчике проверять, откуда событие.
Так можно, в принципе. Всё работает. Но, зачем каждой кнопке свой новый обработчик, если можно обойтись одним общим? Когда выспешся - вот это прочти ещё раз: >>1176405
>>1176428 > зачем каждой кнопке свой новый обработчик, если можно обойтись одним общим
Ну это честно уже вкусовщина. В конкретной ситуации правда похуй. В реальном проекте можно так, можно эдак, по ситуации смотришь на структуру компонентов. Ящитаю на данном этапе решение анона вполне принимается.
Ответил. Я нихуя не пойму, доставлено, нет, там загружается бесконечно. Ебучий РКН, не проссышь, то ли просто тормозит, то ли очередной гугловский сервак заблочили.
Сап, проверьте, пжлста, у вас behance открывается? У меня грузит главную, но не прогружает скрипт с cdn a5.behance.net со вчерашнего вечера. Провайдер МТС. Айпишника cdm в реестре нет. Отпишитесь плиз.
>>1176379 Не думаю, что будет, что-то плохое, если отучиться фундаментально на другом уровне абстракции и потом перейти на более низкий. С реакта и легкого ес6 сахара на жс и работу браузера. Или с си на асемблер. Или с арифметики к матанализу.
Почему бы не учить первее, то что учится проще и быстрее, а потом наиболее сложные не самые практичные вещи.
>>1176379 Никто не изучает ничего начиная с фундаментальных вещей. Ты не изучаешь сначала фонетику, чтобы начать говорить. Физики не начинали изучать физику с изучения ее законов. Они начинали с наблюдения естественных процессов в быту. Ты не начинаешь изучать электронику с проектирования микросхем, ты сначала знакомишься с электроприборами.
>>1175984 >>1175795 Вообще похуй что. Хоть даже тудулист ебашь, если ты ньюфаг и не работал над серьезными проектами. Тебе важно показать что ты а) знаешь современный стэк реакта б) готов и любишь разбираться со всякими костылями, потому что в реакте их навалом. Вот тебе списочек: - react-router - react-redux / mobx - react-redux-router - redux-thunk/redux-saga/redux-observable - redux-actions/redux-batched-actions - reselect - normalizr - lodash/lodash-fp/ramda/ImmutableJS, - fetch/isomorphic-fetch/axios - flow/typescript
>>1176939 нет там где я поставил слэш - значит можно выбрать одно из, т.е. это либы для одного и того же что тебе брать - дело твое, но ты должен хотя бы поверхностно представлять концепты и зачем кто то вообще всю эту йобу написал
Это типа основы? - axios - redux-saga - react-router
Вот эти 3 штуки чисто, чтобы редаксокод был красивым и оптимизированным? - reselect - normalizr - ImmutableJS - redux-actions вкусовщина или рили удобная штука?
остальное я погуглил и так понял, что очень опционально? - react-redux-router насколько эта хуйня важна, если уже есть обычный роутер? - lodash/ramda отсюда обычные не фпзадроты юзают функций 5-10 же?
>>1176973 >Это типа основы? Типа да >Вот эти 3 штуки чисто, чтобы редаксокод был красивым и оптимизированным? Красивым врядли, но оптимизированным. >redux-actions вкусовщина или рили удобная штука? Оба варианта верны. Я бы рекомендовал сперва с обычными экшнами разобраться. >react-redux-router насколько эта хуйня важна, если уже есть обычный роутер? Важна если ты хочешь что бы переходы тоже отображались в твоем сторе. Что бы можно было просто написать store.dispatch(push('/foo')) >lodash/ramda отсюда обычные не фпзадроты юзают функций 5-10 же Зависит от скила
>>1176973 Я конечно ФП-задрот, но бери рамду, она реально лучше. Изначальный порог вхождения низкий, постепенно начнёшь юзать больше.
>react-router Ну это очевидно для SPA. Дам подсказку: SPA — это перехайповавшее дерьмо. В 99% случаев оно нахуй не надо, а требует значимо больше времени и сил.
Но если действительно реалии бизнеса требуют SPA (почти точно нет), то тогда надо разбираться, хуле. Но это далеко не единственная проблема у спа-неудачников.
>redux-thunk/redux-saga/redux-observable вот из этих трёх я бы рекомендовал миновать нахуй redux-saga. Thunk простой и минималистичный, если его не хватает — тогда пора заботать Observable и начать юзать их. Не пожалеешь, RxJS — мощь.
Ботать можно в таком порядке: React React чо-нибудь посложнее React ещё чо-нибудь посложнее redux халяву redux посложнее redux-thunk
Этого хватит для большинства несложных веб-приложений. На остальное пока забей, напиши чо-нибудь реальное на этом стеке.
>>1176993 спасибо, я просто на тему блокировок решил пожаловаться, так-то я нашел, хотя хз как эти книги юзать, доки + практика обычно лучше заходили, а щее лучше видосы
>>1176995 можешь объяснить >переходы тоже отображались в твоем сторе Это ты типа адресную строку в сторе можно хранить дублируя? и вместо хистори.пуш писать диспатч.пуш? в чем смысл?
>>1177002 я наоборот не понял ничего в танках, в сагах конечно тоже генераторы какие-то, но их бойлерплейт использовать просто и структуру выдумывать не надо, если с ними работаешь.
>>1177075 а оно правда работает? Такое норм переиспользовать? а то я не шарю в ес1488
>>1177262 Спасибо. Ты уже докуда дочитал? Интересно, что в этой книге есть поверх доков реакта, посмотрю мб главу про скейлинг сегодня.
Ребят, подскажите как верстать на реакте, какую структуру файлов выбирать, подскажите кто-нибудь ваш набор либ под сss. Я пока только класснэймс знаю и стайлд-компонентс, но второе лид не разрешил юзать на проекте))
нужны ли либы типа реакт-моушн? почему их вообще юзают люди вместо обычных сss анимаций?
>>1177297 Ну, учитывая, что её выложили 2 дня назад, а скачал я её вчера вечером, то пока только пролистал и прочёл некоторые понравившиеся места. Написано хорошим языком, читается легко. Много объяснений типа "зачем" и "почему", а не просто "как".
Кстати, в своё время я её хотел купить (пока она в MEAP была). У Маннинга бывают регулярно 50% скидки. Но, прередумал, почему-то. Я тогда увлёкся Vue, т.к. не был готов погрузиться в глубину современного js тулинга - бабели, вебпаки и прочие радости (у меня java ee backend).
>>1177297 >какую структуру файлов выбирать При наличии библиотек импорта-экспорта — любую выбирай. А без них — создаётся файл «items.jsx» и сразу же рядом с ним каталог «./items».
>>1177339 В смысле? JSX не используешь? ES2015+ тоже? Flow?
Меня даже не столько сам по себе тулинг смущал, сколько то, что вместо привычной одной jsp страницы + includes из общего каталога, надо городить для каждой страницы целый огород. Я не был морально к этому готов тогда. Ну и jsp само перекомпилируется при изменениях, а тут - надо что-то мутить, и т.д. Но, на самом деле - всё это решаемо.
>JSX не используешь? Использую обыкновенный JSX Transformer, >ES2015+ тоже? Остановился на функции «createReactClass()» чтобы создавать классы с миксинами, >Flow? Может и использую, но не догадываюсь что это такое...
>одной jsp страницы + includes из общего каталога, надо городить для каждой страницы целый огород Как раз библиотеки для импорта-экспорта позволяют всё сложить в один каталог. Но мне лично — не нужно. Я не на том уровне.
>>1177346 >Flow? >Может и использую, но не догадываюсь что это такое...
https://flow.org/ Это приблуда, делающая статическую типизацию в JS. Что-то вроде Typescript, но для JS. При транспиляции типы проверяются (и в IDE тоже видно подсказки), а потом выбрасываются из кода, и остаётся чистый JS.
Я им тоже пока не пользуюсь, но планирую начать. Сейчас использую JS Doc (с обычным ES5) - в IDEA видны подсказки о типах. Удобно, но, это очень минималистичный вариант. Например, нельзя нормально задать тип свойства-функции, только просто function. И неудобно всё это писать в куче мелких комментов на каждую переменную, код засирается.
Статическая типизация - must have для большого проекта. Особенно - делаемого малыми силами. И не только из-за контроля ошибок. IDE показывает использование, облегчает рефакторинг и т.д. Короче - заменяет пару дополнительных макак.
> www.r-5.org/books/computers/all-js/ Да, видел, но не вникал. Надо посмотреть.
Котаны, подскажите пожалуйста, я дерево. Я изучаю джава скрипт, осилил учебник Кантора. Задрачиваю react. Собрал свою страничку.
Но я нихуя не могу написать сам, бладж. Как только нужно написать какую нибудь вещь самостоятельно, какой нибудь сложный компонент с логикой, какое нибудь не обычное меню, допустим все - пиздос, я затупливаю насмерть. Что почитать мне? JS шаблоны ?
>>1177360 Да что тут непонятного. Это нормальная ситуация для начинающего, в любом деле. Умом человек понимает, а на уровне рефлексов - ещё не усвоил.
Поэтому и нужно сначала просто копировать других. Т.е. переписывать чужой код, потом менять его, потом писать свой. И это требует времени. Потом будет проще, по мере накопления опыта.
>>1177208 >Это ты типа адресную строку в сторе можно хранить дублируя? и вместо хистори.пуш писать диспатч.пуш? в чем смысл? Смотри. Идеалогия редукса- единое, детерменированное хранилище состояния твоего объекта. В любой момент времени работы приложения ты можешь заглянуть в в стор и понять, что делалось, как получилось это состояние и т.д. Благодаря иммутабельности ты можешь "путешевствовать во времени", ведь тебе надо просто откатить свой стор на n экшнов назад. И вот вдруг у тебя есть роутер. Он живет своей жизнью, навигация по аппу никак не отражается в хранилище. Ты больше не можешь открыть свой стор и получить 100% инфу о приложении. Ты не можешь точно понять, что пошло не так если оно вдруг пошло. В этом и суть. Ну а если на практике: во-первых ты не дублируешь хистори. Это хистори теперь получает инфу из редакса. во-вторых тестирование. Ты можешь легко написать тест на переход, просто сделав диспатч в фейковый стор и сравнив состояние. Т.е. твоя бизнес логика подчиняется общим правилам, а не живет где то сама >я наоборот не понял ничего в танках, в сагах конечно тоже генераторы какие-то Все просто на самом деле. Thunk - мидлваря которая чекает тип экшна. Если видит что пришла функция - вызовет эту функцию и передаст ниже результат работы функции. Пихаем туда промис и получаем свои асинхронные действия. Saga - в корне иной концепт. Это такой большой брат, который слушает экшны. Каждая сага - это генератор, тоесть она висит в подвешенном состоянии и ждет. Как только поступает экшн, который ждет эта сага - она запускается и отрабатывает. Что она будет делать - вообще что угодно. Это один из минусов саги - она слишком мощная, она может пустить что угодно куда угодно, например записать данные в стор взяв их из того же стора (считается антипаттерном), может запустить в бэкграунде любую операцию, или кучу операци. Может задиспатчить любые экшны с любыми данными. Считай это отдельный слой с бизнес-логикой.
>>1177438 все там правильно написано метод идет по массиву и для каждого элемента вызывает колбек. В колбек поступает результат вызова этой же функции для предыдущего элемента, а по заврешению то что сделала функция становится предыдущим результатом для следующего и так до конца. Например можно трансформировать массив в объект arr.reduce((prev, key) => ( ...prev, [key]: 'some value' ), {}); или сложить все числа в массиве arr.reduce((sum, next) => sum + next, 0)
>>1177398 Спасибо бро. Вообщем не стесняться ковырять чужой код. А то я упорот сам перерешал большинство задач с учебника кантора. Мой первый слайдер картинок - это было что то монструозное, с кучей обработчиков событий и отменой обработчиков событий пока идёт анимация
>>1177449 на codewars себя не пробовал? решаешь задачу, когда решишь - смотришь топ лучших решений этой задачи правда иногда унизительно смотреть на чужое решение в пару строк кода, а потом на свой абзац говноперфоманса. Зато многие трюки для себя открываешь.
>>1177467 Попробую. Знания какие то есть по js , а практики не хватает соаювершенно. Вот разобрался я как допустим итераторы работают. А хули с этого толку? ) Или вот - понятны мне промисы, а я на колбеках ниче путного не напишу. Короче попиздую на кодеварс
При этом сервер отвечает не просто http 200, а 206 partial content и заполняет хедеры типа Content-Range, заясняя за количество байт. При этом если двинуть ползунок воспроизведения, то браузер отправляет гет, заполняя реквест хедер Range:bytes=4653056- поясняя с какого байта давать контент.
2) Как это реализовано на стороне сервера? Просто метод в контроллере, который хавает передаваемый Request и отдает реактивный стрим байтов под знаменем http 206, а браузер уже сам разбирается куда эти байты пихать?
3) Откуда сервер узнает размер буфера после заполнения которого надо остановить передачу байтов? Я открываю видео, передается request bytes 0- и все. При этом весь файл не скачивается.
>>1177208 все работает, на проде. но есть сомнения, может я что то не так делаю? сомнения появились почитав про эти саги и танки - ну не зря же их люди запилили!?
>>1177503 upd. но почитав про саги и танки не уловил какого то сакрального смысла в их использовании, это же ведь просто сахар? или я не прав? короче сомнения
>>1177404 Спасибо теле большое, анон, вот я никогда не заглядывал в стор, чтобы понять, что делалось, как путешествовать во времени в редаксе то вообще, я ни в каком гайде не видел кнопку реду анду? И как иммутабельность этому помогает, редакс что сохраняет ссылки на все старые объекты в памяти? Это же дохуя ресурсов тратится.
>>1177581 Поставь redux-devtools, там есть слайдери много чего еще > редакс что сохраняет ссылки на все старые объекты в памяти В этом суть иммутабильности. Дохуя ресурсов не тратится потому что эти сторы тащем то довольно маленькие объекты. Ты же не милион записей копируешь.
Пиздец я сегодня напердолился. Вкратце, суть: в зависимости от того, как назначаешь свойство объекту, свойство может измениться У ВСЕХ объектов в массиве на заданное.
Пытался повторить, но че-то не получилось, в консоли браузера все работает как надо. Хотя я не копировал данные идентично тем, с которыми работал, потому что заебался это дебажить. Код упростил по-максимуму. Собственно, вот он: [code] const position = { x: 0.123, y: -0.123, z: 0.321 }
const updatedImage = { id: image.id, url: image.url, title: image.title, cameraPosition: { x: pos.x, y: pos.y, z: pos.z }, // - this works wtf: pos, // - this will be updated for ALL images that has this property, HOW IS THAT POSSIBLE? wtfspread: { ...pos }, // - this works };
images[index] = updatedImage [/code]
Че за хуйня, двач? Это бабелепроблемы или я неправильно пользуюсь жабаскриптом? Ладно бы там ошибку какую кидал, но это же просто какое-то безумие, я меняю только один объект (пробовал и object.assign'ом, чтобы не мутировать - та же хуйня), какого хуя он трогает остальные?
Можно ли как-то на маке дать возможность ноде запускать сервер на <1000 портах (в частности, конечно, 80 и 443 интересуют) без рута/sudo каждый раз? Аналога линуксового libcap2 для posix 1003.13, с которым, вроде как, можно настроить такие отдельные привилегии, я что-то не нашёл.
>>1177582 Ну а если в сторе ссылка уже пропала, объект не нужен, его же сборщик мусора собрать должен? Неужели редакс внутри как-то ПРЯМ ВСЁ это оставляет?
Почему в обычном апи редакса нет реду-анду, те иммутабельность в редаксе дает возможность делать свои анду-реду, но не дает какого-то бойлерплейта?
Накатал тут скрипт для вытягивания данных со страниц. С помощью какой либы это тестировать? Буду добавлять другие страницы - не хочу сломать что-то в старых. На входе у меня мой скрипт и сохраненные html-ки. В инфраструктуре js не разбираюсь - потому спрашиваю.
>>1177670 >те иммутабельность в редаксе дает возможность делать свои анду-реду, но не дает какого-то бойлерплейта? Это делается через композицию редьюсеров. Что вполне нормально - юникс вей, вот это вот всё. Зачем раздувать? https://github.com/omnidan/redux-undo
кстати недавно сделал такую хуйню и никто не умер: унаследовал компонент переопределив его методы с вызовом super(); незнаю как для вас, а для меня это открыло js как язык на котором оказывается можно писать больше чем туду)
>>1178071 Зачем ты это вообще спрашиваешь? Возми и захуячь картинку с отрицательными координатами, и увидишь что будет. Это делается за минуты. Зачем ждать часами или днями пока тебе тут кто-то ответит?
Не заходил в интернеты дохуя месяцев. И вот решил дай думаю че хорошего есть. Наткнулся на ангуляр2, установил. Аноны я влюбился, реально сердечко заколотилось. Ахуел как майкрософты из говна(js) слепили конфетку(ts) и гугловцы из этой конфетки захуярили пряночный домик(angular). Прямо сразу как увидел, хуец привстал. Такой стояк только на джабку до этого был. Короче дальше рассказываю, покапался немного в ангуляре, наткнулся на проблему что так как все динамическое, это счастье нихуя не индексируется. Ну ок, загуглил юниверсал, что сервер скармливал статику. Таким образом на node.js вышел. Ну думаю хули нет, стоит того, тоже посмотрю что да как. Вещь перспективная, к тому же дохуя плюсов что один язык, кроссплотформенность. Короче и правда, вдруг js - язык будущего, а я как даун с пыхом работаю. Ну ок значит, захожу на ноджс первым делов вижу var module = require("module"); Немножко подташнило, но сдержался, дальше вроде как полегче и привык получше. И не такое на пыхе видал в свое время. Ну вот балуюсь с нодом и тут вспоминаю что я ебанное нубло с чистым жсом и что дальше жквери мои руки не доходили. Ок думаю, недело быть фулл js девелопером и не знать что там под копотом происходит. Решил отложить мою красавицу ангуляр и как говориться опуститься на дно. Скачал книжку https://www.amazon.com/Secrets-JavaScript-Ninja-John-Resig/dp/1617292850 и читаю.
Как же мне хуево аноны, я прямо сразу вспомнил почему я это говно дальше пятиметровой палкой в виде jquerry не трогал. Вот почему как читаешь книжку про жаву это как изучать тело молодой красавицы, порой сложно но сука приятно и когда изучил на душе хорошо и красиво. А когда блять изучаешь ебанный джаваскрипт это как изучать тело франкинштейна, никакой элегантности блять, зато куча АХУЕННЫЙ ФИШЕК СВОЙСТВЕННЫХ ЯЗЫКУ(ебанутой хуйни). На 1 блять фичу 10 кастылей которые блять есть потому что а хули бы нет.
Короче 1/4 книги прошел, вроде как и понятно что к чему, но никакого чувства прекрасного на душе как при изучении жабочки и близко нет. До этого я в этом болоте на мели плавал, а щас погружаюсь на дно. Может конечно со временем привыкну, но хз. Но пока запашек то вокруг меня стоит злавотненький и дышать тяжеловато...
>>1167958 (OP) Посоветуйте, как правильно вкатываться в веб после C++. Что учить сначала, что потом? Какие проекты писать? Где учиться бест практисам?
Сейчас я изучаю голый JS. Сам язык довольно простой после C++. Как выучить фреймворки и потратить несколько месяцев до поиска работы наиболее эффективно?
>>1178331 ну если с чистым джесом разобрался можешь фреймворк себе подбирать. https://medium.com/unicorn-supplies/angular-vs-react-vs-vue-a-2017-comparison-c5c52d620176 Олсо, у тебя твой пробный проект без перезагрузки страницы или с? Если с перезагрузкой, то смотри Ajax сначала. А так хз что еще, просто идешь в гугл и смотришь как надо и как у тебя получилось. Тут велосипед изобретать не надо, это все довольно поточно.
Подскажите иду ли я по правильному пути, курю хтмлакадеми базовый интенсив и параллельно учу инфу с learn.javascript.ru, но мне кажется, что я где-то проебываюсь, че еще читать/смотреть, чтобы стать ахуенным
>>1178303 У меня примерно такие же чувства были, когда я изучал JS. Язык грязный и не элегантный, но потом привык, хотя все равно не долюбливаю его. Ну это как с запохом говна, сперва сильно воняет, потом через какое-то время привыкаешь, но говно остается говном.
Допустим есть вебсайт, который отдает инфу по ссылке вида https://site.com/name=pisya1. Как мне считать раз в день допустим три имени сразу pisya1, pisya2, pisya3 и получить хтмл этих сраничек? Как вообще приступить к тако проблеме? Жс тут поможет?
>>1178526 Нет, ничего такого, это по игре проверять несколько профилей. На самом деле я когда-то доходил до абстрактных классов и прочего, даже сам писал что-то, но это было давно.
>>1178565 Мне нет необходимости учить язык или его нюансы для решения одной конкретной практической задачи. Достаточно сказать название функций или как гуглить подобное.
>>1178571 Мне не нужно парсить хтмл, мне нужно его получить.
[] + [] → "" // Empty string? These are arrays! [] + {} → [object object] {} + [] → 0 // Why isn't the operation commutative??? {} + {} → NaN // ???
16 == [16] → true // Array converted into string, then into number 16 == [1,6] → false // But what is array converted into? "1,6" == [1,6] → true
var arr = []; arr.length → "0" arr[3] → "undefined" // No array bounds exception??? arr[3] = "hi"; arr.length → "4" // 4??? Only one element has been added! arr["3"] → "hi" // Apparently "3" is coerced into a number
delete(arr[3]); arr.length → "4" // 4??? There are no elements in the array! arr[3] → "undefined" // 7 lines above, length was "0"!
var i = 1; i = i + ""; // Oops! i + 1 → "11" i - 1 → 0
Это не проблема языка, а проблема точности чисел с плавающей точкой. Javascript по дефолту использует для всех чисел тип double (8 byte) что в принципе не плохо, так как если бы они решили сделать float (4 byte) дефолтным, то было бы еще хуже. Вот на пике пример с double в C++, там точно так же. А остальные твои примеры, да - это пидерастия языка.
>>1178695 Забавно наблюдать, за рассуждениями человека, не знающем о двойной точности, и при этом возмущающимся о проверке выхода за границы массива. В динамическом, мать его, языке.
Откуда столько даунов. Откуда они просто лезут вот.
и еще надо спросить... есть вот понятие синхронизирование данных. это со стороны бэкэнда решается (вебсокеты)? или со стороны фронтэнда тоже можно решить? взять двачи. тут автообновление есть. это интервал между реквестами? и реквест при нажатии "обновить тред"? я пользуюсь ангуляром, как с этим дела обстоят в реакте? >>1178898 то есть вы тут как хобби это воспринимаете? но работающие тоже есть наверное?
>>1167958 (OP) Пишу Todo List. Какой модный фреймворк и паттерн можно использовать для такого веб-приложения? И как это запилить? Написал проект на чистом JS, теперь хочу сделать что-то продакшн уровня.
>>1178901 > работающие тоже есть наверное Мы тоже как хобби это воспринимаем. Иначе программировать не выйдет. Это тебе не мешки ворочать. Тут надо быть увлеченным.
Как в ебучем Visual Studio Code поменять цвет текста на белый? Меня устраивает профиль Dark+, функции желтые, классы зеленые и тд., но все остальное голубого цвета, галаза режет. Я хочу именно этот текст сделать белым.
>>1178918 >хуяк-хуяк и в продакшн Это было не о работе. Тебе рассказать как были написаны первые версии всего самого популярного? И как они писались до тех пор, пока не стали популярными?
>>1178924 и че? введи конкретную роль + фреймворк + регион + стаж сколько останется? 10? 3? тысячи просмотров резюме... бесполезных. работу давай а не скриншот.
раз уж анон поднял тему работы, у меня 2 вопроса 1) какой js стак самый популярный(=больше всего вакансий, проще найти работу)? Я так понимаю это MEAN? 2) какой самый перспективный. А то я собрался express/angular2 учить, а тут говорят что он неоч.
насколько перспективны поиски работы за границей? ну чтоб не сталкиваться с русскими пидорасами, у которых работа есть, но они её тебе не дадут, потому что не для тебя их роза цвела...
>>1178939 ты ебанутая сельдь, работающая в hh? никто не платит 90 тысяч. это замануха. в москве 60, не в москве 30. вот так дела и обстоят. я работал, я знаю. меня бесят такие вот энтузиасты-активисты-пионеры-поцреоты которые говорят что все заебись, хотя сами нихуя не пробовали даже делать и сидят на какой-нибудь халяве!
>>1167958 (OP) использую js для написания игр на phaser, задумываюсь об изучении backend разработке на js и о поиске работы проггером. но смотрю вакансии в своем городе - на чистого бэкенд js проггера их почти нет, только php. в основном frontend и fullstack. при этом frontend как область меня совсем не притягивает. что посоветуете? стоит ли обращать на этот факт внимание или забить и в ус не дуть и изучать nodejs? насколько я понимаю, популярность php сильно падает и серверную часть переписывают на node.
>>1179008 У меня аналогичный вопрос Бро. Стою на перепутье. Вообще знания у меня уровня html, css, js, jquery, bootstrap, google vizualisation и т.п. планировал изучить питон с Джанго, т.к. веб привлекает, но все вакансии в моем мухосранске - Красноярске сводятся к знаниям 1с битрикс и php. Не хотелось бы к этому прикасаться, но видимо придется. И не думаю, что php умрет. Если умрет, то явно не скоро
>>1179008 >>1179030 Как опытный веб-программист скажу вам, что пыха сейчас наоборот только набирает популярность, в отличие от жс. Так что вам, господа, стоит осваивать такие технологии как PHP, WIX, Wordpress, Joomla.
>>1179033 > пыха сейчас наоборот только набирает популярность, в отличие от жс. Чем это можно объяснить. Алсо можешь рассказать какого плана работы делаются на пыхе? Я так понимаю крупные объекты на пыхе не делают?
>>1179033 >пыха сейчас наоборот только набирает популярность
Если это действительно так, то единственная причина - то, что сайты (представительские) понадобились тем, кому они раньше не были нужны, т.е. совсем уж мелким конторам. Ну и, возможно, больше мелких торговых контор стали хотеть торговать через интернет. Естественно, они могут себе позволить только пыху.
Господа, друзья, товарщи! Помогите мне разобраться с дочерными и родительскими элементами в ДОМе, это какое-то проклятие, я нихуя не понимаю, где нормально почитать про это можно? У кантора нихуя не понятно, как будто гугл перевод спеки читаю. Ну вот взялся я писать валидацию формы. http://plnkr.co/edit/eqwfZwFGXZBGMljbCaUy?p=preview Написал, показал корешу фронтендеру, он говорит ты малацца, но это хуита слишком частная, перепиши всё так, чтобы ты свою валидацию мог применить на любой форме, скелет.
"Ща попробую описать. 1. Добавляшь элементам формы атрибуты типа rule-required or rule-email 2. Вызываешь новую версию функции валидэйт и передаешь ей в качестве аргумента идентификатор формы. 3. Функция валидэйт получает по индентификатору форму, затем ищет в ней все дочерние инпуты и пробегается по ним в цикле. Для каждого инпута проверяет имеет ли он атрибут element.hasAttribute(attName); Если атрибут есть, то валидируем значение инпута в соответствии с атрибутом, если нет, проверяем на наличие еще какого-нибудь атрибута и так пока не проверим все атрибуты для всех инпутов. Если ты это сделаешь, то сможешь вынести функцию validateForm в отдельный файл и подключать ее к любым формам. В формах просто будешь добавлять атрибуты к полям, которые нужно валидировать. ПРОФИТ и не надо прописывать логику каждый раз"
А я блять нихуя не понимаю. Я понимаю что моя валидация тупой дроч достукиваться к каждому инпуту и т.д. Но как сделать это нормально я хз. Помогите ссылкой хоть, где про это почитать можно еще, желательно с примерами и разъяснениями. Может я что-то где-то недочитал по теории раньше? Что мне блять делать?
>>1179064 Не так. И впредь, намотай себе на ус, что вводить в заблуждение это не достойно и если твоя мать шлюха, а отец педофил, то в этом никто кроме тебя не виноват.
>>1179069 >https://pastebin.com/TA70reWT потому что переменная i объявлена как var то есть не имеет блочной области видимости. А следовательно, на момент вызова функции отложенной в эвентлупе, она будет равна 10.
>>1179073 > >https://pastebin.com/TA70reWT > потому что переменная i объявлена как var то есть не имеет блочной области видимости. А следовательно, на момент вызова функции отложенной в эвентлупе, она будет равна 10. А если вместо var выставить let, то что выведет? мимо
>>1179065 Ну так у тебя эе описан алгоритм, вот его и реализуй. В твоем коде ты каждый инпут берешь по его id отдельно и потом каждый по отдельности чекаешь. А тебе надо переписать так, чтобы ты брал инпуты вообще все, не по идентификатору, а например по тегу,а еще лучше по классу там своему в завиимости от типа проверки. Проходил по всем элементам в цикле и проводил свою валидацию. Что тебе не ясно. Как работают css-селекторы? Или как циклы?
>>1179065 нахуй тебе вообще на фронтэнде валидация? 2 раза писать один и тот же код, посылай это на бекенд, и чтобы через джесон возвращал прошла ли валидация. Может ты в курсе, но на всякий случай скажу, что ты НЕ можешь делать валидацию только на фронтэнде, тебе все тоже самое обязательно надо делать на бекенде. Если по твоему коду, то - убери нахуй это спагетти из ифов и элсов - для кажого поля сделай свою функцию с параметром(string) который хочешь валидировать, а не из глобального пространства брать. function checkField(value){ // }
>>1179083 >нахуй тебе вообще на фронтэнде валидация? 2 раза писать один и тот же код, посылай это на бекенд Ахуенно наверное на каждый инпут хуярить хапрос на сервер, чтобы динамически подсветить инпут при блуре. Уволил бы тебя нахуй сразу.
Валидация на клиенте еще как нужна. А на бэке валидируют всю форму целиком сразу и лишь один раз.
>>1179079 да вроде ясно как работают цсс селекторы, не ясно как это всё завернуть в циклы со всеми этими апенд чайлдами и прочим. Мне бы на примере посмотреть или чтобы добрый анон показал
>>1179085 >Ахуенно наверное Мне ахуенно, часто у тебя юзеры будут логин/пароль вводить? Ты наверно еще за голову хватаешься когда о какой-нибудь хуйне типо динамического поиске слышишь где запрос на каждую букву происходит.
>>1179093 >>1179083 Не слушайте дауна. Очевидно ты ничего более лендосика под ключ на вордпресе в своей жизни не делал. Валидация должна быть на фронтенде и на бекенде. На бекенде даже ты понял зачем. На проектах с посещаемостью больше 100 человек дергать сервер на каждый запрос это очень хуево. Нагрузка на сервер растет в геометрической прогрессии. Любой васян сможет заддосить твой сервер через такую форму. И это все лечится просто микроскопическими по своей сути методами, вызовом пары функций на клиенте.
>>1179141 >через такую форму Ну давай поясняй умник чем ддос на /api с проверкой формы отличается от любого ддоса на другой адрес, например отгрузки данных.
>>1179141 Ты дебил. Зачем ты говоришь в чем некомпетентен? Единственное, в чём ты прав - это в том, что нужно добавить в поля соответствующие свойства (которые вообще недавно только появились в браузерах). Ну а если в браузере их нет? А? А если юзер ручками пульнёт запрос? А если не ручками, а автоматизировав? И если их будет несколько тысяч?
>>1179083 Ты тоже дебил. Предлагаешь возвращать от сервера проверку на валидацию в жсоне. Завтра на работе покажу, поржём всем офисом, так сказать.
>>1179186 одни свчешные выблядки, которые нихуя не могут аргументировать свои высеры. Какие-то свойства в браузерах у него, жсон ему не нравится. Чем тебе ответ от сервера возвращать? Штмлем блять?
>>1179190 >Чем тебе ответ от сервера возвращать? JSON - это всего то форматнутая инфа, ровно также ты можешь вернуть её в чём угодно, хоть голой, хоть в богомерзком XML, хоть в JSON, зависит только от задачи которую ты хочешь решить. В случае JSON - удобно получать табличку или список, или какой-нибудь офис лайк документ который ты быстренько на страничке при помощи JS раскидаешь (хотя в 9000 раз проще это сделать в бэке и не ебаться с JS). Но если смотреть в общем и целом, JSON - это ебаная технология для безмозглых дауничей которые не способны вместить что-то большее, выучили себе JSON и ебашат им всё. Сайты на JSON, передачу инфы, таблички, карты, ссылки, массивы, документы, БАЗЫ ДАННЫХ. Такое ощущение что вы на этот JSON дрочите по ночам.
>>1179195 >JSON - это всего то форматнутая инфа Спс кеп. Я где-то утвержал обратное? Просто родной формат для js на котором 99% информации передается. Мне то похуй, можешь на xml но как ты и сам сказал он не оч, так что я хз к чему ты это высрал. >табличку или список, или какой-нибудь офис лайк документ который ты быстренько на страничке при помощи JS раскидаешь (хотя в 9000 раз проще это сделать в бэке и не ебаться с JS) Хеллоу, а потом чтобы эту табличку оживить как даун ебаться с каким-нибудь jquerry? Знаем, проходили, одна из причин почему я с пыха ухожу на фулл js чтобы как раз такой хуйней не заниматься и все построение страниц делать на фронтэнде тем же ангуляром[тут можно вставить любой фреймворк]. >JSON - это ебаная технология сам себе блять противоречишь блять, сначала у него все-лишь формат, а потом уже целая ТЕХНОЛОГИЯ блять. >для безмозглых дауничей которые не способны вместить что-то большее, выучили себе JSON и ебашат им всё. Что ты блять несешь дебич, к врачу сходи. У тебя раздвоение личности в пределах одного поста, может к врачу сходить. Как можно блять json выучить, если это всего-лишь формат данных)) Ты хоть свой пост перечитай.
И дальше опять у тебя какой-то высер в сторону json я нихуя не понял что ты этим хотел сказать ну да ладно.
>>1179197 > чтобы эту табличку оживить как даун ебаться с каким-нибудь jquerry? По сути юзеру нужна таблица. А свистелки, перделки, летающие хуи на странице - уже твои маняфантазии. Я как юзер прямо сейчас просматриваю таблицу 300*12 полей и мне твой JSON ну просто нахуй ненужен. Хотя не сомневаюсь есть дауны которым лишь бы покрасивше. >я с пыха ухожу на фулл js чтобы как раз такой хуйней не заниматься и все построение страниц делать на фронтэнде тем же ангуляром[тут можно вставить любой фреймворк]. Наркоман. Пыха это бэк, Ангуляр - фронт. Тоесть ты в любом случае будешь что-то получать с бэка. Тоесть причём тут ангуляр вообще? >сам себе блять противоречишь блять, сначала у него все-лишь формат, а потом уже целая ТЕХНОЛОГИЯ блять. Когда это передача данных - это одно, когда это целый сегмент который уже используется вообще везде, даже в БД - это уже технология. > Как можно блять json выучить, если это всего-лишь формат данных)) Вот один формат данных узнают, и ебошат им всё. Даже в тех случаях где можно без него обойтись.
>>1179199 >Наркоман. Пыха это бэк, Ангуляр - фронт. Тоесть ты в любом случае будешь что-то получать с бэка. Тоесть причём тут ангуляр вообще? плиз не пиши если ты не шаришь, хз откуда ты выполз и кукарекаешь. Офк я буду получать респонд - только это будет 0% html и 100% инфы в json который высрал сервер и который ты так почему то не любишь. А со своим манямирком можешь в 1999 возвращаться, где формы были не интерактивные, где чтобы менюшку открыть надо всю страницу перезагружать с нуля и прочии нештяки.
>>1179205 Не злись няша. Я же не говорю вообще от js отказаться, просто мне например нужен ограниченный набор функций. А всякие пидоры, такое ощущение, что ос мне в браузер пихают, при этом умудрившись по дороге проебатб функционал.
Хули вы до jsona доебались, как анон сказал выше это всего-лишь формат, можно xml, можно хоть в бананах с пальмы. А вот что с этими данными делать - это уже совсем другой вопрос и мало имеет отношения к тому как эти данные отформатированы.
>>1179210 можешь начинать привыкать, так как потребителю твоё мега-ахуенное приложение на крестах в хуй не вперлось, качать его еще, устанавливать, еще и вуросов небось туда запехал, падлюка? Куда проще зайти на сайт через браузер на ссылку что друган скинул, зарегаться чере какой-нибудь вконтакт и гугл чтобь эта хуйня все отхранизировала и быть в шоколаде, еще и с мобилки можно потом зайти если оптимизировано норм.
>>1179214 Причём тут кресты? Какое приложение? Какой друган? Ты уже какой то манямир себе придумал, а теперь пытаешься меня убедить в том, что это Я про это говорил.
>>1179215 >А всякие пидоры, такое ощущение, что ос мне в браузер пихают, при этом умудрившись по дороге проебатб функционал. мы видать с тобой на разных языках говорим
>>1179216 Ну да, если я читаю двачи, я хочу ограниченный функционал. А теперь зайди на какой нибудь мэйлач, какие то свистелки, перделки, звуковые оповещения, тут же мыло встроенное, тут же СОЦИАЛОЧКИ, тут же знакомства, ПУШБлдядь оповешения которые уже блядь вообще везде и прочее. Кажется что мэйл крайний случай, но нихрена подобного.
>>1179218 БЕСКОЧНАЯ ЛЕНТА КОТОРАЯ БЛЯДЬ ЗАЕБАЛО В ПЕРВЫЙ ЖЕ ДЕНЬ. Нахуй её пихают везде и всюду? Нахуй она нужна? Существуют в мире аутисты которым лень пагинацию прожать или что? Больше всего бесит именно она.
>>1179065 Это распространённая задача в любом гуе, не обязательно веб. В вебе её легче сделать, ибо динамика.
1. Я бы предложил не аттрибуты, а классы-маркеры. 2. jQuery. Если надо - потом переделаешь без. Но, надо понимать, что jQuery - это гораздо больше, чем просто поиск по селекторам (который сейчас можно и так сделать). 3. Дополнительная таблица (массив) с валидаторами в JS - {имя_класса: функция_валидатор, ...}.
Выбираем по классу, проходим по элементам, для каждого находим в таблице валидатор по классу и вызываем, передавая в него value элемента.
Как обрабатывать результаты? Можно это делать по-разому. Можно собирать в массив и что-то с ним делать потом. Можно сразу же присваивать элементу класс "validation-error", который будет его обводить красным. Можно возвращать из функции сообщение об ошибке и присваивать его соответствующему элементу на форме для отображения подсказки. И т.п.
Ничего сложного в этом нет. Если интересны подробности - спрашивай ответы.
>>1179299 спасибо, анончик. Я пока тип только чистый джс использую. Да понятное дело, что ничего сложно здесь не должно быть. Но у меня опыта всего месяц, месяц назад я узнал что такое хтмл и цсс. Мне пока всё очень сложно дается, буду думать/вникать. Но мне бы минимальной какой-нибудь пример увидеть с комментариями
>>1179355 Есть, Анон! Ну, что вкатишься в мою комманду? Готов устроить за трёхразовый дошик и койку-место под компом у себя в гараже :) Мазик бесплатно.
>>1179860 Там много букв, конечно. Но, на самом деле, пример простой. И поучительный, лол.
Из хитрых вещей (для ньюфага) - функция, возвращающая функцию. Погугли javascript closure.
Остальное - элементарный код на jQuery. Погугли, там ничего сложного.
Кстати, я забыл там сделать для примера один валидатор просто инлайн-функцией. Т.е., например, вместо Validators.gte(100) можно написать function(val){...} - то же самое, что находится внутри Validators.gte(), но сравнивать сразу с числом 100.
Этот тред посвящён главному языку будущего - 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/ для серверного кода.