• Какая разница между фронт-энд разработчиком и разработчиком JS?

    @LJ322
    Всё зависит исключительно от требований в должности, которые различаются от компании к компании.

    Frontend разработчик - человек, который работает с фронтом и чаще всего с каким-то фреймворком. А JS разработчик более обширное понятие. Где-то JS разработчик это верстальщик, который обработчики на кнопки вешает. Где-то это Node.js разработчик, пишущий бэк. Где-то это Fullstack, который и фронт и бэк пишет на JS. А где-то это обыкновенный фронт
    Ответ написан
    Комментировать
  • Как передавать в методы параметром данные из data vue?

    @LJ322
    Обращайтесь к ним либо внутри метода
    someFunction(el) {
      console.log(this.str)
    }

    либо в аргумент кидайте, когда метод вызываете someFunction(this.str)
    Ответ написан
  • Как поменять цвет иконки соц. сетей по центре исключительно через css, при наведении?

    @LJ322
    Иконка состоит из окружности вокруг и элемента, который описывает внешнюю фигуру. Грубо говоря, стрелка по центру это не иконка, а то, что осталось. И принимает она цвет background своего родителя. Можно добавить обёртку для svg и менять у неё background-color. Либо попросить дизайнера отрисовать иконку по-другому
    Ответ написан
    Комментировать
  • Как импортировать svg из node_modules?

    @LJ322
    Вы svg хотите как компоненты импортировать? Тогда нужно загрузчик поставить vite-svg-loader
    Ответ написан
    1 комментарий
  • Существуют ли сервисы по выявлению дубликатов css кода?

    @LJ322
    Stylelint
    Он либо сам подсветит, либо в шторме к нему можно будет обратиться через CTRL+ALT+SHIFT+I и выбрать stylelint
    Ответ написан
    3 комментария
  • Как работает этот код? Почему у функции появляется метод?

    @LJ322
    const cancelable = fn => { // Создаётся функция cancelable, которая принимает функцию и сохраняет в переменную fn
      const wrapper = (...args) =>{ // Создаётся функция-обёртка, которая принимает любой набор аргументов
        if(fn) return fn(...args) // Если в cancelable была передана функция, то вызывает её с необходимыми аргументами
      }
    
      wrapper.cancel = () => fn = null // Добавляет свойство во wrapper для очистки переменной fn 
    
      return wrapper // Возвращает обёртку
    }
    
    const fn = par =>{ // Функция, которая оборачивается в декоратор со своим аргументом
      console.log('Function called, par:',par)
    }
    
    const f = cancelable(fn) // Создаёт обёртку вокруг fn
    
    f('first') // Function called, par: first
    f.cancel() // fn является переменной внутри cancelable, здесь мы её обнуляем
    f('second') // Ничего не выводит, потому что условие у wrapper отрабатывает, только если функция есть
    Ответ написан
    Комментировать
  • Как заменить картинку при помощи скрипта, после выполнения условия?

    @LJ322
    У вас на лейбле класс, а не айдишник висит. И вы неправильно к потомку обращаетесь:
    let inputs = document.querySelectorAll('.input__file');
    inputs.forEach(function (input) {
      input.addEventListener('change', function() {
        let label = this.nextElementSibling;
        let image = label.children[0]
        image.style.display = "none:
      }
    );
    Ответ написан
  • Как сделать появление фона у header при прокрутке вниз на js?

    @LJ322
    Если прямо в лоб решать:
    const header = document.querySelector('.header'); // Здесь класс вашей шапки
    window.addEventListener('scroll', function() {
      if (window.scrollY >= 54) {
        header.classList.addClass('header--scrolling'); // Добавить класс, который будет менять стили
      } else {
        header.classList.removeClass('header--scrolling'); // Убрать
      }
    });
    Ответ написан
    Комментировать
  • Как выглядит адекватный путь изучения JS на позицию джуна во фронтедне с нуля?

    @LJ322
    Продолжай изучать JS по Кантору. В конце каждой секции есть задачи, выполняй все, не важно какой они сложности. По Proxy, Reflect и регуляркам можно вскользь пробежаться и не заострять внимание. Параллельно делай задачи на codewars, hackerrank, leetcode. Чем больше, тем лучше. Если в программировании с нуля, то желательно тысячу часов набить хотя бы.

    Когда простые задачи начнёшь щёлкать как орешки, начинай читать про структуры данных и алгоритмы. По структурам данных можно в принципе любой источник брать, там всё одинаковое. Можешь глянуть вот эту репу. По алгоритмам советую посмотреть Яндекс. Там только базовые примеры разбираются, но на начальном этапе этого хватит. Когда преисполнишься в этих двух аспектах, начинаешь брать сложные задачи всё с тех же ресурсов (литкод и другие). Лучше даже это параллельно делать - изучать темы и решать задачи.

    Опять же, параллельно с задачами выше начинай изучать webpack. Продолжай верстать, но уже добавлять какую-то логику на JS. Желательно ручками без плагинов, чтобы потом в дальнейшем настраивать эти плагины без особых проблем и вообще понимать что можно с их помощью сделать, а что нет.

    Дальше можно прочитать Кайла Симпсона. К этому моменту ты скорее всего поймёшь, о чём в книге идёт речь.
    Почитай про HTTP: тут и тут, знать как он работает - мастхэв для фронта. Теперь можно не просто верстать сайты, а заполнять их контентом через работу с API всевозможных сервисов.

    Вот тут можно начинать изучать Typescript и переписывать всё, что сделал ранее, на TS. Самая лучшая практика, как по мне

    Потом самое время выбрать фреймворк. Бери любой из понравившихся (кроме старья), читай доку и делай всё что выше, но уже на фреймворке. Со временем, если станет скучно, можешь залезть в их кишки, посмотреть как работает реактивность и другая "магия". Вообще фреймворк можно начать изучать и раньше, но я бы советовал к нему приступать, когда всё то же самое ты можешь сделать и без него. Это из личного опыта. Дока становится максимально понятной, не возникает дополнительных вопросов и в целом меньше косячишь.

    По шаблонам и паттернам я раньше читал Рефакторинг Гуру (с енотом). Там примеры на Typescript. Ссылку не кину, мало ли что.

    P.S. Все распиаренные курсы - хрень, не советую ими пользоваться. Тем более некоторые из них вообще составлены дилетантами. Это мой знакомый синьор говорил лет 5 назад. А позже я и сам пару раз столкнулся с этим (если в общем - такие ошибки даже стажёры в крупных компаниях не совершают).
    Вместо этого следи за современными трендами, отслеживай каких-нибудь людей (я в своё время вот на этого парня наткнулся). Подпишись на какие-нибудь дайджесты типо www.awwwards.com. Смотри как делают другие, пробуй повторить. Рано или поздно начнут свои идеи появляться
    Ответ написан
    3 комментария
  • Как внутри computed получить текущее значение самого этого свойства?

    @LJ322
    Добавьте ещё одну реактивную переменную для промежуточного значения (куда будете старое сохранять до отправки запроса) и если условие не выполняется, то возвращайте её.
    Ответ написан
    1 комментарий
  • Как добавить активный клас на элемент button, поменять его цвет и поменять цвет v-icon?

    @LJ322
    <template>
    <button 
      type="button" 
      @click="formatDoc('bold')" 
      :style="styles.fontBold ? 'font-weight': 'bold' : 'font-weight: 'regular'"
      :class="{ 'button--active': styles.fontBold }"
    >
      <v-icon>mdi-format-bold</v-icon>
    </button>
    </template>
    
    <script>
    export default {
      data() {
        return {
          styles: {
            fontBold: false,
          }
        }
      },
    
      methods: {
        formatDoc(cmd, value = null) {
          if (value) {
          document.execCommand(cmd, false, value);  
          } else {
            document.execCommand(cmd);
            switch(cmd) {
              case 'bold':
                this.styles.fontBold = !this.styles.fontBold;
                break;
            }
          }
        }
      }
    }
    </script>
    Ответ написан
    Комментировать
  • Удалить/добавить слово в предложение на чистом js?

    @LJ322
    Потому что метод replace возвращает строку, а не изменяет. Строки в JS это неизменяемый тип данных. В данном примере нужно вернуть новый результат:
    lab.textContent = lab.textContent.replace(/ pineapple/g, '')

    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    Ответ написан
    1 комментарий
  • Как объединить два разных компонента?

    @LJ322
    Прокидываете событие из Header выше, а в App отслеживаете его и дальше обрабатываете как вам нужно
    https://codesandbox.io/s/easy-vue-js-search-forked...
    Ответ написан
    6 комментариев
  • Как правильно подключать шрифты?

    @LJ322
    Смотря как работаете с файлами на проекте. Можно подключать через /assets
    спойлер

    627649be4e3e7557661280.jpeg
    62764a55beadc143524983.jpeg


    Можно так же поместить их в /static, оттуда они не будут попадать в сборщик
    Видел оба варианта на практике, разницу особо не ощутил.
    Ответ написан
    Комментировать
  • Как добавить класс элементу, описанному в app, но в другом элементе router-view во vue 3?

    @LJ322
    Через computed свойство
    <template>
      <header :class="pageClass">
    ...
      </header>
          <router-view/>
      <footer :class="pageClass">
    ...
      </footer>
    </template>
    
    <script>
    export default {
      computed: {
        pageClass() {
          return {
            'page-class': this.$route.path === '/page',
          }
        }
      }
    }
    </script>
    Ответ написан
    Комментировать
  • Как сделать скролл у flex-контейнера?

    @LJ322
    Для вашей задумки может подойти такой вариант. Сделайте обёртку флексом, а блок внутри, в котором отображаются спаны - обычным блоком
    .wrapper {
      display: flex;
      flex-direction: column;
      justify-content: end;
      width: 700px;
      height: 150px;
    }
    .chat {
      display: block;
      overflow-y: scroll;
    }
    Ответ написан
    Комментировать
  • Как передать значение поля в другое поле на js?

    @LJ322
    Вот тут вы передаёте значение из атрибута в текстовое поле
    text_data.textContent = text_data.dataset.info

    Если нужно передать в инпут, то и обращайтесь к инпуту
    input.value = text_data.dataset.info

    Если нужно поменять дефолтное значение, то можете использовать defaultValue
    input.defaultValue = text_data.dataset.info
    Ответ написан
  • Как правильно передавать данные состояния VUE3 Composition API?

    @LJ322
    Можете просто добавить компонент модального окна в тот компонент, где оно должно вызываться и там реализовать всю необходимую логику и состояние модалки хранить там же, где она и вызывается

    <template>
      <div class="home">
        <img 
          alt="Vue logo" 
          src="../assets/logo.png"
        >
        <Modal
          v-if="modalOpen"
        >
          <div 
            v-html="someData"
          ></div>
        </Modal>
    
        <button 
          @click="modalIsOpen = !modalIsOpen"
        >
          Переключатель модалки
        </button>
      </div>
    </template>
    
    <script>
    import Modal from '@/components/Modal.vue'
    import { ref } from 'vue';
    
    export default {
      name: 'Home',
    
      components: {
        Modal,
      },
    
      setup() {
        const modalIsOpen = ref(true);
        const someData = 'some data...';
    
        return { modalIsOpen, someData };
      },
    }
    </script>
    Ответ написан
    Комментировать
  • Что такое import файлов во Vue cli?

    @LJ322
    Непосредственно за импорт в однофайловые компоненты отвечает vue-loader. А так да, импорт стилей, svg и т.д. обрабатывают соответствующие загрузчики вебпака
    Ответ написан
    Комментировать
  • Как разместить свой сайт на Javascript в сети?

    @LJ322
    Вам сюда - Github Pages
    Либо, как уже заметили ниже, если на JS написан бэк, то сюда - Heroku
    Ответ написан
    Комментировать