Задать вопрос
  • Что такое Redux простыми словами?

    @KnightForce
    Чтобы понять как работает Redux тебе нужно норм вкуривать React.
    Хотя бы для того, чтобы не пугаться props.

    Есть у тебя React. Это все просто JS объекты.
    <Component /> - так позволяет писать движок jsx, который и React его использует.
    Так как структура компонентная, ты должен думать как обновить компоненты в в другой части страницы.

    Принцип такой: компонент обычно обновляется при получении новых свойств - props или когда меняется его объект состояния - state.

    Чтобы тебе обновить дальние друг от друга компоненты- тебе нужно продумать какие и где приходят свойства - чтобы пробросить функцию, которая вызовет перерисовку.

    Что делает Redux:
    Он не призывает отказываться от state.

    Но есть общий контейнер данных. И когда данные меняются - меняются и компоненты, которые отображают именно эти данные.

    Когда нужно что-то поменять - вызываешь dispatch - специальная функция reducer реагирует на это - и меняет данные как тебе нужно. Когда данные заменятся - компонент Propvider - вызывает рендер у своего дочернего компонента (тот что оборачивает Provider).
    Например:
    <Provider>
       <MyComponent />//Вот сюда Provider пробросит (запишет) новые props.
    </Provider>


    Записывает он это самое глобальное хранилище и все компоненты, для которых поменялись данные - перерисуются.

    mapStateToProps - указывает какую часть этого глобального хранилища будет предоставлять provider.
    Если у тебя оно такое:
    {
       chunkStore: {},
       some: {}
    }

    То если mapStateToProps вернет{store: store.chunkStore}то Provider в props своего потомка пробросит такое: store: store.chunkStore. И ты будешь обращаться внутри к store, но там будет только часть chunkStore (не весь объект, а его поле).

    mapDispatchToProps - т.к. subscribe нет, то это возвращает функции, которые могут внутри себя вызывать dispatch().

    action - описывает то что и на что ты хочешь поменять. Какое поле и какие данные туда поместить.
    Ответ написан
    Комментировать
  • Как правильно составить сематическое ядро для будущего сайта?

    opium
    @opium
    Просто люблю качественно работать
    Это их разряда я закончил девятый класс и не умею 2+2 ну это же база сео, которая расписана везде
    Как собрать семантическое ядро наверно ещё в начале 2000-х написали все кому не лень.
    Оттуда брать метатеги, тоже смешно их надо сесть и написать самому, если умеете то напишите прогу которая будет делать тоже самое вместо вас
    Ответ написан
    Комментировать
  • Как настроить Redis на Ubuntu + OpenLitespeed + Wordpress?

    lamer350
    @lamer350
    กำลังสูงสุด
    Посмотрите здесь, все расписано как проверить на php https://docs.litespeedtech.com/lscache/lscwp/admin...
    Использую ту же связку, не помню по каким мануала делал, но все отлично работает.
    Ответ написан
    1 комментарий
  • Как проверить css на поддержку браузерами?

    Ответ написан
    Комментировать
  • Два интернет-магазина с одинаковым товаром, но с разным описанием. Норм ли будет?

    RotgarSett
    @RotgarSett
    SEO Эксперт
    1- не попадет
    2- обязательно делать отдельные
    3- будешь, но если итак есть конкуренция, то незначительно
    Ответ написан
    Комментировать
  • Почему в вебвизоре Яндекс.Метрики некорректно отображаться сайт?

    NeiroNx
    @NeiroNx
    Программист
    Это нормально когда половину сайта грузятся через явавскрипты. В вебвизоре они не запускаются.
    Ответ написан
    Комментировать
  • Как (и возможно ли) дотянуться до Junior JavaScript Developer в кратчайшие сроки?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Во первых: совершенству нет предела.
    Во вторых: невозможно объять необъятное и впихнуть невпихуемое.
    В третьих: как ты не крутись, а технологии развиваются быстрее, поэтому отставание неминуемо, как следствие приходится всегда чем-то жертвовать ради чего-то более важного.

    Итого: заказчика не интересуют твои философские страдания. Его интересует как быстро, качественно и за какие деньги ты решишь его проблемы. Решаешь за разумное время, адекватный ценник и с удовлетворительным качеством - не важно как ты себя именуешь, спрос на тебя будет.

    Джуниористость/синьористость конкретного разработчика - штука весьма условно субъективная. На собственном опыте скажу, что одно дело, когда ты первый и единственный парень на деревне - ты почти что бог, потом с той же головой, теми же руками, опытом и знаниями оказываешься в среде подобных себе, разной степени синьористости божков, и, внезапно, ты сырой джун но с очень хорошим потенциалом.

    Я не очень понимаю, чего вдруг тебя потянуло в разработку. В целом дело это весьма муторное и рутинное, и его надо бы, по хорошему, очень сильно любить, чтобы прям вот пёрло, тогда есть шанс зацепиться, удержаться и даже эволюционировать как разработчик.

    Я бы, для начала, досконально убедился, что это вот именно прям вот то самое, чем я бы хотел заниматься ближайшие лет пять, а то и десять, потому что иначе не стоит даже и начинать.

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

    Коммерческая разработка - это, примерно, от 70% времени/сил на дебаг и фиксы, потому что мало где процессы поставлены грамотно. По хорошему до сего дня (а мне под 40) я только одну команду видел, где процессы прям вообще очень хорошо поставлены и мне посчастливилось какое-то время с ними поработать. За эти несколько месяцев я подрос на целую голову. Самостоятельно достичь сходных результатов было бы весьма затруднительно.

    Сам я сменил стек совсем недавно, начал в конце 15 года, и процесс продолжается до сих пор. Сменил я по одной простой причине - во всех моих прежних проектах большая часть логики с бэка уехала на фронт, и прекраснейший jQuery перестал справляться чуть более чем полностью. Он, по прежнему, хорош, но задачи, которые приходится решать, требуют совершенно других подходов. Для себя я выбрал React, но в целом на рынке имеются альтернативы. По моим данным очень большим спросом пользуется Angular 2+.

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

    В результате, по своему опыту скажу, частенько проекты примерно на середине выглядят ужасно и обложены костылями. На моем опыте бывало не раз, что нормально получалось только раза с третьего-четвертого...

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

    Если ты попадешь в команду, где люди будут понимающие, квалифицированные, процессы выстроены, а джуну задачи будут сгружать джунские, то, считай, тебе крупно повезло. Шансов на это примерно 1%. Особенно учитывая, что джуны это обычно студенты лет в районе 20...

    Когда я менял стек, то я тоже был какое-то время 35-летним джуном. С этим ничего не поделать, потому что, внезапно, стек это не просто так, и имеется масса нюансов, которые с наскоку не освоишь. Чтобы все пощупать, попробовать на зубок, понять и осознать требуется время и усилия, иногда много времени и много усилий. Да, весь прежний багаж служит опорой и поддержкой, и там, где настоящий джун будет копаться недели, ты за пару часов по аналогии поймаешь идею и двинешь дальше. Но эти пару часов никто не отменял, а идей которые нужно отловить сотни, если не тысячи...

    Сложнее всего разобраться в архитектуре конкретного проекта, потому что, внезапно, стиль кодирования и конвенции чрезвычайно важны, если ты не один работаешь над проектом от и до. Если до тебя, вместе с тобой или после тебя кто-то будет работать над проектом, дорабатывать, поддерживать это дело, исправлять баги, в конце концов (а они бывают всегда и везде), то очень желательно, чтобы любой разработчик мог в кратчайшие сроки, оперативно и легко вникнуть, разобраться и понять, что там к чему, откуда, куда, зачем и почему. Чаще всего у проектов с этим проблемы, поэтому накладные расходы множатся, а эффект сходит на нет, усугубляясь текучкой кадров.

    Даже если тебе попадается практически идеальный проект, внезапно оказывается, что твоя оперативная память это 5-7+-2 объекта, а удерживать в голове одновременно нужно сотни...

    Зачем я все это рассказываю? Затем, что это реальность, которая для джунов не делает исключений.

    Термин "фигак-фигак и в продакшен" встречается повсеместно, т.к. ресурсы (деньги, время, кадры) практически всегда весьма жестко ограничены и ничего ты с этим не поделаешь.

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

    С другой стороны сейчас предпочитают фронта, который еще и неплохо верстает. Слава флексбоксам и современным браузерам, сейчас это делать намного проще, чем годы назад.

    Теперь относительно того что делать - если в бэкграунде нет сильных скиллов по алгоритмике и структурам данных (олимпиады по программированию, универский курс информатики), то прям очень сильно рекомендую прокачать. Будучи наставником на нескольких курсах фронтенда я постоянно встречают студентов, которые "вроде бы" знают язык, но затрудняются скомпоновать пару циклов с условиями, вот буквально просто виснут на неопределенное время, причем без результата. Лично я рекомендую кодварс. Своих студентов я прокачиваю именно там. Достаточно прорешать 30-40 задачек, чтобы базовые скиллы ушли на уровень рефлексов и перестали парить мозг. Правда желательно решать это все с наставником.

    Косвенный бонус тут будет в том, что ты привыкнешь решать задачи на JavaScript. Я когда менял стек, поначалу мыслил на PHP, и подобный финт на кодварс позволил мне переформатировать мышление на JS. Вот мой профиль на кодварс как пруф: https://www.codewars.com/users/iCoderXXI

    Далее, когда ты освоишься в JS практически, очень неплохо будет досконально разобраться в том как работают замыкания и прототипное наследование. Это прям основа основ, и это спрашивают на каждом первом собесе.

    Понять надо настолько глубоко, чтобы легко и просто, с юморком, рассказывать это любой первой встречной бабушке, да так, чтобы та всё поняла... Это вот прям залог успеха в JS, потому что все остальное держится на этих двух китах. В ютубе имеется курс Зоракса (Zorax) и JavaScript Weird Parts, оба про то же самое, первый на русском, второй на инглише. Кантор, безусловно, крут, но эти двое объясняют попроще и понятнее (имхо).

    После этого прокачиваемся в использовании встроенных методов JS, таких как map, reduce, includes, replace и пр. (на том же кодварс)

    После этого нужно прокачаться в ES6+, стрелочные функции, let/const, деструктурирование, рест оператор, классы, промисы, генераторы, async/await, декораторы - без этих продвинутых штук в современных фреймворках ловить нечего.

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

    Потом уже заостряемся на API форм, DOM, AJAX (fetch/axios), вебсокетах, Localstorage и пр.

    И вот только теперь можно переключаться на фреймворки. Проще всего освоить Vue (по слухам), наибольшим спросом пользуются React и Angular, для общего развития так же неплохо бы немного послушать про Ember.JS.

    React только на первый взгляд выглядит простым, на самом деле это только view-библиотека, а в любом нормальном SPA есть много чего еще кроме view, поэтому React всегда идет в компании Redux, Router, и еще целой толпы всего, что тоже придется осваивать, не только с точки зрения API, но и с точки зрения философии (а нахрена оно вообще сдалось?)

    Перед походами на собесы очень желательно иметь портфолио из нескольких готовых проектов, вылизанных стилистически.

    Далее освежаем базу по JS - типы, замыкания, прототипы, и смело топаем по собесам, будучи морально готовыми завалить первые десять.

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

    Еще вроде большие компании вроде Яндекса устраивают летнее обучение, с последующим трудоустройством лучших кандидатов, но это не точно.

    Оптимистичный прогноз - 6-12 месяцев плотного фигачинга и ты в тренде.
    Ответ написан
    7 комментариев
  • В чем моя ошибка при работе с объектами?

    it_monk
    @it_monk
    Разработчик в oncloud.ru
    Проблема в том, что:

    1. Вы ключам задавали результат выполнения функций, а не сами функции;
    2. Вы возвращали значения ключей, в то время как надо было вызывать функции.

    Работающий вариант: https://jsfiddle.net/46par1r8/
    Ответ написан
    6 комментариев
  • InnerText не подстанавливает текс в span. В чем может быть причина?

    rockon404
    @rockon404
    Frontend Developer
    1. Вы пытаетесь получить селектор field-name__clb, а в HTML коде у вас определен .field-name__clb
    2. В коде отсутствует вызов функции fieldsName
    3. document.querySelector выберет только первый элемент, который совпадает с определенной группой селекторов
    Ответ написан
  • Событие keydown в js странно себя ведет, почему?

    FLUNKEY
    @FLUNKEY
    самовар
    Из вашего кода понятно, то что вы слушаете не тот эвент, слушайте 'change' и 'input'.
    После того как сработал 'keydown', вы пытаетесь вытянуть значение из поля, которое ещё не успевает обновится, и тем самым, когда функция fninput срабатывает первый раз, поле ещё пустое.
    Ответ написан
    3 комментария
  • Когда стоит остановиться добавлять все в переменные?

    rim89
    @rim89
    программист-велосипедист
    Вы сначала изучите его как можете, потом уже будете задаваться более сложными вопросами. Пытаться сразу писать как профи - не продуктивно. Написали , удалили, улучшили , удалили и тд ...
    Ответ написан
    Комментировать
  • Как правильней разместить блог в интернете?

    @Ricchie
    Мыслите рационально: блог нужен для привлечения дополнительного трафика и увеличения поведенческих характеристик сайта. Зачем его тогда делать на отдельном домене или сабдомене, что для поисковых машин - отдельный сайт.
    Делайте блог на вашем основном сайте, чтобы он был вида сайт.ком/блог.
    Это будет полезно для общего seo сайта, поскольку полезные материалы с блога будут помогать ранжировать выше весь сайт (также получить репост или упоминание на статью из блога гораздо больше).
    Использовать отдельный домен или сабдомен типа блог.сайт.ком - пустая трата времени + продвижение нужно начинать с нуля.
    Ответ написан
    4 комментария
  • Как поместить и отсортировать имеющееся ключевые слова от низкочастотных к высокочастотным в программе Key Collector?

    AndreyKurtuchkin
    @AndreyKurtuchkin
    SEO-специалист
    Добавьте фразы
    5ae5f89e4d41e028741650.png
    Задайте регион для сбора частотности
    5ae5f8e44f68a487559535.png
    Соберите частотность, которая вам нужна
    5ae5f8fe1ead4261649091.png
    Щелкните по колонке, чтобы отсортировать по ней
    5ae5f91d95abe572101293.png
    Ответ написан
    8 комментариев
  • Влияет ли в 2018 году, покупка ссылок (на бирже) на продвижение сайта?

    vvpoloskin
    @vvpoloskin
    Инженер связи
    Каждый год одно и то же.
    Ссылки влияют (и сапа, и гогет, и немассовые источники), меняются только методики оценки доноров, ну и качество (цена) общей ссылочной массы. Вам никто не скажет, сколько надо купить ссылок на сапе чтобы вывести в топ ваш суперпупермегасайт, SEO всегда было отраслью экспериментов и оценки конкретного сайта в конкретной нише с конкретной ЦА. Для продажи авто в дефолтсити они влиять не будут (вернее, вы не заметите влияние), а для кулинарных рецептов из пермских трав результат будет совсем другой.
    Ответ написан
    Комментировать
  • Как правильно присваивать переменную?

    @diadiafiodor
    какой-то человек с улицы
    Ваша переменная outPutData хранит ссылку на экземпляр объекта, это у вас там какой-нибудь div или span, не важно, любой элемент разметки. Инструкция outputData = 'Введите значение' стирает ее и кладет в переменную строку 'Введите значение'. Если вам нужно помнить это строку положите ее в отдельную переменную
    let string = 'Введите значение'
    если вам нужно чтоб ваша строка стала методом для outputData, можно прописать
    outputData.prop=string,
    проконсольте и убедитесь что она теперь стала свойством outPutData.
    Тем не менее на экран она не выведется, потому что нужно сначала сделать из нее textNode (с помощью все того же innerHTML например), в общем курите мануал, потому что никто не будет создавать отдельно для вас туториал на каждый чих, когда все уже написано в справочниках, у Фленагана например.
    Ответ написан
    Комментировать
  • Как правильно присваивать переменную?

    SagePtr
    @SagePtr
    Еда - это святое
    Потому что в первом случае вы присваиваете переменной объект, а потом уже взаимодействуете с его свойством.
    Во втором случае - вы присваиваете переменной значение свойства, которое является строкой, а строки в JS передаются по значению, а не по ссылке (в отличие от объектов и массивов).
    Ответ написан
    Комментировать
  • Посоветуй курс по vue.js?

    dimovich85
    @dimovich85 Куратор тега JavaScript
    https://u-academy.net/
    Вот: https://youtu.be/LGyihQvDEw4?list=PLyeqauxei6jd4mL...
    Бесплатные видео уроки, и у него же есть платные, тоже очень советую! Не пожалеете 1000%!
    Ответ написан
    Комментировать
  • Посоветуй курс по vue.js?

    KornevaViktoria
    @KornevaViktoria
    Frontend Developer
    Зачем курсы, если есть русская хорошая документация?
    https://ru.vuejs.org/v2/guide/

    А курс, здесь можно пройти:
    https://vueschool.io/courses/vuex-for-everyone
    Ответ написан
    Комментировать