24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Памахите люди добрые. Делаю йобу, когда чел скроллит до ее топа - она должна прилипать кверху, на скролл табы переключаются и на последний таб она отлипает и скроллится раньше. Сделал это через $(window).scrollTop(). Те пока не дойдет до последнего таба окно скроллится к началу йобы, создается эффект прилипания. Во всех браузерах это работает нормально. Но вот жеж хуй, тестировщик сказал сделать эту йобу и для IE. А в этом блядском браузере есть баг (фича), что скроллы дико тормозят, поэтому при скролле йоба начинает трястись. В общем, я решил выйти из положения поставив диву position fixed, но тогда нижний контент начинает себя причудливо вести, подьезжать под йобу и даже див распорка с заданной высотой не помогает. Что делать?
Посоны, словил дикий тупняк на такой примитивной задачке. Нужна помощь, потому что я что-то совсем глупый. Есть две зелененькие (не активные) кнопочки. При надавливании на одну из них, она становится красненькой (активной). Если перестать надавливать - обратно становится зелененькой (не активной). А надо не так. Надо, чтобы: При надавливании на одну кнопку, она становилась красненькой (активной) и оставалась после отпускания. Дальше, если мы нажмем: - опять на ту же кнопку и отпустим - она становится зелененькой (не активной) - на другую кнопку - предыдущая становится зелененькой (не активной) в момент нажатия на другую. А эта другая становится красненькой (активной) и остается после отпускания Вот тут кнопочки выложил: http://jratva.com/buttons.html
>>981182 То есть понял, типа эффект залипания нужен. Нажал на кнопочку - она залипла. Нажал на нее же - отлипла. Или на другую нажал - эта отлипла, а другая залипла.
>>981182 Ну так и напиши в обработчике. Если нет класса эктив на нажимаемой - убираешь эктив с других, а на нажатую вешаешь. Если есть класс эктив, то просто убираешь с текущей.
>>981367 Если при двух зелёных кнопках нажать правой кнопкой на одну из них, и с зажатой правой кнопкой увести курсор с кнопки (чтобы открылось меню, но не сразу, а при отпускании за пределами кнопки), а потом, при открытом меню повторить процедуру на другой кнопке (опять нажать правую кнопку и не отпуская увести курсор с кнопки), то они обе станут красными. Огнелис.
>>981367 И тут же баг случайно обнаружил. Если надавить на кнопочку, сдвинуть мышку за пределы кнопки и отпустить - onmauseup не срабатывает и вся эта фигня начинает работать как попало.
Чего оно не чинится? Если нажать на кнопку и отвести от нее зажатую мышку - онмаусовер срабатывать. Если же опять повторить эту же процедуру - срабатывает только если повторно на кнопку мышку навести. Вот тут кнопочки выложил: http://jratva.com/buttons.html
>>981375 На уп и довн висят функции, которые исключительно только дизайн кнопки меняют. На клике уже висят функции для работы с приложением. Не хочу говнодизайн мешать с логикой.
Это снова я по поводу загрузки данных для странички после php.
Допустим php скрипт рисует табличку заполненную нулями. Чтобы данные в табличке обновились, нужен JS, да? Могу ли я на своем сервере выполнять этот JS код, чтобы получить данные?
Сап, джейсон стейтемы, есть вопрос - как сейчас модно и молодежно отдавать единый файл со стилями? Есть ли способ захуярить его прямо в джс, сбандленый вебпаком или все еще по-старинке отдают двумя отдельными запросами? Кто модный. кто в теме, можно с линками, чтобы почитать как стоит делать и почему. В ангельский могу.
>>981397 Вот нашел аякс в коде http://ideone.com/NeVHOF Полная ссылка внутри аякс http://na-bns.ncsoft.com/ingame/bs/character/data/equipments/ Но если перейти по ней, то получается fail. Мне кажется, что нужно передать еще и информацию "test", чтобы получить правильный ответ, поскольку на сайте на каждое значение - набор отдается разный. Помогите получить правильный ответ, если это возможно.
А код с пикчи не работает. Мало того, чтоб запрос ничего не возвращает, так еще и вся страничка не отвечает - тесты не проходятся, даже тот который ПЕРЕД аяксом. Убираю аякс - все тесты работают. Что не так?
Посоны, писал мобильное приложение с использованием Angularа, более менее понравилось. Посмотрел вскольз туториал на реакт, показалось сложнее. Стоит перекатываться на реакт?
>>981421 Вкатываться в реакт сложнее из-за того, что конструктор по сути, много стороннего придется выучить, но потом начинает нравиться поболее чем ангуляр ибо гибко, модно, молодежно. Я первые пару месяцев грезил ангуляром, но теперь полюбил реакт, пишу огромную приложуху, пока все ок.
Если я хочу сравнить строку "false" и значение false оперетором ==, который по идее должен сначала сам привести типы, типа так "false" == false; что к чему он сначала приведет?
Я вот не могу понять. Если он превратит "false" в булевое false, то должно быть false=false, а если false к строке, то должно выйти "false"="false". В любом случае я ожидаю результата true, но выдает false.
>>981481 Щас бы за невнимательность называть мудаком. И правда, сдедал, первый и третий тест срабатывают, а вот внутрь самого аякса браузер не заглядывает. Там обязан же быть success, раз ссылка рабочая. Что теперь не так?
И еще, кто-нибудь скажет как так выходит? Если просто написать название переменной, в консоли выведет одно значение, а если написать её содержимое в a.l.e.r.t.() - совсем другое!
Посоны, есть два массива. array и f. Массив f хранит некоторые значения. Вот эти значения надо отсортировать, причем в том же порядке отсортировать и элементы массива array. Есть какая-нить функция в JS?
>>981499 Очередной совет долбаеба. Если ты не можешь понять преобразования, то конечно == юзать не стоит, но иногда подобное преобразование может сделать код лучше и желательно использовать именно ==.
>>981497 >League Of Legends Не удивительно что ты идиот. Почему ты считаешь что изменяя переменные они будут изменять значение другой переменной которая уже БЫЛА назначена ДО этого?
Попробуй $.get И ещё у тебя по дурацки всё оформлено, неужели начальную фигурную скобку у function нельзя держать на одной строке с отступом в один пробел? Тебе следить за правильностью написания элементарно легче станет.
Ты поменял значения переменных. Allow были присвоено значение вычисленное по старым исходным данным, поэтому оно всегда false. В алерте ты вычисляешь всё заново.
>>981570 В порядке - не в том смысле, что по возрастанию/убыванию, а в том смысле, что массив f содержит порядок сортировки массива array. Блять, как тебе объяснить, чтобы ты понял. Вот как вот тут https://jsfiddle.net/cwah9bfL/ , только но не так говнокодисто.
>>981573 элементы в массиве array, которые соответствуют (по индексу) наибольшим значениям в массиве f - уходят в начало. Наименьшим значениям - в конец.
>>981573 >только но не так говнокодисто. Ладно, один хер и так работает. Посоны, а есть вот у меня массив array. Как оттуда извлечь случайный элемент, так чтобы в array он стерся (все элементы после него сдвинулись на одну позицию, если не с конца извлекли)??? Типо как array.pop(), только со случайной позиции. Есть какая-нить функция в JS?
Всем привет, наткнулся тут по работе на одну задачку, никак решить не могу. Короче, есть массив с данными, который через foreach выводится на морду. Забинжено всё через кнокаут. Чтоб было понятнее, кусок этого кода выглядит вот так: <tbody data-bind="foreach: Data"> <tr> <td><input type="checkbox" data-bind="click: тут нужно вызвать функцию, checked: IsSelected"></td> <td><span data-bind="text: FirstName"></span></td> Тут ещё куча всякого дерьма... </tr> </tbody>
Короче, к данному хтмл фалу также подключенн скрипт откуда берется массив Data. Так же там есть функция для примера functionName. И мне её надо вызвать при клике на чекбокс. Но если я просто прописываю в data-bind в виде data-bind="click: functionName", то кнокаут её ищет не в скрипте, а в массиве Data, и соответственно не находит. Внимание вопрос. Как сделать так, чтоб При клике на чекбок шло обращение к функции в скрипте?
Так-с, что-за хуйня происходит в мире JS? Какие-то ES6, ECMAScript, ECMA-262, 6th Edition, ох бля, мне уже плохо. И зачем об этом везде пишут? Анон, поясни по-хардкору, или дай какую-то статью на эту тему.
>>981712 Это понятно. Просто если я вызываю функцию на ивенте клик, то кнокаут всё равно будет ссылатся на массив с данными, а не скрипт. Вопрос в том как этот самый контекст вытащить
>>981706 >>981712 Короче, вот чтоб было нагляднее. При таком вызове он вылетает ошибка, мол функция не найдена. Как правильно прописать контекст чтоб всё заработало?
>>981725 Только одна проблема. Мне одновременно нужно слушать каждую строчку. А количество строчек в таблице может быть разным. При этом, при клике на определённую строчку, мне нужно не только вызвать нужную функцию, но и передать в эту функцию данные из строчки на которую я кликнул. >>981726 Её я уже вдоль и поперёк прочитал, не очень помогло.
>>981728 Тогда вешай обработчик на всю таблицу, а обрабатывать уже можешь через event.target (тот элемент на котором сработало событие) (event - первый параметр в функцию обработчик передается).
This refers to the binding context object at the parent level. This is different from $parent, which refers to the data (not binding context) at the parent level. This is useful, for example, if you need to access the index value of an outer foreach item from an inner context (usage: $parentContext.$index). This is undefined in the root context.
>>981899 фронтенд это не сколько верстка сколько написании логики. еще есть сервер-сайд (node.js), мобильные приложения (react native) десктоп (electron).
>>981913 Щас самый популярный стек технологий это angular/react/etc и node.js. Мобильные, десктопные приложения эти те же SPA но в контейнере. Щас дохуя таких клепают ибо один код на все платформы.
Объясните ньюфагу как организовывать последовательные действия при ассинхронности (на промиссах)? Коллбеками? Пытаюсь для тренировки разобраться с API pixiv'а (сайт с анимушными иллюстрациями). Т.к. в HTTP/ajax я пока не разобрался нормально - нашел библиотеку-обертку на промисах. Вот я хочу разделить задачу на несколько функций. Первая получает логин и пароль, возвращает залогиненный объект API (ну или не возвращает, а вызывает с ним коллбек). Вторая получает залогиненный объект api, и возвращает API и ID иллюстраций из закладок. Третья получает залогиненный объект api, ID иллюстраций и кочает их. Они все асинхронные, т.к. промиссы внутри. Если использовать коллбеки то как я понимаю функции будут примерно будут выглядеть: function apifunc(api, arg, callback) { api.somepromisecall(arg).then( (res) => callback(api, res) ) } А последовательный вызов как-то так: func1(name, pass, (api) => { func2(api, (api, ids) => func3(api, ids)) } )
Привет девчёнки. Короче такая тема, я хелоувордщик со стажем, ебашу хелоуворды уже пару лет и ни одного нормального проекта я не сделал. Учил уже наверно все языки кроме Хаскеля. Я все таки решил сдеалать хоть что то и вот какая у меня идея. Я сейчас смотрю уроки JavaScript30 и я увидел такую удивительную вещь как fetch. И думаю сдалать сайтик который может подгружать инфу с сервера и выводить и обновлять контент на сайте. Проблема в том что я долбоеб который не может довести дело до конца что я хуй его знает где можно брать инфу, где брать такие базы данных которые можно использовать с помощью fetch. Или просто дайте идею что сдеалать что бы не стыдно было показать на собеседовании. Кидайте свои идеи , братья.
Дано: 2.2 грамма фена Опыт написания прог на C\C++ до 700 строк Базовый/средний уровень знания JS (+ NodeJS по learnyounode и некоторому количеству практики) Весьма недурное знание английского Планы написать приложение с вот этим вот всем: Frontend 1) React/Redux 2) Service (а лучше Shared) Workers 3) WebSocket Backend 1) VanillaJS на ноде 2) аутентификация 3) вменяемый API React изучал по Codecademy (то есть не оче с практикой), плюс уже манов достаточно раскурил. VanillaJS на ноде использовал и уже успешно примитивный статический сервер написал. На этом собственно всё, о workers, webpack и прочем знания лишь теоретические.
>>982025 Понял что Промиссы и так являются "обёрткой" для колбеков и сделал на них. Такое ощущение что я на Хачкеле пишу. Если кто хочет подсказать что я делаю не так (в т.ч. по стилю кода): https://pastebin.com/QM5qUnwv Но в принципе всё работает. >>982113 Спасибо, почитаю.
>>982159 А что значит function getFollowingUsers( {pixiv, userID} ), всмысле, что ждет функция на вход, это же не объект? Это что-то из es6 синтаксиса?
>>982164 Наверное из es6, в последнем nodeJS работает. Что-то аналогичное: function getFollowingUsers( obj ) { const pixiv = obj.pixiv const userID = obj.userID /.../ }
>>982169 >js-то прогрессирует Я конечно ньюфаг, но у меня впечатление что костыли на костылях. Тот же es6 далеко не весь браузеры поддерживают. Я заебался настраивать webpack и прочие перделки.
Насоветуйте что почитать по бекенду (как сервер на экспрессе хотя бы на локалхосте запилить и как связывать его с фронтендом на реакте) для ньюфага, который считал чёрной магией сисадминов всякие СЕТИ, ПРОТОКОЛЫ, HTTP.
Посоны, а как мне сгенерировать два рандомных числа от 0 до 99, но так, чтобы они гарантированно отличались друг от друга? Первое число var random1 = Math.floor(Math.random() умножить на (100)); Второе можно в цикле сгенерировать? do{ var random2 = Math.floor(Math.random() умножить на (100)); }while(random1!=random2) Но это ж пиздец говнокод. Можно как-то попроще сделать?
>>982251 Это называется SPA (single page application). Сейчас все десктопные приложения мигрируют в браузер, поэтому да, нужен фреймворк, ибо изначально веб не был предназначен для такого. А огромное обилие библиотек это следствие принципа "каждая тулза должна делать что-то одно".
Посоны, а я опять по поводу локалстореджа. Че-т он мне вообще не нравится. Можно как-то сделать вот как на пикче? Чтобы нажимаешь обзор, выбираешь txt-файл и весь массив в него сохраняешь (или из него загружаешь)
То чувство, когда видишь JS-треды уже давно, но не решаешься перекатиться в чистый фронтенд с андроида. Ибо джява всё же стабильнее, 40 летний фронтендер - это 100% неликвид. Да и не нужны чистые фронтендеры, в основном фуллстек
>>982370 а что сложного в том, чтобы быть фуллстаком? Кстати, верстка - не так уж и легко, нужно быть внимательным к мелочам, пиксель влево, пиксель вправо, проверять на тысячи экранных разрешений, делать резиново, оптимизировать, выполнять больные фантазии дизайнеров.
>>982391 чушь, под фуллстаком сейчас бекенд плюс фронтенд подразумевают. Конечно, супер хорошо ты будешь знать только что-то одно, но второе тоже надо знать.
Посоны, CSS кто-то шарит? Вот у меня кнопочки дивом оформлены. Если на кнопочке сделать даблклик - выделяется текст и это не очень круто. Как вот эту фигню убрать?
>>982420 В этих кнопочках вся суть, дизайнерский выебос, сидел полдня пердохался, чтобы нормально работало. >>981182 Если надавить на кнопочку - она становится зажатой (windows 98 -стайл) и в центре экрана выползает (дисплей:блок) div с настройками и кнопочкой ok. После всех настроек нажимаем ок - div обратно заползает (дислпей:нон) и кнопочка отжимается.
https://learn.javascript.ru/exception#проброс-исключения Объясните дауну. throw создаёт объект ошибки который передаётся в catch(e), (т.е "e" это и есть этот самый объект возвращенный throw) но что происходит когда мы в блоке catch создаём throw я так и не понял. Этот объект автоматически сохраняется как объект следующего try...catch? Чет я логики в этом не увидел, нахуя внешнему try...catch объект ошибки из какого-то другого блока кода? Или я всё таки неправильно понял как работает это фигня?
>>982704 Throw не создает, а бросает. Catch - ловит. Throw в catch делает тоже самое: ты поймал исключение, возможно, как-то обработал его (логирование, например), а затем бросил его дальше.
>>982707 Чет "бросить" принципиально отличается от того что я написал? Т.е в принципе всё правильно, throw просто запоминает ошибку из catch(e) и бросает её в следующий try...catch ? но, >Чет я логики в этом не увидел, нахуя внешнему try...catch объект ошибки из какого-то другого блока кода? Или я всё таки неправильно понял как работает это фигня?
Ты что консоль то пишет смотрел хоть? У тебя скорее всего No 'Access-Control-Allow-Origin' header is present on the requested resource. выводится, вытащить ты его в принципе на фронте не сможешь. Ищи другой источник для данных, либо с локалхоста что-нибудь запрашивай.
Как с помощью только JS (без всяких нод, джквери и т.п.) получить список файлов на компе? Без кнопок "выбрать файл" и прочего. Вот есть пусть к папке (c:\\temp, например) и надо вывести список всех файлов. Ещё лучше найти только изображения в указанной папке.
>>982712 Ошибка бросается только на более высокий уровень. В том случае что ты написал, второй блок тру-кетча никогда не словит первую ошибку, он иожит словить только ту ошибку которую модет выкинуть функция readData(). А в первом блоке, после проброса ошибки в катче, она выйдет на уровень выше, в данном случае скорее всего просто выпадет в консоль.
>>982740 >вытащить ты его в принципе на фронте не сможешь. Ищи другой источник для данных, либо с локалхоста что-нибудь запрашивай. Да-да, вот только я уже вытащил всё. "Не сможешь", лол. Там нужно было один символ поменять в коде, и любой из присутствущих, кто делал ajax запросы должен это знать, но не знал НИКТО. Тут либо специально не хотели подсказывать, либо просто никто в треде не умеет в элементарный ajax, что сполна характеризует местных советчиков.
Сап ЖаваСкриптач, хочу вкатится к вам. Есть совсем мелкие знания по питону и Си, знаю что они тут в большинстве своем нахуй не нужны.
Вопрос. Мне сразу начинать читать литературу с гитхаб-фака или сначала попытаться что-то еще изучить, дабы все шло лучше? Хтмл? CSS? Что нужно чтоб эффективно вкатится в ваше братство хуевой оптимизации?
>>982760 > В том случае что ты написал, второй блок тру-кетча никогда не словит первую ошибку >он можит словить только ту ошибку которую модет выкинуть функция readData()
Блять ты определись уже, словит он её или не словит, там только функция и внешний код, больше ничего нет.
>>982347 Ой не рассказывай. Проблемы будут только в ие9 для подгрузки файлов аяксом нужны скрытые iframe и анальная боль, но сомневаюсь что он тебе нужен.
>>982785 >ископаемый способ Ну так почему мне не подсказали современный рабочий способ? Надо полагать, что ты такой знаешь, если считаешь это старым способом.
>>982753 >не из браузера А откуда? Все будет зависеть от того, на чем ты будешь крутить свое говно. В твоем рантайме может быть библиотека для работы с файлами, а может не быть. Но в любом случае, даже если тебе не придется подключать никаких библиотек, это будет что-то стороннее как и джкуери или ноде. https://docs.nativescript.org/cookbook/file-system
>>982789 Я могу попробовать тебе объяснить. Но только для начала ты должен смириться с мыслью, что ты не прав, а тот анон выше (который говорил про невозможность) как раз таки прав, если речь идет об ajax (XMLHttpRequest)
Смотри, ты не можешь вытащить данные из-за cors. Так работает ajax. Заголовки в твоем случае должны правильно быть настроены на сервере, с фронта тебе не исправить это. Все что ты можешь, это поставить no-cors mode и получить ответ у которого не вытянуть тело
Но, на том серваке реализован древний костыль, которым можно обойти проблемму. И называется этот метод jsonp. Если примитивно, то его суть сводится к тому, что мы обращаемся не по нашему адресу, а по адресу с параментром (обычно это ?jsonp=name). На месте name - имя функции, в которую сервер подставит свои данные. Далее мы создаем скрипт в body, с этой самой функцией, где будут данные обрабатываться.
Вот собственно и все. Ты не использовал ajax, ты просто обошел ограничение другим методом получения данных.
Когда же сервера нормально настроены и отдают нужные заголовки, то проблем не возникают и люди юзают нативный fetch или надстройки. Это и является современным подходом.
У меня сегодня хорошее настроение, поэтому и решил написать. А тебе надо меньше вешать ярлыки на анонов в треде и судить о их знаниях/навыках. К тому же все могут ошибаться/забывать/не знать чего-либо. В том числе и я :) Такие вот дела
Мне не важно, будет ли это синхронный или асинхронный запрос, то есть пофигу, аякс или нет. Мне главное на страничке ввести в поле имя ?c=name и получить объект, на который я смогу ссылаться, как в json (например response.equipments.hand.detail.item.additional_ability_html).
>>982888 Короче я просто не пойму как в зависимости от ошибки можно вызвать рекурсивно эту же функцию но с другими параметрами. Просто если назначать переменную в начале функции, то потом она опять переопределяется на ту же самую и я чет додуматься не могу как сделать правильно.
>>982888 >>982893 Дополнение к этому. Вот например одноразовую функцию я написал (пик). Но если и второй раз вводится неправильное значение, то выводится просто undefined, а хотелось бы чтобы функция опять вызывалась.
Не понял как автор так просто использует throw new Error() в условии, без try...catch? В теме по try...catch это использовался только внутри данной конструкции, а как работает вне её - не рассказывалось. Куда уходит этот объект и почему вообще выходит уведомление об ошибки если throw new Error() по словам автора просто бросает объект ошибки в catch, но по сути не показывает никакое окно уведомления.
Как советовали выше, читаю книжечку JS For Kids. И Сайт https://learn.javascript.ru заодно, там чуть детальней некоторые вещи расписаны. Вот я кое-чего не понял, помогите плиз.
Есть цикл for типа такого:
for (начало; условие; шаг) { // ... тело цикла ... }
Позже сказано, что можно пропустить любую часть for. Зачем тогда "начало" нужно? В смысле, и без него же цикл начнется? Можете своими словами объяснить суть вот этих начало-условие-шаг? Как вы этим на самом деле пользуетесь?
>>983106 Вопрос вдогонку: На сайте последняя часть for перед телом называется "шаг", а в книге - инкрементом. Всегда ли шаг = инкремент? Или это можеьт быть что-то еще?
>>983112 Может быть и дикримент. for (var i = 10; i > 5; i--) { alert(i); } Так что шаг правильней. >>983106 В начале ты объявляешь переменную, над которой орудуешь. Можешь не объявлять а взять уже готовую, например. Алсо for не создает области видимости, так что если у тебя первый цикл с i, то второй обычно делают с j и дальше по алфавиту
>>983131 >не создает области видимости Я еще нуб и не понял вот этого. Переменная, созданная внутри первого for не видна для второго и нам придется объявлять новую переменную в другом цикле или, наоборот, еще как видна, но мы сознательно объявим/возьмем другую переменную что бы избежать путаницы и глюков?
>>983213 Суть области видимости не понятна. Хотя я только что прочел статью в википедии и, если правильно понял, то имеем вот что: Внутри определенной области видимости мы привязываем некоторое имя к некоторой информации, т.е. объявляем переменную. Внутри этой конкретной области видимости по этому конкретному имени будем находить именно эту информацию. Но! ВНЕ этой области (т.е. в какой-нибудь другой) за этим самым именем ничего не закреплено, т.е. в области №2 это имя ничего не означает. И мы можем этим же именем из области №1 обозначить другую информацию.
Поскольку for не создает область №2, имя переменной i в первом цикле может быть использовано по отношению с этой самой пеерменной в следующем цикле, и что бы эти циклы случайно не изменили значения друг друга, во второй цикл мы введем переменную с другим именем. Так?
>>983194 Нода пхпшникам нахуй не нужна. Человек может говорить на разных языках - на русском, английском, немецком. Но думает он на одном языке. Так же и с погромированием. Те, кто вкатились в web через PHP - для них JS только вспомогательный инструмент. Те, кто через JS вкатился - не могут въехать до конца в PHP и придумывают себе всякие ноды.
Айоу Сука. Рад приветствовать вас, фронтендеры. Обращаюсь я к вам за помощью. Ибо я еблан и прогуливал школу, а теперь требуются некоторые знания школьного курса алгебры/геометрии для решения одной тривиальной задачи. Собсна проблема такова. Имеется окружность. Имеются две дуги, одна из них вписана в окружность, вторая описана вокруг нее. (см. пикрилейтед). Дуги нарисованы на свг. Задача в том что бы пропорционально сокращать длину обоих дуг таким образом что бы они не пересекали окружность. Проблема в том что я не знаю какое соотношение deltaX к deltaY должно быть что бы выполнить задачу и пропорции не нарушились.
>>983233 Именно. Причем переменная i из первого цикла очень часто бывает нужна во втором, но уже не в той роли, что в первом цикле, например в алгоритмах обхода двумерных массивов
Поясните за each из Cheerio. Пример из доков: var cheerio = require('cheerio'), $ = cheerio.load(SOME_HTML), fruits = []; $('li').each(function(i, elem) { fruits = $(this).text(); }); fruits.join(', ');
Что в this находиться? Вроде бы elem === this, но нахуя?
Не понял зачем нужно оборачивать функцию внутри setTimeout в анонимную? Почему нельзя изменить функцию onReady без этого? Ведь пока идёт таймер функция ещё не запущена и в этот момент (по логике) её можно изменить.
>>983262 если ты делаешь то, о чем я подумал индикатор загрузки - то это можно сделать проще. Например тебе нахуй не нужны 2 дуги, просто сделай круг и под ним дугу, визуально будет тоже самое что и твой пик. Дальше манипулируй этой подложкой. Другой вопрос если ты хочешь их пустить с разной скоростью. Алсо это не алгебра, а геометрия за 7 класс.
Ну и ещё, если вдруг внутри где-то ещё будет использоваться function у которого свой this, а тебе вдруг надо будет воспользоваться элементом, то тут без elem уже не обойтись.
Я так понял, присвоить переменной массив иил объект можно, а цикл - нельзя? Не вижу в гугле ничего на эту тему. Вчера ошибку консоль показала, когда я так пытался сделать. Может, что-то дргугое было неправильно.
Вот что сказано в книге: "As you might imagine, you don’t always have to start the looping variable at 0 and increment it by 1. For example, here’s a way to print all the powers of 2 below the number 10,000:for (var x = 2; x < 10000; x = x 2) { console.log(x); } We set x to 2 and increment the value of x using x = x 2;, which will double the value of x each time the loop runs. The result gets big very quickly, as you can see:2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 And voilà! This short for loop prints out all the powers of 2 below 10,000."
Т.е. инкремент - это не только символ ++ и его действие (увеличение на 1), а любое действие, которое ведет к увеличению какой-либо переменной? Т.е. это инкремент - var watermelon = 5; watermelon++; но вот это watermelon *= 3; тоже инкремент?
Посоны, а что произойдет, если в локалсторедж попытаться впихнуть чуть больше, чем туда влазиет? Вот есть у меня 5 массивов по мегабайту, которые влазиют. И есть шестой, который до конца не влазиет, но очень хочется туда запихнуть. Ошибку выдаст? Поместится частично? Или что-то из старого затрет?
Я чувствую себя дебилом. В книге чувак дает задачки, и многие я хоть убей не знаю как решить. Потом смотрю в ответы и сразу все становится понятно и логично, я полностью понимаю что он делает. Но вот сам решить не могу. У вас такое бывает?
>>983640 Да, сивол это просто символ. i++, ++i, или i += 1 - это просто операторы языка предоставляющие синтаксический сахарок, чтобы не писать i = i + 1;
Объясните быдлану, это сама суть множества, что нельзя получить значение по индексу? https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set Какое тогда ёобу мне использовать, чтобы хранить уникальные значения/получать/удалять числа с помощью встроенных методов. Не хочу копаться в массиве и splice юзать каждый раз.
>>984124 О чем ты? Сначала CoffeeMachine() запускается через конструктор, потом Machine() отдаёт ей свои методы, далее (уже имея методы) this.enable имеет this CoffeeMachine(). Никакого СТАРОГО this там нет.
Привет, подскажите по задаче сапер javascript. Как сделать: >>https://github.com/enotocode/minesweeper.mvc/blob/master/app/BrowserView.js >>Тут у тебя жестко прописаны id и селекторы элементов, и мы не можем поместить на 1 странице несколько BrowserView (привязанные к одной или разным моделям), жаль. Ну и ссылка на document жестко прописана.
Мне видятся два варианта. Как сделать лучше, есть ли другие решения? 1. генерировать уникальный случайный айди при создании экземпляра класса BrowserView, он будет добавляться к id всех сгенерированных dom-объектов, чтобы иметь доступ к ним через getElementById. 2. хранить сгенерированные элементы внутри экземпляра класса и изменять их свойство innerHTML.
Есть у меня массив temp, скажем, в котором я храню некоторые данные. Есть у меня также массив p на 5 ячеек, в которые я хочу сохранять массив temp после обработки функцией vrotebal. То есть, при вызове функции vrotebal: в p4 записываю p3 в p3 записываю p2 в p2 записываю p1 в p1 записываю p0 А в p0 пишу обработанный temp.
То есть должно получиться так, что в каждом p разные предыдущие значения temp. На первом скрине код. А вот на втором скрине то, что эта функция (vrotebal) делает.
Причем смотри, если мы перед тем, как в p записывать temp, сделаем join - функция работает корректно. В разных p - разные значения. Это яваскрипт такой припижженный или браузер? Или может я чего не понимаю?
>>983612 В LTS-версию Node не завезли async/await, а настраивать webpack/babel я и так заебался уже пиздец. Не хочу им ещё и код серверной стороны ими обрабатывать. Пока Промисами пользуюсь.
>>981132 (OP) сап котятки, котонам респект короче переустановил винду и при установке image-webpack-loader'а такая шняга https://jsfiddle.net/zv1djp4s/ кто нить сталкивался ?
>при этом у них есть общая структура list, которая включает три последних элемента каждого из них Почему три последних? Ведь объект {value: 0, rest: list} и {value: -1, rest: list} тоже будут в этом списке. Че это за хрень вообще, кто-то может доступным языком объяснить? Я даже не пойму что от меня автор хочет.
>>984392 Это даже к самому js имеет опосредованное отношение. Такое впечатление что вообще первый раз в жизни кодишь. >>984390 Ну вот, дошло? Ты же просто ссылку на массив запихиваешь, а сам он у тебя выше один раз объявлен и ты его изменяешь, а так вак остальные на него ссылаются, то и там становятся таеие же значенич
>>981132 (OP) Господа фронтендеры, встал вопрос. Суть такова, написал бакенд с рест апи и даже набутстрапил шаблончик, теперь появилась нужда в каком нибудь простом жс фреймворке, чтобы дергать апи и выводить данные в мое охуительное spa. Так вот, есть ли простой фреймворк для этого? Чтобы безо всяких бейблов, вебпаков и т.п., просто подключаешь либу и ебашишь без задней мысли.
Аноны, поясните плз, у всех функций по дефолту прототипом является window, но если создавать объект через Object.create(null), то прототип будет null (т.е его не будет). Всё верно?
>>981132 (OP) Хочу предостеречь вас, жс это говно. Разбирать чужой код, ебашить свой это такая запара вы себе не представляете. Одно дело смастерить сайтик самому или по туториалам, другое дело разбираться и поддерживать написанное кем то. Пока у вас есть время учитесь электрике, сварки, рисованию, а программирование уже не то, кодеров как собак нерезанных и хуй с ним свалишь за бугор если не гений (это не про двачеров). С проектами на других языках получше обстоит дело, но тоже такое. Хохлы и индусы демпингуют рынок, фриланс в 2к17 уже не работает. Мыкола и Кумар готовы за 1$ в день ебашить и жить на мамкиных харчах на аутсорсе.
>>984464 Что-то не так? Напомню тебе что я вообще в этом пока не разбирался. Откуда тогда у функций всякие методы вроде toString, apply, call, bind и тд и тп? По моей логике они берутся из глобального объекта window. Ну а как там на самом деле я не ебу, завтра почитаю.
Доброго времени суток, господа, в штыки не воспринимайте, но стал такой вопрос. Вот я точно знаю, что на работке мне надо будет jQuery к джанге с питоном в дополнении. Понимаю, что по-хорошему, надо бы сесть и полностью выучить основы языка, но надо было уже вчера, как это бывает. Короче, не обломлюсь я, если тупо прочитаю книгу из шапки по jQuery, или шансов понять с наскоку ноль ?
>>984526 JQuery проще учить чем жс. Проблема в том что нужно понимать как оно работает под капотом, с jquery этого узнать не получится. >>984518 Все почти так. Только в виндоу хранятся эти самые прототипы, но сам виндоус не прототип.
Ну и документ превращают в ебаную кашу, что касается DX.
Сам CSS имеет нормальные импорты, с HTTP2 больше нет поводов их не использовать. Кастом пропертис тоже охуенны и как раз дают тот самый контроль из JS. В веб-компонентах есть слоты и scoped-стили.
Вроде всё, что надо, есть прям искаропки, но всё это в удивительном мире, где нужно только эвергрины поддерживать, а мы же ебём мёртвых ослов. Наверно лучший вариант сейчас — старое-доброе разделение реализаций по БЭМ с каким-нибудь пре-\пост-процессором.
Ребят, срочно нужна ваша помощь. Что мне делать? Дальше изучать JS(осталось ровно половина курса) или начинать изучение C#? Проблема в том, что я не могу решиться, то ли довести дело до конца и приступить к новому, то ли не мучить себя и начать заниматься интересным мне(в данный момент) делом?
Кто-нибудь может объяснить на замечательном примере, для чего нужны промисы? Я не то, чтобы опытный JS кодер, но норм знаком с шарпами. Уже пол года юзаю JS, но мне ни разу не попалось случая, где промисы были бы лучше кэллбэков.
Нет разницы, какие ты там курсики будешь дорчить, пока единственный выхлоп от них — время, проведённое по какому-то сценарию. Будь то коридоры в игре, серии в аниме или уроки в курсах — разницы нет.
>>984731 Допустим тебе надо: - Получить данные из хттп запроса - Сделать запрос к базе и убедится, что там нет нужного - Создать в базе новую запись - Получить из базы все записи - Отрендерить их
>>984777 Ну что ты бампаешь - это просто на "представить" задача. Какие ссылочки. Если хочешь - приду через пару часов с работы, нарисую даже тебе, может понятней будет
Посоны, чисто дизайнерский вопрос! Надо на страничке нарисовать дерево. Есть два варианта: 1. Разбить страничку на верхнюю и нижнюю область (первая пикча). В верхней части дерево. В нижней (онмаусовер на узел в дереве) описание выделенного узла. Минусы - горизонтальная прокрутка уже на 1280. Нижняя часть тож где-то совсем внизу. 2. Разбить на левую и правую часть. В левой части дерево развернуть на 90°. В правой описание. В правой части много места, но в левой дерево не влазиет полность в экран и хош-не-хош вертикальная прокрутка будет. Какой вариант менее говнист?
https://learn.javascript.ru/new-prototype#прототип-после-создания Как эти прототипы понять вообще можно? Вот например первое же задания. В первом коде true, вроде всё понятно. Во втором тоже true т.к Rabbit.prototype меняет прототип уже после того как один экземпляр был создан. А ВОТ в третьем задании по какой-то причине false... как это понять вообще? Сказано же что prototype меняет свойство __proto__ для новых объектов. Так с чего вдруг оно поменяло прототип объекта даже после того как он был создан? Да и в последнем варианте кода тоже почему-то undefined хотя СНАЧАЛА в коде создается объект, и только после этого КОНСТРУКТОРУ указывается удаление из свойства-объекта prototype какого-то другого свойства.
>>984852 Ну все правильно. Rabbit.prototype указывает на объект { eats: true }. var rabbit = new Rabbit() устанавливает свойство __proto__ указывать на этот объект. Затем меняют одно из свойств объекта, но сам-то объект остался тот же самый. Тут не в прототипах дело, а в том, что ты ссылки на объекты не понимаешь
>>984852 Сумбурно объяснил, щас еще разок попробую.
Вынесем сначала этот объект отдельно: var obj = { eats: true }; Теперь Rabbit.prototype = obj - эта запись говорит о том, что Rabbit.prototype и obj являются ссылками на один и тот же объект. var rabbit = new Rabbit() - свойство __proto__ объекта rabbit теперь указывает на тот же объект, что и Rabbit.prototype. Rabbit.prototype.eats = false - свойство eats того объекта, на который указывает Rabbit.prototype, выставляется в false.
>>984688 Надеюсь, что для начала хватит, а потом уже разберусь. >>984700 Спасибо, а книга в шапке там еще от некоего Дарк Лорда лол годнота, или не стоит обращать внимания ?
>>984862 Спасибо, щас ещё раз всё обдумаю и попробую дальше задания поделать. Я почему-то не думал о том что это именно ссылка на объект, думал что __proto__ у новых созданных объектов будет как-то скопировано. Получается что если мы наделали дохуя объектов, а потом прописали конструктору другой prototype, то у всех этих созданных объектов свойство __proto__ тоже поменяется?
>>984871 Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется. Тебе бы почитать сначала про указатели что-нибудь, на мой взгляд, это самый верный способ понять объекты.
>>984873 Я хз почему Кантор об этом нихуя не пишет и сразу задания какие-то даёт.
> Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется.
Для меня пока вот это крайне сложно понять. Все задания которые были - там просто ссылка на объект либо обычные значения которые просто перезаписываются и всё.
Пока всё что я понял это что при создании функции из свойства prototype конструктора копируется ссылка в новые объекты которые создаются им. При этом если изменить Rabbit.prototype.eats то будет изменен тот же самый объект поэтому изменения произойдут во всех объектах созданных конструктором. А если функции-конструктору присвоить новое свойство prototype, то уже созданные функции оно не изменит, ибо в них ссылка на другой объект (который получается должен сохраниться где-то в памяти, но доступ к нему напрямую получить уже нельзя, ибо из prototype конструктора он был удалён, только если по отдельности у каждого объекта менять).
>>984879 >Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется.
Блджад, я что-то не понимаю в структуре редукса. Вот есть контейнер App, с двумя компонентами/контейнерами Page1, Page2 внутри. Сначала писал отдельные экшены/редьюсеры для Page1/2, без оных у App. Залип когда понадобилось нажатием на кнопку в Page1 триггернуть изменение в Page2. К какому компоненту это действие должно относиться?
>>984554 Импортинг класс неймов из .css? Попробовал уже, дропнул из-за того все классы тогда нужно из .css маппить.
>>984881 Да я вроде на словах как-то лучше понимаю, хз даже. Попытался в предыдущем посте объяснить свое понимание, вроде бы всё правильно. Иногда во всяких схемах из зарисовках можно что-то нарисовать по незнанию что в действительности в коде работает не так.
>>983381 Мне необходимо сокращать длину этой дуги в зависимости от некоторых параметров. Это должен получится SkillCheck из Dead By Daylight (пикрилейтед), в зависимости от одного параметра длина успешной зоны должна становиться меньше.
https://jsbin.com/regodunaxi/edit?js,console,output - попытался создать функцию которая делает reverse массива (да я знаю что есть стандартный метод), но что-то не выходит нормально. Мне нужно чтобы менялся исходный массив. Что не так я делаю? запутался совсем =(
пацаны есть класс который добавляет в нужное время в нужное место html https://jsfiddle.net/bxx94x6b/ конкретно строки 48 -> 59 так вот, почему то не появляются псевдоэлементы у инпутов пик где я проебался ?
>>984874 Спасибо братишка. Я просто в целом не понял что {value: 0, rest: list} и {value: -1, rest: list} это два других объекта которые просто имеют ссылки на эту структуру и думал что это какие-то тоже вложенные объекты.
Котаны, доступ к камерам на Андроиде/iOS на сайтах ведь не получить? Да, я не ошибся тредом. Можно ли получить доступ к камерами на мобильниках из-под сайтов?
>>984519 нахуй эти препроцессоры! пиши на ванильном css3, подключи постпроцессор какой нидь, подруби автопрефиксеры и не еби мозги. И да можешь инлайн стили для простых стилей без наворотов.
>>984898 изменения на нажатие в page1 должен мутировать глобальный state ридакса. в свою очередь page 2 должен слушать ту часть глобального state-а, которую нужно. для прослушки отдельной части глобального state поможет компонент высшего порядка connect из либы react-redux. вот и все махинации. напрямую page1 и page2 не должны общаться. только state-ы и только props-ы, без свистоперделок и выебонов.
сап яневерстальщики подскажите как бы мне через + прописать стили для :after есть струкрута типа такой .input__wrapper>.input__field у .input__wrapper есть :after который должен меняться при фокусе .input__field как бы такое организовать ?
Естественно меня не взяли с обоснованием: "разделяет на мелкие компоненты - бесполезно. Модули не умеет использовать, но воообще видно что по стайл гайду джона папы". Давал на ревью перед отправкой знакомому мидлу - сказал на четыре из пяти, мелкие компоненты збс, расширяемость все дела, кто прав?
А где бы взять задачек или упражнений для тренировок циклов и условных операторов нубу? Я пока сам принцип понял массивов, объектов, if/else, while и for. До функций не дошел и учить не буду пока не потренирую пройденное. Что из этого можно, так сказать, скрафтить? В книге JSFK есть задачка сделать игру в слова, но я хочу еще.
>>985136 Не знаю ангуляр и в принципе лень читать твои сырцы, но вот с этого >разделяет на мелкие компоненты - бесполезно просто дристанул. Вангую, что ты только выиграл, не попав в подобную говноконтору.
Посоны, чому евент листенер не ремовится? Если кликнуть на div, срабатывает функция onclick="addevent();" и к канвасу добавляется евентлистенер, который передает в функцию funct координаты мыши, а та в свою очередь рисует квадратик на канвасе. Если еще раз кликнуть на div - должен удалиться евент листенер и квадратик остаться в том месте, где кликнул. Но евент листенер не удаляется. Чому? Вот тут код: http://jratva.com/test.html
>>985363 Заходит. Там ошибка была в том, что funct создается я в addevent и поэтому считается как-бы другой функцией, не той, что передана в еддевентлистенер.
>>985368 Ну да. Я там дикий тупняк словил, когда написал if(!x) - не понятно, что там в ифе происходит и в какую ветку залазием. Начал расписывать. if (x!=false) - так нагляднее
>>985243 Я всегда пользуюсь простым правилом, чтобы определить, нужно ли разбивать компонент на несколько: нужно = позволит избежать дупликации кода || имеет смысл с точки зрения предметной области
Я пхпшник, но вынужден работать версталой. Я не могу понять как на клиентской части мне писать в ооп стиле? Я все в функции пихаю и горожу бороду из ифов. Мне просто больно вместо няшных классов делать объекты или о боже прототипирование. Я даже функцию из родительской функции вызвать не могу. А в пхп бы просто класс создал и вызвал из него метод. Как же я ненавижу жс
>>985414>>985410 Но это убожество какое-то, у меня глаза вытекают, какие-то зис вместо публичных методов, дефолта приватные функции. И главное меня еще и упрекают что я видите ли не пишу ооп на их уродском функциональном жаваскрипте.
>>985424 Поверь, пройдет месяц и ты прозреешь. Алсо, ООП уровня жабы с абстрактными синглтонами фабрик фасолин в жс никто не пишет. Используй объекты там, где они естественны, а где естественны функции - используй функции, и все будет хорошо.
бля пацаны как вы фрилансите ? У меня с предыдущей галеры 3 сайта в awwwards.com выставлены дизайн + пр начитался охуительных смотрю fl.ru -> ебать, 20 тысяч за сайт под ключ с современным дизайном там обычно работы на два - три месяца на галере я бы под 200 получил за ту же работу
>>985430 я хуй знает, какие там объекты в фронтенде можно лепить? типа объект "анимация скроллбара" и в нем клик методы? мне вообще сказали нахуярить функции как в Жаве или сишарпе по событию. Отдельно функции на клик, отдельно на хувер, отдельно на скролл. Но они в такую лапшу разрослись, что яебу так комбинировать.
>>985457 Ну правильно тебе все сказали. События - самый удобный способ управления control flow, и главное - технологие- и языконезависимый. А в лапшу оно разрастается, потому что ты размазываешь стэйт по всему коду, а надо держать в одном месте. Гугли redux
>>985465 Пояснить за rx можешь? Вот я посмотрел на redux-observable, который собственно rx использует. Не зашло как-то. На генераторах в redux-saga работать с сайдэффектами мне лично было поприятней Ну и по звездам уступает, куда ж без них.
Расскажи про профиты, сильные/слабые стороны из опыта если можешь.
>>985529 Ну тогда ебись с локальными стейтами, нахуяривай регистри, заслуженно получая по ебалу каждый раз, когда забудешь вызвать какой-нибудь update или notify
я вкатываюсь в реакт, поясните в двух словах, как он берет данные, например, из апи!!
допустим есть апи сервиса погоды (который отдает json файл, больше я пока про апи ничего не знаю(, я так понимаю, с помощью реакта оно парсится и передается в компоненты, а там уже идет их рендер, верно?
1. Уверен, что api отдает именно json-файл, а не просто json-объект? 2. React - это библиотека для наебенивания вьюшек. Какие именно проперти ты будешь ему подсовывать, откуда ты их будешь брать, как ты их будешь использовать - это твоя проблема, а не реакта. Так что с помощью реакта ничего ни вот что не парсится. 3. Получать свой json можешь, например, fetch-ем. Как парсить - а я ебу? Как данные в json упакованы, так и парсить, я откуда знаю, что тебе там надо.
>>985031 Нихуя не понял. Всё у меня хранится в сторе редукса, константы(ну, типы экшенов)/экшены/редьюсеры разделены на 2 компонента. И вот как мне их взаимодействие организовывать? Вариант который я вижу: экшн "отправляющего" компонента диспатчит действие определённого типа, а редьюсер "принимающий" реагирует. Но тогда будет константа, относящаяся к обоим компонентами, что как мне казалось неправильно.
>>985642 Мда уж, офигеть конечно мы по-разному с тобой сделали, несмотря даже на то что ты вебпак прикрутил. Мб у меня опыта не хватает, но почему ты сделал так, как сделал? нгредакс, куча стейтов, куча ооп или хз что это? Какой бекграунд у тебя? Не забудь запостить сюда их фидбек.
>>985769 >нгредакс Потому что я реактоблядь и иначе не умею организовать код. Сначала я думал без редакса сделать, но контроллеры быстро разрослись в размерах, спагетти код пошел. в качестве плюса сохранение состояния приложения в локалсторейдж в 2 строках кода. >куча стейтов Из-за редакса, пробрасывание его стейта в качестве параметров компоненту. >куча ооп Прост чтоб показать, что я могу в использование ес6 классов с ангуляром. >вебпак прикрутил Тоже необязательно, но, опять же, показать, что я владею вебпаком (использую уже настроенный из бойлерплейта).
Фидбека ещё нет, мне дали срок до 5 числа, думал, что у всех так, а потом уже будут проверять все сданные задания.
Бэкграунд - около полутора лет работы с жс, чуть меньше года работы с фреймворками.
>>985814 Там роутинга нет по заданию, одна страница. Вообще неплохо было бы сделать и другую, чтобы, опять же, похвастаться, но мне впадлец стало. Или ты имел в виду синхронизацию стейта и браузерхистори? А с текстареа проебался, да.
>>985817 Ну, насчет роутинга там просто ничего не сказано, но по идее в любом спа ты должен иметь возможность вперед/назад в браузере нажимать и осмысленные урл кидать, имхо лучшеэтим выебываться чем вебпаком.
Нашел у тебя кайнд оф баг, который у себя иксил - создаешь допустим 10 айтем. Потом удаляешь первые девять, а если открыть комменты бывшего десятого заново - всё еще будет будет надписьь "комментс #10 "
>>985822 Согласен насчет роутинга, но уже поздно. А это не баг, каждому айтему присваивается уникальный айди, который и выводится в заголовок панели с комментариями, а не его порядковый номер.
>>985823 Но тогда если расценивать это как реальное приложение - у тебя айдишник никогдане обнулится и через год "использования" этого аппа я буду создавать итем с миллиоными номерами, вроде не очень клево.
>>985830 От использования зависит же. Если это crm для мелкой компании, где документация не играет особой роли, то можно было бы и обнуляемые сделать, наверное. А в серьёзных компаниях идут на такую жертву. Видел, сколько цифр в номере накладной в Новой Почте, например?
>>985862 Проекты юбые, какие придумаешь или найдешь идею. Для стейт-менеджмента есть redux и mobx. Redux популярней и можно сказать выбор по умолчанию. НО Прежде чем что-то использовать или добавлять ты должен понимать для чего оно тебе надо. Без этого будет возникать лишняя куча вопросов и не будет нормального понимания. А без понимания получится жалкое зрелище, а не код. Дерзай.
>>985902 Напоминаю, что HTML изначально был предназначен для описания документа, а не его внешнего вида. Ключевое слово "table" это значит таблица и ничего больше, и браузер должен и обязан (вроде как, хехе) понимать это дословно, т.е. в точности так, как написано. Ключевое слово "table" не значит вёрстка, Web 1.0 и прошлый век.
>>984870 >Мыкола будет получать за щеку, вот это вполне вероятно Ему будут доплачивать за принятие, не забывай. А всё, что будешь принимать ты, это обоссаный мамкин борщ.
Смотрите какая ситуация. Я пишу на сях и крестах, но мне нужно сейчас написать небольшую игру на джаваскрипте. Где можно найти шпаргалку по всем основным языковым элементам, чтобы держать ее в параллельной вкладке? Не хочу читать учебники, где учат программированию.
>>986039 Secrets of the JavaScript Ninja 2nd edition >Audience >If you aren’t at all familiar with JavaScript, this probably shouldn’t be your first book. Even if it is, don’t worry too much; we try to present fundamental JavaScript concepts in a way that should be understandable even for relative beginners. But, to be honest, this book will probably best fit people who already know some JavaScript and who wish to deepen their understanding of JavaScript as a language, as well as the browser as the environment in which JavaScript code is executed.
Возможно ли осилить JS на достаточном уровне, за 3-4 месяца интенсивного изучения, каждый день, по 5-6 часов, для того чтобы начать на нем хоть что-то зарабатывать? Первый мой язык программирования, раньше только дизайнил/верстал.
Пиздец я поплыл на этих прототипах, вроде всё понятно было до того момента когда автор начал добавлять новый метод в стандартный прототип строк и показал данный код (пик). Вообще чет нихуя не пойму.
String.prototype.repeat = function(times) { return new Array(times + 1).join(this); // что происходит здесь я уже боюсь спрашивать. };
alert( "ля".repeat(3) ); // ляляля
new Array(times + 1) насколько я понимаю создает массив с количеством пустых свойств times + 1. Далее к этому объекту применяется метод .join(this) который объединяет массив в строку используя этот же самый массив как разделитель? ШИТО БЛЯТЬ? И как получается что "ля".repeat(3) сразу возвращает готовую "утроенную" строку?
И ещё вот кое-что не понял. Почему создавая метод напрямую как Object.create то он будет доступен из экземпляров (объектов)? Ведь экземпляры получают прототип из Object.prototype т.е из СВОЙСТВА конструктора, а не из конструктора Object напрямую.
>>986552 Уже вроде разобрался немного. Но вроде this в этот момент является объектом, в который (куда-то) записывается это строка. Так как можно использовать полностью сам объект String в join? Пусть даже в нём внутри хранится эта строка в виде примитива, почему тогда вызов не через this.value например, где value то свойство в которое записывается наше "ля" при вызове конструктора. Как-то пиздец странно.
Внутри функции this может принимать либо значение window / undefined (в зависимости от того, включен ли strict mode) в случае, когда функция вызывается сама по себе, либо значение объекта, в контексте которого происходит вызов. func() { тут this = window / undefined } obj.func() { тут this = obj }
>>986559 Когда вызываешь метод на строке, то строка временно оборачивается в объект к которому и применяется этот метод, потом результат возвращается а временных объект удаляется. Именно этот временный объект и является тем this в аргументе .join. Но как так получается что что this в join превращается в строку ля, ведь возвращается именно этот временный объект-обертка.
>>986560 Я наверное непонятно выразился сорян. Кантор пишет - "Допустимо изменение прототипа встроенных объектов", а пример кода (который ниже на скрине) изменяет не прототип встроенного объекта, а просто назначает конструктору Object новое свойство. Прототип Object.prototype здесь никак не был задействован.
Ребят, срочно нужна ваша помощь. Что мне делать? Дальше изучать JS(осталось ровно половина курса) или начинать изучение C#? Проблема в том, что я не могу решиться, то ли довести дело до конца и приступить к новому, то ли не мучить себя и начать заниматься интересным мне(в данный момент) делом?
>>986809 У тебя result - строка, какого хуя ты пытаешься что-то в нее записать через bracket notation? Так не работает, через скобки можно читать значения из строки, но не записывать.
>какого хуя ты пытаешься что-то в нее записать через bracket notation? Так не работает
>через скобки можно читать значения из строки
Ну, я подумал, что все-таки можно и записывать по аналогии с массивом. Не помню, может, где-то раньше в главе про строки такое и говорилось, но сейчас вы мне действительно новость сказали. Сейчас вот все хорошо работает и без concat, хз зачем усложнять.
Понимаете, раньше работающие аналогии я уже замечал. Например, хотя в книге .slice(x,y) рассматривался пока только в контексте строк, он вполне применим и к массивам. Я просто попробовал так сделать, и получил новый порезаный массив. Вполне мог неправильно запомнить вывод из этого как "вся эта хрень работает одинаково и там и там".
>>986916 >Т.е когда объект String передаётся в join, то срабатывает его метод .toString передающих строку? Ничего там не "срабатывает", просто функция join написана таким образом, что перегоняет переданный аргумент в строковое представление. arg = String(arg) или что-то такое.
>>986977 Хуйня вопрос, делай следующее: - ставишь на комп npm и ноду - ставишь бабел и пишешь бабелконфиг - ставишь вебпак и вебпак-мерж - заебениваешь два скрипта для нпм, чтобы один собирал под дев, второй под прод - пишешь основной вебпаковский конфиг с настройками, которые должны применяться и к дев, и к прод сборке - пишешь два специальных конфига под дев и прод, подцепляешь их при помощи webpack-merge и NODE_ENV - в базовом конфиге: рантайм-зависимости, правила резолвинга модулей и файлов, бабель-лоадер - в деве: настройки для вебпак-дев-сервера - в проде: правила битья кода на чанки, углифай, критикал сиэсэс Отсос браузерифай + галп + бабель-кли + моча + говно, которые сосут хуй по жизни, тебе обеспечен, и уже через полгода ты будешь изучать такие дозы фреймворков, что maven будет тратить часы на сборку проекта, увидев размер твоего node_modules
>>985410 На так есть же модули, сам решай что экспортировать. Не экспортированные функции и будут действовать как приватные методы.
>>985424 > функциональном жаваскрипте. Функцию в функцию передать ты и в PHP можешь, ровно как и вернуть функцию из функции. Но это ведь не делает его функциональным, ровно как и JavaScript.
>>987021 > ставишь на комп npm Дед, пора уже yarn ставить.
>>987042 >Дед, пора уже yarn ставить. Я не дед, я ньюфаня во фронтенде, поясни за ярн, какие преимущества он сможет мне дать? Юзаю npm для 1) установки пакетов; 2) запуска скриптов, никаких других пожеланий к нему не возникало
>>987056 >Ты про оф документацию? Я читаю, но пока ничего не понимаю. Так потому что надо не читать, а делать что-то. Начни писать хотя бы тот же остоебенивший туду-лист со связкой react + redux, и сразу же добровольно-принудительно познакомишься с кучей полезностей. >Я ничего не понял из того что ты написал. Да я шуткануть вообще пытался, скрестив две известные пасты про кодерство
>>987060 Я делаю, но я не понимаю как делать. Вот например, у меня есть файл index.js который я подключаю в мой index.html. Как мне к index.js подключить react и react-dom? Я так понимаю что мне в entry нужно что прописать, но не понимаю что.
1. react, react-dom, любые другие библиотеки и вообще любой js файл можно подключить в другом js файле при помощи импорта. Вот тут почитай про ES6-модули, import, export, все такое: https://learn.javascript.ru/modules
2. Но хуй там плавал, ни один броузер до сих пор не поддерживает из коробки эту залупу, поэтому тебе придется поставить транспайлер, который будет всякие ништяки из ES6 переводить в понятные любому не совсем окаменевшему броузеру вызовы. В качестве транспайлера можешь использовать, например, babel. Тут полазь, посмотри, как написать простейший конфиг: https://babeljs.io/
3. babel сам по себе не обрабатывает синтаксис модулей. webpack версии 2 умеет это делать сам, причем, емнип, без дополнительных телодвижений с твоей стороны. А бабель нужно подключить к webpack при помощи специального лоадера под названием babel-loader. Вот тут посмотри, что есть лоадеры и как и запиливать: https://webpack.js.org/loaders/
4. У твоего веб-приложения есть entry-points, т.е. те файлы, которые ты будешь непосредственно в html файле script-тегами задавать. Все остальные необходимые зависимости будут притягиваться сами по import инструкциям. В простейшем случае, когда весь твой код в итоге оказывается, вместе со всеми зависимостями, в одном файле index.js, этот index.js и будет твоим entry-point. Также тебе нужно указать, в какую директорию складывать твои транспилированные файлы и как из обзывать. Это делается при помощи конфига output: https://webpack.js.org/configuration/output/
>>987065 Раз уж я сегодня добрый, можешь глянуть тут мой вебпак-конфиг, чтобы, смотря на него, написать свой и разобраться: https://pastebin.com/6mvjg70J
Джава-господин вкатывается во фронтенд. На выбор два стула, реакт и ангуляр. Напарник-фронтендщик намекает, что реакт попизже будет, дескать попроще, аргументов уже не помню.
На ангуляре уже был написан MVP проект и скоро будет сдан заказчику.
Что понравилось в ангуляре: – тайпскрипт, динамическая undefined джаваскрипт параша не нужна хотя тс толком не защищает – целостный фреймворк с роутингами и т.д., чем-то напомнило божественный спринг, где все есть из коробочки – отделение html/css говна, в которое я почти не лез, от ts-логики – angular-cli – директивы типа *ngFor какие-то ущербные, хотя не знаю, как это имплементируется в реакте
Не понравилось: – слишком дохуя повторяющегося кода, даже учитывая, что я джавист – редукс прилеплен как-то сбоку, вообще какое-то странное озущение, будто фреймворк переписывался раз шесть и все продумывалось второпях – ts не такая уж панацея
>>987093 > слишком дохуя повторяющегося кода, в реакте тоже самое а в более общем варианте в любой технологии задроченой под работу с UI будто в qt не много повторящегося кода
> редукс прилеплен как-то сбоку лол
> Какие аргументы у реакт-адептов? реакт ебет и будет ебать второй ангуляр комьюнити уже сделало свой выбор, ентерпрайзники скорее остануться на 1.5 ибо легаси а все новое будут писать на react как это сделали сбербанк и билайн
>>986919 Сам по себе объект в строковое представление нормально не перегонится, для этого у него должен быть метод .toString который делает подобное преобразование.
>>987826 Тебе не вызывать надо в сетинтервале а передать функцию, которая вызываться будет. Короче ты не понимаешь а) как работает сетинтервал б) что делает аплай. Или просто натупил
Этот тред посвящён главному языку будущего - JavaScript. Благодаря своей гибкости используется в браузере, на серверах, в мобильных приложениях, на десктопе и практически во всех видах программирования. Удобный синтаксис позволяет легко писать на нём, а высокая производительность делает его отличным выбором для решения любых задач - от небольших магазинов до огромных highload проектов. JavaScript по праву является самым популярным в мире языком. На каждом сайте есть браузерный JavaScript, а JavaScript на сервере используется такими крупными корпорациями, как Amazon, Yahoo, HP, NASA, Walmart и многие другие.
Часто задаваемые вопросы:
https://github.com/xxxwww/js-thread/blob/master/Wiki/faq.md
Список материалов для изучения:
https://github.com/xxxwww/js-thread/blob/master/Wiki/learn.md
Список инструментов и направления JS-разработки:
https://github.com/xxxwww/js-thread/blob/master/Wiki/tools.md
Конфа /pr/ в Slack:
https://invite-me-to-2chpr.herokuapp.com/
JS-конфа в телеграме:
https://telegram.me/jsthread
НЕ КОПИРУЙ КОД ПРЯМО В ТРЕД!
Воспользуйтесь https://jsfiddle.net/ для браузерного кода и https://ideone.com/ для серверного кода.