Вы видите копию треда, сохраненную 23 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Этот тред посвящён главному языку будущего - 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/ для серверного кода.
Сделал это через $(window).scrollTop(). Те пока не дойдет до последнего таба окно скроллится к началу йобы, создается эффект прилипания. Во всех браузерах это работает нормально. Но вот жеж хуй, тестировщик сказал сделать эту йобу и для IE. А в этом блядском браузере есть баг (фича), что скроллы дико тормозят, поэтому при скролле йоба начинает трястись.
В общем, я решил выйти из положения поставив диву position fixed, но тогда нижний контент начинает себя причудливо вести, подьезжать под йобу и даже див распорка с заданной высотой не помогает. Что делать?
Есть две зелененькие (не активные) кнопочки. При надавливании на одну из них, она становится красненькой (активной). Если перестать надавливать - обратно становится зелененькой (не активной). А надо не так. Надо, чтобы:
При надавливании на одну кнопку, она становилась красненькой (активной) и оставалась после отпускания. Дальше, если мы нажмем:
- опять на ту же кнопку и отпустим - она становится зелененькой (не активной)
- на другую кнопку - предыдущая становится зелененькой (не активной) в момент нажатия на другую. А эта другая становится красненькой (активной) и остается после отпускания
Вот тут кнопочки выложил: http://jratva.com/buttons.html
нагнуть тестировщика за IE
То есть понял, типа эффект залипания нужен. Нажал на кнопочку - она залипла. Нажал на нее же - отлипла. Или на другую нажал - эта отлипла, а другая залипла.
Ну так и напиши в обработчике. Если нет класса эктив на нажимаемой - убираешь эктив с других, а на нажатую вешаешь. Если есть класс эктив, то просто убираешь с текущей.
Э... че?
(![]+[])[+!![]+(+!![])]+([][[]]+[])[+[]]+(![]+[])[+!![]+(+!![]+(+!![]))]+(!![]+[])[+!![]+(+!![]+(+!![]))]+(!![]+[])[+!![]]
Вчера вечером часа на 2 идиота включил. Только что проснулся и за 5 минут все сделал.
Вот тут кнопочки выложил: http://jratva.com/buttons.html
Если при двух зелёных кнопках нажать правой кнопкой на одну из них, и с зажатой правой кнопкой увести курсор с кнопки (чтобы открылось меню, но не сразу, а при отпускании за пределами кнопки), а потом, при открытом меню повторить процедуру на другой кнопке (опять нажать правую кнопку и не отпуская увести курсор с кнопки), то они обе станут красными. Огнелис.
И тут же баг случайно обнаружил. Если надавить на кнопочку, сдвинуть мышку за пределы кнопки и отпустить - onmauseup не срабатывает и вся эта фигня начинает работать как попало.
Во-во. Надо onmouseover какой-нить городить и еще одним флажком проверять был ли вызван onmouseup
Вот тут кнопочки выложил: http://jratva.com/buttons.html
На уп и довн висят функции, которые исключительно только дизайн кнопки меняют. На клике уже висят функции для работы с приложением. Не хочу говнодизайн мешать с логикой.
Че-т не получается.
Посоны, а можно как-то координаты мышки захватить и не выпускать ее с кнопки, пока пользователь мышку не отожмет?
>координаты мышки захватить
Это просто блджад эталонное говнокодерство. Лучше уж повесь две функции на онклик.
Допустим php скрипт рисует табличку заполненную нулями. Чтобы данные в табличке обновились, нужен JS, да? Могу ли я на своем сервере выполнять этот JS код, чтобы получить данные?
Вот нашел аякс в коде http://ideone.com/NeVHOF
Полная ссылка внутри аякс http://na-bns.ncsoft.com/ingame/bs/character/data/equipments/
Но если перейти по ней, то получается fail. Мне кажется, что нужно передать еще и информацию "test", чтобы получить правильный ответ, поскольку на сайте на каждое значение - набор отдается разный. Помогите получить правильный ответ, если это возможно.
http://na-bns.ncsoft.com/ingame/bs/character/data/pointeffects.json выдает ответ прямо в браузер.
А код с пикчи не работает. Мало того, чтоб запрос ничего не возвращает, так еще и вся страничка не отвечает - тесты не проходятся, даже тот который ПЕРЕД аяксом. Убираю аякс - все тесты работают. Что не так?
Посмотрел вскольз туториал на реакт, показалось сложнее.
Стоит перекатываться на реакт?
Вкатываться в реакт сложнее из-за того, что конструктор по сути, много стороннего придется выучить, но потом начинает нравиться поболее чем ангуляр ибо гибко, модно, молодежно. Я первые пару месяцев грезил ангуляром, но теперь полюбил реакт, пишу огромную приложуху, пока все ок.
Как можно быть таким мудаком, а? Иди повесься программирование - не твое.
Перемести скобку с 19-й строки в конец 17-й
Я вот не могу понять. Если он превратит "false" в булевое false, то должно быть false=false, а если false к строке, то должно выйти "false"="false". В любом случае я ожидаю результата true, но выдает false.
Почему?
Щас бы за невнимательность называть мудаком. И правда, сдедал, первый и третий тест срабатывают, а вот внутрь самого аякса браузер не заглядывает. Там обязан же быть success, раз ссылка рабочая. Что теперь не так?
Если просто написать название переменной, в консоли выведет одно значение, а если написать её содержимое в a.l.e.r.t.() - совсем другое!
Очередной совет долбаеба. Если ты не можешь понять преобразования, то конечно == юзать не стоит, но иногда подобное преобразование может сделать код лучше и желательно использовать именно ==.
>League Of Legends
Не удивительно что ты идиот.
Почему ты считаешь что изменяя переменные они будут изменять значение другой переменной которая уже БЫЛА назначена ДО этого?
Попробуй $.get И ещё у тебя по дурацки всё оформлено, неужели начальную фигурную скобку у function нельзя держать на одной строке с отступом в один пробел? Тебе следить за правильностью написания элементарно легче станет.
Ты поменял значения переменных. Allow были присвоено значение вычисленное по старым исходным данным, поэтому оно всегда false. В алерте ты вычисляешь всё заново.
Ага, понял! Спасибо!
Я вообще не играю
Бамп
Попробовал, результат тот же, то есть никакой - браузер не залазит туда. Какие еще могут быть варианты?
>у тебя по дурацки всё оформлено
Нормально оформлено. Половина пишет так, а половина по-другому.
Нахрена два засовывать? Пишешь функцию сортировки funstion s(hui, pizda) { return hui >= pizda; } , потом вызываешь на обоих массивах метод sort(s).
> Вот эти значения надо отсортировать, причем в том же порядке отсортировать и элементы массива array
И в чём же я не прав?
В порядке - не в том смысле, что по возрастанию/убыванию, а в том смысле, что массив f содержит порядок сортировки массива array. Блять, как тебе объяснить, чтобы ты понял. Вот как вот тут https://jsfiddle.net/cwah9bfL/ , только но не так говнокодисто.
элементы в массиве array, которые соответствуют (по индексу) наибольшим значениям в массиве f - уходят в начало. Наименьшим значениям - в конец.
>только но не так говнокодисто.
Ладно, один хер и так работает.
Посоны, а есть вот у меня массив 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, и соответственно не находит.
Внимание вопрос. Как сделать так, чтоб При клике на чекбок шло обращение к функции в скрипте?
Каким образом? Я просто в джаваскрипте и кнокауте не очень шарю, основная сцпециализация c#.
func = func.bind(context, args (опционально))
то есть идет возврат функции, только в другом контексте и можно передать аргументы
контекст, это текущий объект, на котором вызывается функция
Это понятно. Просто если я вызываю функцию на ивенте клик, то кнокаут всё равно будет ссылатся на массив с данными, а не скрипт. Вопрос в том как этот самый контекст вытащить
>>981712
Короче, вот чтоб было нагляднее. При таком вызове он вылетает ошибка, мол функция не найдена. Как правильно прописать контекст чтоб всё заработало?
Хз, тут видимо в нокауте дело, а я его не знаю, может просто в скрипте достать элемент по атрибуту
document.querySelector([data-foo="bar"]);
и навесить на него обработчик в скрипте.
В нокауте - хз. Я с ним не работал.
Могу разве что дать линк на документацию лол
http://knockoutjs.com/documentation/binding-context.html
Только одна проблема. Мне одновременно нужно слушать каждую строчку. А количество строчек в таблице может быть разным. При этом, при клике на определённую строчку, мне нужно не только вызвать нужную функцию, но и передать в эту функцию данные из строчки на которую я кликнул.
>>981726
Её я уже вдоль и поперёк прочитал, не очень помогло.
Тогда вешай обработчик на всю таблицу, а обрабатывать уже можешь через event.target (тот элемент на котором сработало событие) (event - первый параметр в функцию обработчик передается).
Вот это разве не оно?
$parentContext
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.
Но это конечно костыли, если ты делаешь через фреймворк
Бамп
У меня какие-то проблемы с подключением к рабочему компу, не мог проверить.
Короче, спасибо за помощь, сработала конструкция вида: $root.functionName
фронтенд это не сколько верстка сколько написании логики. еще есть сервер-сайд (node.js), мобильные приложения (react native) десктоп (electron).
Щас самый популярный стек технологий это 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)) } )
>func1(name, pass, api => { func2(api, (api, ids) => { func3(api, ids) } ) } )
Пофиксил немного.
>api.somepromisecall(arg).then( (res) =>
{ callback(api, res) } )
И тут ещё забыл фигурные скобки.
Или просто дайте идею что сдеалать что бы не стыдно было показать на собеседовании. Кидайте свои идеи , братья.
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 и прочем знания лишь теоретические.
Вопрос: не охуею ли я?
ванила на ноде такое себе. лучше express. хотя если тебе только сокеты нужны то хватит socket.io.
Ок, но на остальных досках у меня значек плагина не подсвечивался и не было доступа в меню плагина
Понял что Промиссы и так являются "обёрткой" для колбеков и сделал на них.
Такое ощущение что я на Хачкеле пишу.
Если кто хочет подсказать что я делаю не так (в т.ч. по стилю кода):
https://pastebin.com/QM5qUnwv
Но в принципе всё работает.
>>982113
Спасибо, почитаю.
выглядит ок
А что значит function getFollowingUsers( {pixiv, userID} ), всмысле, что ждет функция на вход, это же не объект? Это что-то из es6 синтаксиса?
Наверное из es6, в последнем nodeJS работает.
Что-то аналогичное:
function getFollowingUsers( obj ) {
const pixiv = obj.pixiv
const userID = obj.userID
/.../
}
>js-то прогрессирует
Я конечно ньюфаг, но у меня впечатление что костыли на костылях. Тот же es6 далеко не весь браузеры поддерживают.
Я заебался настраивать webpack и прочие перделки.
>Тот же es6 далеко не весь браузеры поддерживают.
Babel жи
А перделки да, они хипстеры они заполонили
В чем прикол программистких-тян-носков?
У меня все.
Первое число
var random1 = Math.floor(Math.random() умножить на (100));
Второе можно в цикле сгенерировать?
do{
var random2 = Math.floor(Math.random() умножить на (100));
}while(random1!=random2)
Но это ж пиздец говнокод. Можно как-то попроще сделать?
Почему устарело то?
>>982246
И ради этого использовать отдельный фреймворк с хуевой тучей библиотек?
callback -> deferred -> promise -> async/await
Это называется SPA (single page application). Сейчас все десктопные приложения мигрируют в браузер, поэтому да, нужен фреймворк, ибо изначально веб не был предназначен для такого. А огромное обилие библиотек это следствие принципа "каждая тулза должна делать что-то одно".
var random1 = Math.floor(Math.random() умножить на (100));
var random2= random1%99 + 1
Блябуду точно не совпадут.
Это даже не петросянство, а что-то уровня пикрелейтед
Например
const getRandNum = (prevNum = -1) => {
const num = Math.floor(Math.random() * 100);
return prevNum !== num ? num : getRandNum(num);
}
const random1 = getRandNum();
const random2 = getRandNum(random1);
>HTML5 FileSystem
>На момент подготовки этой статьи FileSystem API был реализован только в браузере Google Chrome.
Самый простой и быстрый вариант
Поясни за >фуллстек
а что сложного в том, чтобы быть фуллстаком? Кстати, верстка - не так уж и легко, нужно быть внимательным к мелочам, пиксель влево, пиксель вправо, проверять на тысячи экранных разрешений, делать резиново, оптимизировать, выполнять больные фантазии дизайнеров.
YDKJS
чушь, под фуллстаком сейчас бекенд плюс фронтенд подразумевают. Конечно, супер хорошо ты будешь знать только что-то одно, но второе тоже надо знать.
Есть ссылка, которая отдает json http://na-bns.ncsoft.com/ingame/bs/character/data/pointeffects.json и я пытаюсь вытащить эту инфу способами на пикчах. По какой-то причине, браузер вообще не заходит в эту конструкцию ни с $.ajax, ни с $.get. Код здесь http://ideone.com/lgCacU
ХАЛП
div::selection { background: transparent; }
А чем их делать?
В этих кнопочках вся суть, дизайнерский выебос, сидел полдня пердохался, чтобы нормально работало. >>981182
Если надавить на кнопочку - она становится зажатой (windows 98 -стайл) и в центре экрана выползает (дисплей:блок) div с настройками и кнопочкой ok. После всех настроек нажимаем ок - div обратно заползает (дислпей:нон) и кнопочка отжимается.
Ты неправильно бампаешь, давай свой хуец :3
Чому?
Сосируй, лалка :3
А у тебя лицензионный генератор рандома?
Выпадает. Тебе везёт на тройку.
Не бомби, просто перевод оказался несколько странным и меня запутал. Ну да ладно.
У моргана, всмысли.
Объясните дауну. throw создаёт объект ошибки который передаётся в catch(e), (т.е "e" это и есть этот самый объект возвращенный throw) но что происходит когда мы в блоке catch создаём throw я так и не понял. Этот объект автоматически сохраняется как объект следующего try...catch? Чет я логики в этом не увидел, нахуя внешнему try...catch объект ошибки из какого-то другого блока кода? Или я всё таки неправильно понял как работает это фигня?
Throw не создает, а бросает. Catch - ловит. Throw в catch делает тоже самое: ты поймал исключение, возможно, как-то обработал его (логирование, например), а затем бросил его дальше.
Чет "бросить" принципиально отличается от того что я написал? Т.е в принципе всё правильно, throw просто запоминает ошибку из catch(e) и бросает её в следующий try...catch ?
но, >Чет я логики в этом не увидел, нахуя внешнему try...catch объект ошибки из какого-то другого блока кода? Или я всё таки неправильно понял как работает это фигня?
Ты что консоль то пишет смотрел хоть? У тебя скорее всего No 'Access-Control-Allow-Origin' header is present on the requested resource. выводится, вытащить ты его в принципе на фронте не сможешь. Ищи другой источник для данных, либо с локалхоста что-нибудь запрашивай.
Вот есть пусть к папке (c:\\temp, например) и надо вывести список всех файлов. Ещё лучше найти только изображения в указанной папке.
Ошибка бросается только на более высокий уровень. В том случае что ты написал, второй блок тру-кетча никогда не словит первую ошибку, он иожит словить только ту ошибку которую модет выкинуть функция readData(). А в первом блоке, после проброса ошибки в катче, она выйдет на уровень выше, в данном случае скорее всего просто выпадет в консоль.
>вытащить ты его в принципе на фронте не сможешь. Ищи другой источник для данных, либо с локалхоста что-нибудь запрашивай.
Да-да, вот только я уже вытащил всё. "Не сможешь", лол. Там нужно было один символ поменять в коде, и любой из присутствущих, кто делал ajax запросы должен это знать, но не знал НИКТО. Тут либо специально не хотели подсказывать, либо просто никто в треде не умеет в элементарный ajax, что сполна характеризует местных советчиков.
Вопрос. Мне сразу начинать читать литературу с гитхаб-фака или сначала попытаться что-то еще изучить, дабы все шло лучше? Хтмл? CSS? Что нужно чтоб эффективно вкатится в ваше братство хуевой оптимизации?
Тогда какой смысл было делать такой пример и указывать на то что ошибка выпадает в соседний блок?
> В том случае что ты написал, второй блок тру-кетча никогда не словит первую ошибку
>он можит словить только ту ошибку которую модет выкинуть функция readData()
Блять ты определись уже, словит он её или не словит, там только функция и внешний код, больше ничего нет.
здешние бояре jquery не используют, да и ископаемый способ (это я про jsonp) тоже могут не знать
Ой не рассказывай. Проблемы будут только в ие9 для подгрузки файлов аяксом нужны скрытые iframe и анальная боль, но сомневаюсь что он тебе нужен.
>ископаемый способ
Ну так почему мне не подсказали современный рабочий способ? Надо полагать, что ты такой знаешь, если считаешь это старым способом.
>не из браузера
А откуда?
Все будет зависеть от того, на чем ты будешь крутить свое говно. В твоем рантайме может быть библиотека для работы с файлами, а может не быть. Но в любом случае, даже если тебе не придется подключать никаких библиотек, это будет что-то стороннее как и джкуери или ноде.
https://docs.nativescript.org/cookbook/file-system
Я могу попробовать тебе объяснить. Но только для начала ты должен смириться с мыслью, что ты не прав, а тот анон выше (который говорил про невозможность) как раз таки прав, если речь идет об ajax (XMLHttpRequest)
Смотри, ты не можешь вытащить данные из-за cors. Так работает ajax. Заголовки в твоем случае должны правильно быть настроены на сервере, с фронта тебе не исправить это. Все что ты можешь, это поставить no-cors mode и получить ответ у которого не вытянуть тело
Но, на том серваке реализован древний костыль, которым можно обойти проблемму. И называется этот метод jsonp.
Если примитивно, то его суть сводится к тому, что мы обращаемся не по нашему адресу, а по адресу с параментром (обычно это ?jsonp=name). На месте name - имя функции, в которую сервер подставит свои данные. Далее мы создаем скрипт в body, с этой самой функцией, где будут данные обрабатываться.
Т.е. если мы обращаемся по http://na-bns.ncsoft.com/ingame/bs/character/data/pointeffects.json?jsonp=cats
то нам нужна функция cats.
Собственное jquery это и делает, когда ты ставишь jsonp и передаешь callback
А вот так это можно примитивно сделать ручками
http://jsbin.com/zaboyowude/edit?js,console
Вот собственно и все. Ты не использовал ajax, ты просто обошел ограничение другим методом получения данных.
Когда же сервера нормально настроены и отдают нужные заголовки, то проблем не возникают и люди юзают нативный fetch или надстройки. Это и является современным подходом.
У меня сегодня хорошее настроение, поэтому и решил написать.
А тебе надо меньше вешать ярлыки на анонов в треде и судить о их знаниях/навыках. К тому же все могут ошибаться/забывать/не знать чего-либо.
В том числе и я :)
Такие вот дела
пиздец, а где отдельные хтмл странички?
Вот тебе чертов извращенец. И да, сделай стили отдельно для нажатых и не нажатых кнопок
https://jsfiddle.net/gqzbx87s/
Кто вы блядь? К кому ты обращаешься?
Хорошо, благодарю. Раз у тебя хорошее настроение, то подскажи, как правильнее всего будет получить данные из огромного json на 170КБ (тот маленький был для примера) http://na-bns.ncsoft.com/ingame/bs/character/data/equipments.json?c=Virus
Мне не важно, будет ли это синхронный или асинхронный запрос, то есть пофигу, аякс или нет. Мне главное на страничке ввести в поле имя ?c=name и получить объект, на который я смогу ссылаться, как в json (например response.equipments.hand.detail.item.additional_ability_html).
Че эт оза стрингбилдер?))) Берешь и просто конкатенируешь плюсиком.
try {
sb.build(function(err, result){
try{
resp.writeHead(200, {"Content-type":"text/html"});
resp.write(result);
resp.end();
}
catch(e){
console.log(e);
}
console.log(err);
});
}
catch(e){
console.log(e);
}
Делаю по видео уроку, почему этот кусок кода кидает ошибку? https://www.youtube.com/watch?v=nuw48-u3Yrg
Короч, не знаю на сколько это красивое решение, но в пхп все решилось в две строки без каких-либо костылей.
Короче я просто не пойму как в зависимости от ошибки можно вызвать рекурсивно эту же функцию но с другими параметрами. Просто если назначать переменную в начале функции, то потом она опять переопределяется на ту же самую и я чет додуматься не могу как сделать правильно.
Отклеилось
бамп
>>982893
Дополнение к этому. Вот например одноразовую функцию я написал (пик). Но если и второй раз вводится неправильное значение, то выводится просто undefined, а хотелось бы чтобы функция опять вызывалась.
Не понял как автор так просто использует throw new Error() в условии, без try...catch? В теме по try...catch это использовался только внутри данной конструкции, а как работает вне её - не рассказывалось. Куда уходит этот объект и почему вообще выходит уведомление об ошибки если throw new Error() по словам автора просто бросает объект ошибки в catch, но по сути не показывает никакое окно уведомления.
бумп вопросу
Есть ли отличие модулей CommonJS от NodeJS? Или это одно и тоже? Экспорт по умолчанию module.exports = MyClass это NodeJS синтаксис?
Нужно ли разбираться с RequireJS в 2017?
Отличия я знаю, при чем здесь это? Мне нужно чтобы кто-то объяснил почему именно мой вариант не работает.
Значит не знаешь.
И вообще - кинь код не пастебине, я с твоего скрина должен переписывать чтобы у себя затестить?
Да.
Есть цикл for типа такого:
for (начало; условие; шаг) {
// ... тело цикла ...
}
Позже сказано, что можно пропустить любую часть for. Зачем тогда "начало" нужно? В смысле, и без него же цикл начнется? Можете своими словами объяснить суть вот этих начало-условие-шаг? Как вы этим на самом деле пользуетесь?
Вопрос вдогонку:
На сайте последняя часть for перед телом называется "шаг", а в книге - инкрементом. Всегда ли шаг = инкремент? Или это можеьт быть что-то еще?
Может быть и дикримент.
for (var i = 10; i > 5; i--) { alert(i); }
Так что шаг правильней.
>>983106
В начале ты объявляешь переменную, над которой орудуешь. Можешь не объявлять а взять уже готовую, например.
Алсо for не создает области видимости, так что если у тебя первый цикл с i, то второй обычно делают с j и дальше по алфавиту
Т.е. кроме ++ или -- там ничего другого быть не может? Например, (i * j)
>не создает области видимости
Я еще нуб и не понял вот этого. Переменная, созданная внутри первого for не видна для второго и нам придется объявлять новую переменную в другом цикле или, наоборот, еще как видна, но мы сознательно объявим/возьмем другую переменную что бы избежать путаницы и глюков?
Нагуглил onmouseover=function(event.pageX, event.pageY);
Главное - вначале спросить. А потом уже гуглить можно.
Суть области видимости не понятна. Хотя я только что прочел статью в википедии и, если правильно понял, то имеем вот что:
Внутри определенной области видимости мы привязываем некоторое имя к некоторой информации, т.е. объявляем переменную. Внутри этой конкретной области видимости по этому конкретному имени будем находить именно эту информацию.
Но! ВНЕ этой области (т.е. в какой-нибудь другой) за этим самым именем ничего не закреплено, т.е. в области №2 это имя ничего не означает. И мы можем этим же именем из области №1 обозначить другую информацию.
Поскольку for не создает область №2, имя переменной i в первом цикле может быть использовано по отношению с этой самой пеерменной в следующем цикле, и что бы эти циклы случайно не изменили значения друг друга, во второй цикл мы введем переменную с другим именем. Так?
Нода пхпшникам нахуй не нужна. Человек может говорить на разных языках - на русском, английском, немецком. Но думает он на одном языке. Так же и с погромированием. Те, кто вкатились в web через PHP - для них JS только вспомогательный инструмент. Те, кто через JS вкатился - не могут въехать до конца в PHP и придумывают себе всякие ноды.
Найс ярлычки
Собсна проблема такова. Имеется окружность. Имеются две дуги, одна из них вписана в окружность, вторая описана вокруг нее. (см. пикрилейтед). Дуги нарисованы на свг. Задача в том что бы пропорционально сокращать длину обоих дуг таким образом что бы они не пересекали окружность.
Проблема в том что я не знаю какое соотношение deltaX к deltaY должно быть что бы выполнить задачу и пропорции не нарушились.
Именно. Причем переменная i из первого цикла очень часто бывает нужна во втором, но уже не в той роли, что в первом цикле, например в алгоритмах обхода двумерных массивов
Пример из доков:
var cheerio = require('cheerio'),
$ = cheerio.load(SOME_HTML),
fruits = [];
$('li').each(function(i, elem) {
fruits = $(this).text();
});
fruits.join(', ');
Что в this находиться? Вроде бы elem === this, но нахуя?
https://jsbin.com/naxevubapo/edit?js,console,output - мое решение.
Не понял зачем нужно оборачивать функцию внутри setTimeout в анонимную? Почему нельзя изменить функцию onReady без этого? Ведь пока идёт таймер функция ещё не запущена и в этот момент (по логике) её можно изменить.
Алсо, в другом случае уже this - пустой объект.
Хуй знает чем конкретно контекст различается.
если ты делаешь то, о чем я подумал индикатор загрузки - то это можно сделать проще.
Например тебе нахуй не нужны 2 дуги, просто сделай круг и под ним дугу, визуально будет тоже самое что и твой пик. Дальше манипулируй этой подложкой. Другой вопрос если ты хочешь их пустить с разной скоростью. Алсо это не алгебра, а геометрия за 7 класс.
>>983315
Просто так, кому то так удобнее. А во втором случае используется стрелочная функция. В ней нет своего this, в примере используется this родителя.
Тот. Интерфейс разрабатываю.
4.2 версия
Должно выбрасывать в JavaScript Console в браузере.
В консоль, в общем, она там где-то есть.
В браузере.
да я пытаюсь принцип понять, кантор объяснял что эта херня только создает объект ошибки, но почему происходит сама передача этой ошибки
Ну или корутины.
Естественно нельзя. Если нужно инкапсулировать в переменной какую-то имплементацию используются функции.
Гринтекст случайно получился, он ничего не означает.
"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; тоже инкремент?
Да, раньше такое было.
Просто со временем моск привыкает думать "как программа" и все получается.
Откроется черная дыра и все распидорасит нахуй.
Вот, ты попробуй так сделать и посмотри что случится.
Да, сивол это просто символ.
i++, ++i, или i += 1 - это просто операторы языка предоставляющие синтаксический сахарок, чтобы не писать i = i + 1;
>Uncaught DOMException: Failed to set the 'f5.arr' property on 'Storage': Setting the value of 'f5.arr' exceeded the quota.
Если бы ты знал английский, то одно слово инкремент тебе избавило тебя от таких размышлений.
От n=0 до n=130 влазиет. 131 уже не пихается. Думаю, мне хватит.
Я знаю английский, придурок. Сильно палишься в треде.
Вот тут:
var parentEnable = this.enable; // (1)
this.enable = function() { // (2)
parentEnable(); // (3)
this.run(); // (4)
}
Ну, то есть, я уже протестил и понял, что так не получится, но хотелось бы понять, что именно будет передаваться в качестве контекста this?
Код:
https://github.com/vlad-elagin/test_dev
Превью:
https://vlad-elagin.github.io/test_prod/
Есть ещё день на допиливание, намечены пара косметических фиксов и первая попытка автоматизированного тестирования в моей карьере.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Set
Какое тогда ёобу мне использовать, чтобы хранить уникальные значения/получать/удалять числа с помощью встроенных методов. Не хочу копаться в массиве и splice юзать каждый раз.
Потому что в результате присвоения ты создаешь новый объект, а parentEnable хранит ссылку на старый.
Ты кокойто странній. Можешь использовать обічніе обїекті литералі. Можешь использовать Map.
О чем ты?
Сначала CoffeeMachine() запускается через конструктор, потом Machine() отдаёт ей свои методы, далее (уже имея методы) this.enable имеет this CoffeeMachine(). Никакого СТАРОГО this там нет.
Как сделать:
>>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) делает.
Что это за ёбаная хуита нахуй?
Это яваскрипт такой припижженный или браузер? Или может я чего не понимаю?
https://jsfiddle.net/p00Ldfx1/
Такое впечатление, что в p пишется не temp, а какие-то ссылки.
В LTS-версию Node не завезли async/await, а настраивать webpack/babel я и так заебался уже пиздец. Не хочу им ещё и код серверной стороны ими обрабатывать.
Пока Промисами пользуюсь.
Нет, нужно чтобы менялся массив в аргументе а не создавался новый.
>>984346
Ммм... идите нахуй, пидарасы.
Я сюда помощи зашел попросить, а вы какую-то хуйню пишете.
сап котятки, котонам респект
короче переустановил винду и при установке image-webpack-loader'а
такая шняга
https://jsfiddle.net/zv1djp4s/
кто нить сталкивался ?
Кто-нибудь может мне объяснить эту хуйню?
>Это два независимых списка.
Почему они независимы, это ведь просто ссылки?
>при этом у них есть общая структура list, которая включает три последних элемента каждого из них
Почему три последних? Ведь объект {value: 0, rest: list} и {value: -1, rest: list} тоже будут в этом списке.
Че это за хрень вообще, кто-то может доступным языком объяснить? Я даже не пойму что от меня автор хочет.
Это даже к самому js имеет опосредованное отношение. Такое впечатление что вообще первый раз в жизни кодишь.
>>984390
Ну вот, дошло?
Ты же просто ссылку на массив запихиваешь, а сам он у тебя выше один раз объявлен и ты его изменяешь, а так вак остальные на него ссылаются, то и там становятся таеие же значенич
Есть общая часть -лист. Мы ее в rest загнали в обоих случаях. Ну а лист у нас состоит из 3.
Господа фронтендеры, встал вопрос. Суть такова, написал бакенд с рест апи и даже набутстрапил шаблончик, теперь появилась нужда в каком нибудь простом жс фреймворке, чтобы дергать апи и выводить данные в мое охуительное spa. Так вот, есть ли простой фреймворк для этого? Чтобы безо всяких бейблов, вебпаков и т.п., просто подключаешь либу и ебашишь без задней мысли.
Простых нет. А зочем тебе спа, если ты уже на бэкенде накидал? или это пет-проджект?
Vue ты имеешь ввиду? Так-то он вроде норм, но что тогда взять в качестве рест клиента?
Это диплом на диплом в шарагу, жс это чисто для себя, просто не писал на нем особо, кроме простого сервера на ноде, хочу попробовать.
Хочу предостеречь вас, жс это говно. Разбирать чужой код, ебашить свой это такая запара вы себе не представляете.
Одно дело смастерить сайтик самому или по туториалам, другое дело разбираться и поддерживать написанное кем то.
Пока у вас есть время учитесь электрике, сварки, рисованию, а программирование уже не то, кодеров как собак нерезанных и хуй с ним свалишь за бугор если не гений (это не про двачеров).
С проектами на других языках получше обстоит дело, но тоже такое.
Хохлы и индусы демпингуют рынок, фриланс в 2к17 уже не работает.
Мыкола и Кумар готовы за 1$ в день ебашить и жить на мамкиных харчах на аутсорсе.
Чет я всё равно нихуя не понял. Если какие-нибудь источники (ссылочки) где можно подобное более подробно изучить, разжевано.
Что-то не так? Напомню тебе что я вообще в этом пока не разбирался. Откуда тогда у функций всякие методы вроде toString, apply, call, bind и тд и тп? По моей логике они берутся из глобального объекта window. Ну а как там на самом деле я не ебу, завтра почитаю.
Хочется на атомик-стуктуру кода, чтобы нужный стиль в определённый компонент.
Вот я точно знаю, что на работке мне надо будет jQuery к джанге с питоном в дополнении. Понимаю, что по-хорошему, надо бы сесть и полностью выучить основы языка, но надо было уже вчера, как это бывает.
Короче, не обломлюсь я, если тупо прочитаю книгу из шапки по jQuery, или шансов понять с наскоку ноль ?
Что хочешь, структура задается программистом, а не препроцессором. Stylus ебани.
JQuery проще учить чем жс. Проблема в том что нужно понимать как оно работает под капотом, с jquery этого узнать не получится.
>>984518
Все почти так. Только в виндоу хранятся эти самые прототипы, но сам виндоус не прототип.
До 380 раз проседают в сравнении с простыми классами, что касается UX. Тут как раз обсуждение идёт:
https://twitter.com/notwaldorf/status/859636431974739968
Ну и документ превращают в ебаную кашу, что касается DX.
Сам CSS имеет нормальные импорты, с HTTP2 больше нет поводов их не использовать. Кастом пропертис тоже охуенны и как раз дают тот самый контроль из JS. В веб-компонентах есть слоты и scoped-стили.
Вроде всё, что надо, есть прям искаропки, но всё это в удивительном мире, где нужно только эвергрины поддерживать, а мы же ебём мёртвых ослов.
Наверно лучший вариант сейчас — старое-доброе разделение реализаций по БЭМ с каким-нибудь пре-\пост-процессором.
Поделай отсюда все упражнения-примеры по порядку:
https://www.w3schools.com/jquery/default.asp
Ну и в документации оглавление посмотри, чтоб знать, где копать, если что.
http://api.jquery.com/
За день можно осилить. Если заказчик понимает, что лично ты не сениор-жиквери-плагин-интегратор, то такого должно хватить для начала.
Иди занимайся тем, что интересно. Глупо тратить время на остальное, жизнь итак коротка
https://habrahabr.ru/company/everydaytools/blog/322980/
Нет разницы, какие ты там курсики будешь дорчить, пока единственный выхлоп от них — время, проведённое по какому-то сценарию. Будь то коридоры в игре, серии в аниме или уроки в курсах — разницы нет.
Допустим тебе надо:
- Получить данные из хттп запроса
- Сделать запрос к базе и убедится, что там нет нужного
- Создать в базе новую запись
- Получить из базы все записи
- Отрендерить их
С коллбеками будет лапша.
Ну что ты бампаешь - это просто на "представить" задача. Какие ссылочки. Если хочешь - приду через пару часов с работы, нарисую даже тебе, может понятней будет
Надо на страничке нарисовать дерево. Есть два варианта:
1. Разбить страничку на верхнюю и нижнюю область (первая пикча). В верхней части дерево. В нижней (онмаусовер на узел в дереве) описание выделенного узла. Минусы - горизонтальная прокрутка уже на 1280. Нижняя часть тож где-то совсем внизу.
2. Разбить на левую и правую часть. В левой части дерево развернуть на 90°. В правой описание. В правой части много места, но в левой дерево не влазиет полность в экран и хош-не-хош вертикальная прокрутка будет.
Какой вариант менее говнист?
На втором не очень понятно, что это дерево.
Как эти прототипы понять вообще можно? Вот например первое же задания. В первом коде true, вроде всё понятно. Во втором тоже true т.к Rabbit.prototype меняет прототип уже после того как один экземпляр был создан. А ВОТ в третьем задании по какой-то причине false... как это понять вообще? Сказано же что prototype меняет свойство __proto__ для новых объектов. Так с чего вдруг оно поменяло прототип объекта даже после того как он был создан? Да и в последнем варианте кода тоже почему-то undefined хотя СНАЧАЛА в коде создается объект, и только после этого КОНСТРУКТОРУ указывается удаление из свойства-объекта prototype какого-то другого свойства.
Ну все правильно. Rabbit.prototype указывает на объект { eats: true }.
var rabbit = new Rabbit() устанавливает свойство __proto__ указывать на этот объект.
Затем меняют одно из свойств объекта, но сам-то объект остался тот же самый. Тут не в прототипах дело, а в том, что ты ссылки на объекты не понимаешь
Сумбурно объяснил, щас еще разок попробую.
Вынесем сначала этот объект отдельно:
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.
Так понятней?
Спасибо, щас ещё раз всё обдумаю и попробую дальше задания поделать. Я почему-то не думал о том что это именно ссылка на объект, думал что __proto__ у новых созданных объектов будет как-то скопировано. Получается что если мы наделали дохуя объектов, а потом прописали конструктору другой prototype, то у всех этих созданных объектов свойство __proto__ тоже поменяется?
Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется.
Тебе бы почитать сначала про указатели что-нибудь, на мой взгляд, это самый верный способ понять объекты.
Смотри, в книге той и так нарисовано было, но только изначальный лист.
Вряд ли конечно это лучше. Но вдруг.
Два списка:
1) зеленый
2) красный
У них есть общая структура из трех элементов - синий кружок
Собственно эта общая структура и есть наш изначальный список - list.
Я хз почему Кантор об этом нихуя не пишет и сразу задания какие-то даёт.
>
Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется.
Для меня пока вот это крайне сложно понять. Все задания которые были - там просто ссылка на объект либо обычные значения которые просто перезаписываются и всё.
Пока всё что я понял это что при создании функции из свойства prototype конструктора копируется ссылка в новые объекты которые создаются им. При этом если изменить Rabbit.prototype.eats то будет изменен тот же самый объект поэтому изменения произойдут во всех объектах созданных конструктором. А если функции-конструктору присвоить новое свойство prototype, то уже созданные функции оно не изменит, ибо в них ссылка на другой объект (который получается должен сохраниться где-то в памяти, но доступ к нему напрямую получить уже нельзя, ибо из prototype конструктора он был удалён, только если по отдельности у каждого объекта менять).
>Если prototype стал указывать на другой объект, то нет, __proto__ у уже созданных объектов не поменяется. Смотри, че происходит при создании: берется ссылка, лежащая в prototype, копируется и копия записывается в __proto__. Не объект по этой ссылке копируется, а именно сама ссылка копируется.
*фикс
бамп
Вот есть контейнер App, с двумя компонентами/контейнерами Page1, Page2 внутри.
Сначала писал отдельные экшены/редьюсеры для Page1/2, без оных у App.
Залип когда понадобилось нажатием на кнопку в Page1 триггернуть изменение в Page2. К какому компоненту это действие должно относиться?
>>984554
Импортинг класс неймов из .css?
Попробовал уже, дропнул из-за того все классы тогда нужно из .css маппить.
Да я вроде на словах как-то лучше понимаю, хз даже. Попытался в предыдущем посте объяснить свое понимание, вроде бы всё правильно. Иногда во всяких схемах из зарисовках можно что-то нарисовать по незнанию что в действительности в коде работает не так.
Нажатием на кнопку ты диспачишь экшн, на который среагирует тот редьюсер, который тебе нужно
Мне необходимо сокращать длину этой дуги в зависимости от некоторых параметров. Это должен получится SkillCheck из Dead By Daylight (пикрилейтед), в зависимости от одного параметра длина успешной зоны должна становиться меньше.
>>984862
>>984873
>>984881
Вот братишка, разобрал одно задание и как раз написал как это всё работает. https://jsbin.com/qazakadoco/edit?js,console,output
https://jsfiddle.net/bxx94x6b/
конкретно
строки 48 -> 59
так вот, почему то не появляются псевдоэлементы у инпутов
пик
где я проебался ?
Спасибо братишка. Я просто в целом не понял что {value: 0, rest: list} и {value: -1, rest: list} это два других объекта которые просто имеют ссылки на эту структуру и думал что это какие-то тоже вложенные объекты.
Можно ли получить доступ к камерами на мобильниках из-под сайтов?
И насколько iPhone и Android поддерживают PWA?
А еще лучше uuid поставить и генерить айдишник.
нахуй эти препроцессоры! пиши на ванильном css3, подключи постпроцессор какой нидь, подруби автопрефиксеры и не еби мозги. И да можешь инлайн стили для простых стилей без наворотов.
изменения на нажатие в page1 должен мутировать глобальный state ридакса. в свою очередь page 2 должен слушать ту часть глобального state-а, которую нужно. для прослушки отдельной части глобального state поможет компонент высшего порядка connect из либы react-redux. вот и все махинации. напрямую page1 и page2 не должны общаться. только state-ы и только props-ы, без свистоперделок и выебонов.
аргументируй, как мне юзать фичи того же sass типа амперсанда для БЭМ или @extend или @function
я постоянно использую много фич того же sass
Всю ночь пытался настроить CSS и JS, чтобы корректно отображалось дерево. Каждый час просыпался водички попить
Что важнее, быть уверенным, что ты ТРУ и ржать с "программистов" или зарабатывать $300 000 в секунду?
а чего тебе ржать то ? Любую сумму поставлю, что я решу любую задачу как академическую так и прикладную на python/js/C лучше чем ты
Пруфы?
чистота/поддерживаемость/горизонтальная масштабируемость кода по версии местных кукаретиков
хочешь давай гитхабами просто померяемся
есть струкрута типа такой
.input__wrapper>.input__field
у .input__wrapper есть :after который должен меняться при фокусе .input__field как бы такое организовать ?
Поклацать: https://vasilenkoalex.github.io/test-app-for-empeek1/index.html#!/home
Посмотреть исходники :https://github.com/VasilenkoAlex/Test-application-for-Empeek (тут же в ридми задание).
Естественно меня не взяли с обоснованием: "разделяет на мелкие компоненты - бесполезно. Модули не умеет использовать, но воообще видно что по стайл гайду джона папы".
Давал на ревью перед отправкой знакомому мидлу - сказал на четыре из пяти, мелкие компоненты збс, расширяемость все дела, кто прав?
Лучше скажи, где нашел партнеров для гитхабского штурвала (когда друг друга фолловите и звездочки ставите).
У меня нет аккаунта в социальной сети "гитхаб", я же не социоблядь.
Иди нахуй, утомил уже.
Не знаю ангуляр и в принципе лень читать твои сырцы, но вот с этого
>разделяет на мелкие компоненты - бесполезно
просто дристанул. Вангую, что ты только выиграл, не попав в подобную говноконтору.
Если кликнуть на div, срабатывает функция onclick="addevent();" и к канвасу добавляется евентлистенер, который передает в функцию funct координаты мыши, а та в свою очередь рисует квадратик на канвасе. Если еще раз кликнуть на div - должен удалиться евент листенер и квадратик остаться в том месте, где кликнул. Но евент листенер не удаляется. Чому? Вот тут код: http://jratva.com/test.html
у тебя хоть в ту ветку которая после else, программа заходит? Чет не понял условия.
Разобрался.
Заходит. Там ошибка была в том, что funct создается я в addevent и поэтому считается как-бы другой функцией, не той, что передана в еддевентлистенер.
Кстати, нет смысла писать в if (x==false), если у тебя переменная х подразумевает только булевые значения, то пиши if (x)
Ну да. Я там дикий тупняк словил, когда написал if(!x) - не понятно, что там в ифе происходит и в какую ветку залазием. Начал расписывать. if (x!=false) - так нагляднее
Я всегда пользуюсь простым правилом, чтобы определить, нужно ли разбивать компонент на несколько: нужно = позволит избежать дупликации кода || имеет смысл с точки зрения предметной области
Мне просто больно вместо няшных классов делать объекты или о боже прототипирование. Я даже функцию из родительской функции вызвать не могу. А в пхп бы просто класс создал и вызвал из него метод. Как же я ненавижу жс
Просто слезы на глаза наворачиваются от "ооп" на жс.
пхпшик изнасилованный жсом
А что не так-то? Тебе привата так сильно не хватает? Расслабься, это у всех так поначалу
именно
Я блять и не собирался нихуя приватить, это ты тут начал выступать про приват в жс. Еще и обзывается почем зря
ржу с пхп дауна кек
Поверь, пройдет месяц и ты прозреешь. Алсо, ООП уровня жабы с абстрактными синглтонами фабрик фасолин в жс никто не пишет. Используй объекты там, где они естественны, а где естественны функции - используй функции, и все будет хорошо.
да нет никакого ооп в жс имбицилы, учитесь в прототипы
дизайн + пр
начитался охуительных смотрю fl.ru -> ебать, 20 тысяч за сайт под ключ с современным дизайном там обычно работы на два - три месяца на галере я бы под 200 получил за ту же работу
я хуй знает, какие там объекты в фронтенде можно лепить? типа объект "анимация скроллбара" и в нем клик методы?
мне вообще сказали нахуярить функции как в Жаве или сишарпе по событию. Отдельно функции на клик, отдельно на хувер, отдельно на скролл. Но они в такую лапшу разрослись, что яебу так комбинировать.
фриланс задемпингован индусами, школьниками, инвалидами и бомже-студиями из мухосраней, не рекомендую.
типа как у этого >>984941
Ну правильно тебе все сказали. События - самый удобный способ управления control flow, и главное - технологие- и языконезависимый. А в лапшу оно разрастается, потому что ты размазываешь стэйт по всему коду, а надо держать в одном месте. Гугли redux
Пояснить за rx можешь?
Вот я посмотрел на redux-observable, который собственно rx использует.
Не зашло как-то. На генераторах в redux-saga работать с сайдэффектами мне лично было поприятней
Ну и по звездам уступает, куда ж без них.
Расскажи про профиты, сильные/слабые стороны из опыта если можешь.
Ну тогда ебись с локальными стейтами, нахуяривай регистри, заслуженно получая по ебалу каждый раз, когда забудешь вызвать какой-нибудь update или notify
допустим есть апи сервиса погоды (который отдает json файл, больше я пока про апи ничего не знаю(, я так понимаю, с помощью реакта оно парсится и передается в компоненты, а там уже идет их рендер, верно?
Неверно.
1. Уверен, что api отдает именно json-файл, а не просто json-объект?
2. React - это библиотека для наебенивания вьюшек. Какие именно проперти ты будешь ему подсовывать, откуда ты их будешь брать, как ты их будешь использовать - это твоя проблема, а не реакта. Так что с помощью реакта ничего ни вот что не парсится.
3. Получать свой json можешь, например, fetch-ем. Как парсить - а я ебу? Как данные в json упакованы, так и парсить, я откуда знаю, что тебе там надо.
ты о чем вообще? я клиент делаю. фронтенд
да, спарсил джсон и распихал по пропсам
Нихуя не понял.
Всё у меня хранится в сторе редукса, константы(ну, типы экшенов)/экшены/редьюсеры разделены на 2 компонента.
И вот как мне их взаимодействие организовывать? Вариант который я вижу: экшн "отправляющего" компонента диспатчит действие определённого типа, а редьюсер "принимающий" реагирует. Но тогда будет константа, относящаяся к обоим компонентами, что как мне казалось неправильно.
Вот пидарас блять, кнопочки он в редаксе нажимает блять
А диспачить кто будет?Экшоны тебе накой?
Ты редьюсеры для мамки своей писал?
Вчера сдал такое же задание на проверку. Вот уж не думал, что конкурента на двачике встречу.
ты из хохляндии?
Мда уж, офигеть конечно мы по-разному с тобой сделали, несмотря даже на то что ты вебпак прикрутил. Мб у меня опыта не хватает, но почему ты сделал так, как сделал? нгредакс, куча стейтов, куча ооп или хз что это? Какой бекграунд у тебя? Не забудь запостить сюда их фидбек.
Юзай бабель или страдай.
>нгредакс
Потому что я реактоблядь и иначе не умею организовать код. Сначала я думал без редакса сделать, но контроллеры быстро разрослись в размерах, спагетти код пошел. в качестве плюса сохранение состояния приложения в локалсторейдж в 2 строках кода.
>куча стейтов
Из-за редакса, пробрасывание его стейта в качестве параметров компоненту.
>куча ооп
Прост чтоб показать, что я могу в использование ес6 классов с ангуляром.
>вебпак прикрутил
Тоже необязательно, но, опять же, показать, что я владею вебпаком (использую уже настроенный из бойлерплейта).
Фидбека ещё нет, мне дали срок до 5 числа, думал, что у всех так, а потом уже будут проверять все сданные задания.
Бэкграунд - около полутора лет работы с жс, чуть меньше года работы с фреймворками.
>нгредакс
А то что у тебя роутинга нет? Тип назад/вперед не понажимать, что по этому поводу думаешь?
Плюс еще если в комментах запостить длинный текст без пробелов - вылезет за границы бокса, есть збс свойств цсс - оверфлоу-врап.
Там роутинга нет по заданию, одна страница. Вообще неплохо было бы сделать и другую, чтобы, опять же, похвастаться, но мне впадлец стало. Или ты имел в виду синхронизацию стейта и браузерхистори?
А с текстареа проебался, да.
Ну, насчет роутинга там просто ничего не сказано, но по идее в любом спа ты должен иметь возможность вперед/назад в браузере нажимать и осмысленные урл кидать, имхо лучшеэтим выебываться чем вебпаком.
Нашел у тебя кайнд оф баг, который у себя иксил - создаешь допустим 10 айтем. Потом удаляешь первые девять, а если открыть комменты бывшего десятого заново - всё еще будет будет надписьь "комментс #10
"
Согласен насчет роутинга, но уже поздно.
А это не баг, каждому айтему присваивается уникальный айди, который и выводится в заголовок панели с комментариями, а не его порядковый номер.
Но тогда если расценивать это как реальное приложение - у тебя айдишник никогдане обнулится и через год "использования" этого аппа я буду создавать итем с миллиоными номерами, вроде не очень клево.
От использования зависит же. Если это crm для мелкой компании, где документация не играет особой роли, то можно было бы и обнуляемые сделать, наверное. А в серьёзных компаниях идут на такую жертву. Видел, сколько цифр в номере накладной в Новой Почте, например?
Да, вероятно ты прав
redux обязательно. это основная приблуда реакта.
Проекты юбые, какие придумаешь или найдешь идею.
Для стейт-менеджмента есть redux и mobx. Redux популярней и можно сказать выбор по умолчанию.
НО
Прежде чем что-то использовать или добавлять ты должен понимать для чего оно тебе надо. Без этого будет возникать лишняя куча вопросов и не будет нормального понимания. А без понимания получится жалкое зрелище, а не код.
Дерзай.
Нахуя тебе фреймворк(значение знаешь?) для дерганья апи? Ебашь полифил для fetch и в путь
Недавно переделал флексопедерастию дивами на одном прожекте на ламповую таблицу, потому что лучше и удобнее таблиц ничего нет.
Напоминаю, что HTML изначально был предназначен для описания документа, а не его внешнего вида.
Ключевое слово "table" это значит таблица и ничего больше, и браузер должен и обязан (вроде как, хехе) понимать это дословно, т.е. в точности так, как написано.
Ключевое слово "table" не значит вёрстка, Web 1.0 и прошлый век.
для табличных данных
>Чтобы безо всяких бейблов, вебпаков и т.п., просто подключаешь либу и ебашишь без задней мысли.
Обмазаться жиквери не пробовал?
>Мыкола будет получать за щеку, вот это вполне вероятно
Ему будут доплачивать за принятие, не забывай.
А всё, что будешь принимать ты, это обоссаный мамкин борщ.
Фу, какой извращенец.
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.
поздравляю
вкусовщина же. Пояснить могу но он http://stackoverflow.com/questions/40021344/why-use-redux-observable-over-redux-saga
сделал лучше
rx пытается унифицировать работу с евент драйвен программированием
Нет. Только до уровня создания простейших слайдеров. Для зароботка - как минимум месяцев десять в таком режиме.
ой не пизди
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) сразу возвращает готовую "утроенную" строку?
Уже вроде разобрался немного. Но вроде this в этот момент является объектом, в который (куда-то) записывается это строка. Так как можно использовать полностью сам объект String в join? Пусть даже в нём внутри хранится эта строка в виде примитива, почему тогда вызов не через this.value например, где value то свойство в которое записывается наше "ля" при вызове конструктора. Как-то пиздец странно.
Я нихуя не понял, о чем ты.
Внутри функции this может принимать либо значение window / undefined (в зависимости от того, включен ли strict mode) в случае, когда функция вызывается сама по себе, либо значение объекта, в контексте которого происходит вызов.
func() { тут this = window / undefined }
obj.func() { тут this = obj }
>Computer & Programming fundamentals
Ничего не ясно с этим требованием, что спрашивать будут?
Когда вызываешь метод на строке, то строка временно оборачивается в объект к которому и применяется этот метод, потом результат возвращается а временных объект удаляется. Именно этот временный объект и является тем this в аргументе .join. Но как так получается что что this в join превращается в строку ля, ведь возвращается именно этот временный объект-обертка.
Я наверное непонятно выразился сорян. Кантор пишет - "Допустимо изменение прототипа встроенных объектов", а пример кода (который ниже на скрине) изменяет не прототип встроенного объекта, а просто назначает конструктору Object новое свойство. Прототип Object.prototype здесь никак не был задействован.
Так напиши свою функцию работающую на генераторах, аналогичную async/await, она очень простая.
Axios
Очевидно, потому, что join использует строковое представление своего аргумента.
>>986661
Ну и в чем тогда проблема?
Уже отвечали, занимайся тем, что нравится
Не понял. Зачем? Это же строка.
У тебя result - строка, какого хуя ты пытаешься что-то в нее записать через bracket notation? Так не работает, через скобки можно читать значения из строки, но не записывать.
>какого хуя ты пытаешься что-то в нее записать через bracket notation? Так не работает
>через скобки можно читать значения из строки
Ну, я подумал, что все-таки можно и записывать по аналогии с массивом. Не помню, может, где-то раньше в главе про строки такое и говорилось, но сейчас вы мне действительно новость сказали. Сейчас вот все хорошо работает и без concat, хз зачем усложнять.
Я серьезно, не помню в книге такого нюанса. Запишу это в тетрадь в конспект. Спасибо.
Строка это строка, а массив это массив. Юзай charAt чтоб не путать, или просто хардкорно запомни. А так обращайся чо.
>Очевидно, потому, что join использует строковое представление своего аргумента.
Т.е когда объект String передаётся в join, то срабатывает его метод .toString передающих строку? Как-то хуй знает.
>Ну и в чем тогда проблема?
Ну в том что речь идёт об изменении ПРОТОТИПА встроенного конструктора, а в коде меняет не прототип.
>Т.е когда объект String передаётся в join, то срабатывает его метод .toString передающих строку?
Ничего там не "срабатывает", просто функция join написана таким образом, что перегоняет переданный аргумент в строковое представление. arg = String(arg) или что-то такое.
Да. Если ты верстала с опытом, то можешь очень быстро закатиться.
Хуйня вопрос, делай следующее:
- ставишь на комп npm и ноду
- ставишь бабел и пишешь бабелконфиг
- ставишь вебпак и вебпак-мерж
- заебениваешь два скрипта для нпм, чтобы один собирал под дев, второй под прод
- пишешь основной вебпаковский конфиг с настройками, которые должны применяться и к дев, и к прод сборке
- пишешь два специальных конфига под дев и прод, подцепляешь их при помощи webpack-merge и NODE_ENV
- в базовом конфиге: рантайм-зависимости, правила резолвинга модулей и файлов, бабель-лоадер
- в деве: настройки для вебпак-дев-сервера
- в проде: правила битья кода на чанки, углифай, критикал сиэсэс
Отсос браузерифай + галп + бабель-кли + моча + говно, которые сосут хуй по жизни, тебе обеспечен, и уже через полгода ты будешь изучать такие дозы фреймворков, что maven будет тратить часы на сборку проекта, увидев размер твоего node_modules
На так есть же модули, сам решай что экспортировать. Не экспортированные функции и будут действовать как приватные методы.
>>985424
> функциональном жаваскрипте.
Функцию в функцию передать ты и в PHP можешь, ровно как и вернуть функцию из функции. Но это ведь не делает его функциональным, ровно как и JavaScript.
>>987021
> ставишь на комп npm
Дед, пора уже yarn ставить.
Ты про оф документацию? Я читаю, но пока ничего не понимаю.
>>987021
Я ничего не понял из того что ты написал.
>Дед, пора уже yarn ставить.
Я не дед, я ньюфаня во фронтенде, поясни за ярн, какие преимущества он сможет мне дать? Юзаю npm для 1) установки пакетов; 2) запуска скриптов, никаких других пожеланий к нему не возникало
>Ты про оф документацию? Я читаю, но пока ничего не понимаю.
Так потому что надо не читать, а делать что-то. Начни писать хотя бы тот же остоебенивший туду-лист со связкой react + redux, и сразу же добровольно-принудительно познакомишься с кучей полезностей.
>Я ничего не понял из того что ты написал.
Да я шуткануть вообще пытался, скрестив две известные пасты про кодерство
Я делаю, но я не понимаю как делать. Вот например, у меня есть файл 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/
Спасибо, анон, выручил.
Раз уж я сегодня добрый, можешь глянуть тут мой вебпак-конфиг, чтобы, смотря на него, написать свой и разобраться: https://pastebin.com/6mvjg70J
На ангуляре уже был написан MVP проект и скоро будет сдан заказчику.
Что понравилось в ангуляре:
– тайпскрипт, динамическая undefined джаваскрипт параша не нужна хотя тс толком не защищает
– целостный фреймворк с роутингами и т.д., чем-то напомнило божественный спринг, где все есть из коробочки
– отделение html/css говна, в которое я почти не лез, от
ts-логики
– angular-cli
– директивы типа *ngFor какие-то ущербные, хотя не знаю, как это имплементируется в реакте
Не понравилось:
– слишком дохуя повторяющегося кода, даже учитывая, что я джавист
– редукс прилеплен как-то сбоку, вообще какое-то странное озущение, будто фреймворк переписывался раз шесть и все продумывалось второпях
– ts не такая уж панацея
Какие аргументы у реакт-адептов?
Дополнение: во фронтенд-болото глубоко входить не хочу. Планирую задрочить один фреймворк и мониторить исключительно его изменения ближайшие года.
> слишком дохуя повторяющегося кода,
в реакте тоже самое а в более общем варианте в любой технологии задроченой под работу с UI
будто в qt не много повторящегося кода
> редукс прилеплен как-то сбоку
лол
> Какие аргументы у реакт-адептов?
реакт ебет и будет ебать второй ангуляр комьюнити уже сделало свой выбор, ентерпрайзники скорее остануться на 1.5 ибо легаси а все новое будут писать на react
как это сделали сбербанк и билайн
https://www.googleapis.com/customsearch/v1?key=мойключ&cx=017576662512468239146:omuauf_lfve&q=собака
https://pastebin.com/uMawapLX
Сам по себе объект в строковое представление нормально не перегонится, для этого у него должен быть метод .toString который делает подобное преобразование.
Ну ты совсем тупой или как? Т.е. тебя раздирают сомнения, есть ли у объекта String метод toString? Доебал уже.
Меня разрывают сомнения как происходит внутреннее преобразование, т.е куда записывается значение строки при обертывании в объект String.
Хуйней какой-то страдаешь, срсли. Строка - это просто строка, зачем тебе еботня с тем, боксед или не боксед там что-то внутри
Хотелось бы иметь полное понимание, а абстракций ебаных итак хватает.
https://www.ecma-international.org/ecma-262/7.0/index.html#sec-properties-of-the-string-prototype-object
В документации это свойство называется [[StringData]], в хроме - [[PrimitiveValue]], хуй знает чому, особенности реализации браузера наверн, не суть.
Затем, когда нужно преобразование, toString или valueOf читает это свойство и вуаля.
Первый раз он не видит, а второй раз видит. Так с любым первым методом.
Вот само задание, если нужно будет - https://learn.javascript.ru/class-inheritance#класс-часы
Тебе не вызывать надо в сетинтервале а передать функцию, которая вызываться будет.
Короче ты не понимаешь а) как работает сетинтервал
б) что делает аплай. Или просто натупил
При исправлении на bind должно было заработать
Вы видите копию треда, сохраненную 23 мая 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.