• Как создать кнопку поделиться ссылкой?

    @titelhalter
    Если хотите поделиться в соцсетях и сделать это с помощью нативных методов, то есть share api, все делается в пару строк, но поддержка только на мобильных устройствах, и все равно не 100%. Для остальных придется писать fallback
  • Какую зарплату просить на собеседовании junior frontend разработчику в Москве?

    @titelhalter
    Андрей Если это так, то что-нибудь сможете найти. Но я не зря упомянул про то, что многие переоценивают свои силы. Я думаю, что большинство, пришедших к нам кандидатов, увидев этот абстрактный список, тоже подумали бы, что ничего сложного нет, и они все знают. Реальность намного суровее: собеседование - это стресс, будет сложнее вспоминать, не будет возможности подглядывать в специификации, вопросы заранее будут неизвестны. Увидь я свой список пару лет назад, решил бы, что смогу на все ответить. Но сейчас я уже понимаю, что нет, не смог бы.

    В том же вопросе про замыкание не написан вопрос прямо: "как работает замыкание здесь". Есть кусок кода, в котором есть и промисы, и асинхронный код, и async/await, и замыкание. И мы ожидаем, что соискатель сможет увидеть его там, распутать клубок, рассказать, что и как работает.
  • Какую зарплату просить на собеседовании junior frontend разработчику в Москве?

    @titelhalter
    sim3x я бы все же сказал, что знание фреймворка стоит на позиции 1)) Для фронтендера самое важное, по моему мнению, знание js. Однако стоит понимать, что речь идет не о знание синтаксиса или основных api, а именно о глубоком понимание процесса: приведение типов, замыкание, асинхронность, event loop, знание и умение применять основные паттерны и т.д. При уверенном знание js любые фреймворки осваиваются достаточно быстро. Достаточно быстро, чтобы устроиться джуном.

    Мы сейчас в процессе переписывания проекта на один из фреймворков, и набираем людей. Опыт работы с фреймворком плюс, но не обязательное условие. На собеседовании спрашиваем:
    1. оптимизация
    2. event loop
    3. Promise api, async/await
    4. Замыкания
    5. Коллекции map, set. Здесь же смотрим, знает ли кандидат про сравнение по значению и ссылке
    6. destructuring assignment (больше со стороны установки значений по умолчанию, проверки на undefined)
    7. Задача на алгоритмы. Не совсем алгоритм Дейкстры, но его знание сильно упростит поиск правильного ответа.
    Пока на все вопросы не ответил ни один, но мы взяли несколько человек. По зарплате не подскажу.
    В основном кандидаты переоценивают свои силы. Был один, у которого желаемая зарплата в резюме 75 т.р. (дело в Москве), но до наших вопросом мы даже не дошли, потому что он не смог назвать хотя бы три метода из Array api, примитивы js, не знал, что такое git и ide, не смог сказать, зачем нужен doctype.

    При действительно хорошем уровне знания js, css, html в Москве реально устроиться джуном на 50 т.р. (мое мнение).
  • Как отложить переход по ссылке (закрытие страницы), чтобы успела проиграть анимация перехода?

    @titelhalter
    Можно по клику на ссылке предотвратить действие по умолчанию, выполнить анимацию и перейти программно. Можно повесить событие на beforeunload, тоже должно помочь
  • Как организовать навигацию через vue-router?

    @titelhalter
    Не за что. Опубликовал в ответе
  • Как организовать навигацию через vue-router?

    @titelhalter
    Август Милович, Во vue router Вы можете создавать пути с параметрами, например:
    {
      path: '/board/:id',
         name: 'Board',
         component: board
    }


    В самом шаблоне
    <li><router-link :to=`/board/${нужный id}`>Board02</router-link></li>


    Внутри компонента board можно получить значение параметра
    $router.currentRoute.params.id

    По значению этого параметра получайте данные для построения доски. Либо с сервера, либо храните данные в localStorage, либо еще как-то
  • Почему в консоли вылезает ошибка в консоли TypeError: Cannot read property '' of null, если перебирать многомерный массив и обращаться к его элемента?

    @titelhalter
    Sp1keazyYT, Потому что код выполняет последовательно все операции, которые Вы ему задали. В js пока нет optional chaning, чтобы игнорировать обращения к методам/свойствам, если они отсутствую в объекте. Ваш алгоритм сейчас работает буквально так: перебираем массив, из каждого элемента берем id, ищем с помощью querySelector DOM элемент, (querySelector вернет либо найденный элемент, либо null, если такого нет), у полученного результата вызовем метод setUserAgentOverride. У null в прототипе такого метода естественно нет, вот скрипт и падает с ошибкой. Соответственно, в зависимости от целей, Вам нужно либо проверять наличие нужного DOM узла, примерно так
    const node = document.querySelector(selector);
    if (node  != null) {
       node.setUserAgentOverride(data)
    }

    либо вызывать break после первого найденного, либо еще что-то.
    Но вообще, скорее всего, Вам и не нужно перебирать весь массив. Например, если Вам нужно найти элемент в массиве, с id которого Вы сможете найти DOM элемент, то достаточно воспользоваться методом Array.prototype.find.
  • Правда ли, что сейчас так сложно найти работу?

    @titelhalter
    sergey1989 Я не знаю, но думаю, что не очень много
  • Правда ли, что сейчас так сложно найти работу?

    @titelhalter
    Рональд Макдональд
    Угу, сидит такой CEO и говорит: "А давайте ввалим пару миллионов в переписку мобильной версии сайта на какой-нибудь овременный фреймворк (react, vue, angular - неважно), чёт наш фреймворк недостаточно моднявый". Так не бывает.

    Иногда бывает, планируем начать процесс миграции с jquery на react.

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

    Возможно отчасти это и так, но с итоговым выводом все равно не могу согласиться
  • Правда ли, что сейчас так сложно найти работу?

    @titelhalter
    Рональд Макдональд Я понимаю, что веб сильно дифференцирован, есть простые лендинги с парой каруселей и анимаций, но есть, например, крупная федеральная компания, интернет-магазин, есть у нее сайт, мсайт и нативные приложения. Для приложений есть свой api, который присылает json, который уже там обрабатывается. И вот принимается решение переделать мсайт на современный фреймворк (react, vue, angular - неважно). И чем будет отличаться работа веб-программиста от работы разработчика приложения? Api используют один и тот же, вся логика пишется на клиенте. Да одни будут использовать условный Java, Kotlin, Swift, а другие - JS. У одних будет html и css, у других - свои инструменты
  • Как искать в массиве js по id?

    @titelhalter
    vm.roles.find(x => x.id === vm.filter.roleId).map(x => x.name);

    Тут как минимум ошибка в том, что find возвращает найденный элемент или undefined, если ничего не найдено, а map метод для массива. Если x - объект, то
    vm.roles.find(x => x.id === vm.filter.roleId).name
  • Как преобразовать строку в число?

    @titelhalter
    Не знаю, насколько актуально для автора, но такое выражение превратит "-57" в 57. Лучше что-то вроде/[^-?\d+\.?\d+?]/g
  • Как в шаблонизаторе jsrender в цикле обратиться к свойству?

    @titelhalter
    Еще можно добавить, что если нужно подняться не в корень объекта, а на один-два уровня при большой вложенности, то можно использовать свойство parent.
    #parent.названиеСвойства - на один уровень вверх
    #parent.parent.названиеСвойства - на два
  • Как добавить условия в калькулятор?

    @titelhalter
    Могу только указать направление, как я бы это сделал.
    1. Не нужно два десятка переменных. Они все логически связаны, создайте общий объект
    const price = {
       roof: {
       },
       wall: {
       },
        etc...
    }

    2. Сейчас у Вас куча лишних if`ов. Добавьте всем какой-нибудь общий класс, например j-price, и по клику нему обновляйте итоговую цену. Данные для обновления можно записать в data-attribute, из них доставать значение для пути по объекту price.

    Это общая идея, какие-то моменты станут понятны уже во время реализации.

    К слову, у Вас есть избыточная проверка
    $("#per_et_3 img").hasClass("active") == true

    hasClass уже возвращает boolean, нет нужны сравнивать его с true
  • Почему скрипт перезагружает страницу?

    @titelhalter
    Теоретически клик может всплывать и триггерить событие на другом объекте. Можно попробовать e.stop​Propagation()
  • Почему не работает Jquery код?

    @titelhalter
    Иван Актовегин
    & хорошо работает и делает то что мне надо

    В корне неверное утверждение, потому что Ваш код пока работает, но это решение не стабильно. Уже привел пример, что, если получится конструкция if (2 & 4), то Вы к своему удивление словите false, хотя в логическом контексте Вы будете ожидать true. Что собственно и будет, если написать (2 && 4). И вот чтобы в этой ситуации не бежать на toster, необходимо понимать, чем отличаются логические операторы от побитовых. Кроме того понимание логических операторов откроет для Вас новые возможности типо callback && callback().
    Разумеется Вас никто не заставляет понимать разницу, но это должно быть в Ваших же интересах, потому что позволит лучше понимать происходящие процессы => писать более стабильный код => участвовать в сложных проектах => больше зарабатывать в конце концов
  • Почему не работает Jquery код?

    @titelhalter
    Иван Актовегин Это пока работает, а Вы попробуйте console.log((4 & 2) == false) и console.log((4 && 2) == false) и можете сильно удивиться. Если несколько человек написали, что это может быть важно, то стоит обратить внимание