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

    jQuery "видит" весь DOM целиком. И манипулирует DOM-ом, доступ к которому предоставляет браузер. Но можно и по-другому.

    Давайте рассмотрим такую архитектуру, в которой все компоненты связаны между собой древовидно. То есть, отдельно взятый компонент может общаться со своими дочерними и со своим родительским. Если нужно, чтобы между собой пообщались два компонента в разных ветках, то в конце концов их общение происходит через общего предка. Такой подход вполне согласуется с древовидной структурой HTML.

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

    Для того, чтобы это всё отобразить, не обязательно в ходе вычисления следующего состояния (или представления) сразу манипулировать DOM-ом. Можно построить из состояния и его представления фрагмент DOM-а, каким он должен получиться. А потом вычислить diff между этим построенным фрагментом (виртуальным DOM-ом) и реальным браузерным. И этот diff применить к реальному DOMу. Один раз. Получится быстро.

    Насколько мне известно (поправьте, если это не так), Redux заимствован из Elm-а. Elm - это экосистема и функциональный язык, компилируемый в JS, сделанный для того, чтобы фронтэнд можно было разрабатывать удобно, быстро и без runtime-ошибок. По синтаксису - это адаптация Haskell-a. Ключевым элементом Elm-а является как раз вот эта самая архитектура. Советую подробнее почитать в первоисточнике. https://guide.elm-lang.org/architecture/

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

    С точки зрения функционального программирования, при таком подходе текущее состояние является результатом функции leftFold, применённой к исходному состоянию, последовательности событий (действий), приводящих к текущему и функции, умеющей вычислять следующее состояние.
    Ответ написан
    Комментировать
  • Какой необходимый уровень знаний для junior React.js Разработчика?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    UPDATE: реальные тестовые задания и разборы здесь, ответы на все вопросы из поста в моем блоге об обучении react.

    не включая основы js

    Извините, но стандартная задача, про "напишите функуцию add, которая при вызове add(1)(2) вернет 3" - многих положила на лопатки =) Поэтому будьте готовы..

    React
    0) Какую проблему решает react ?
    1) Мгновенно ли срабатывает setState? Если нет, то как выполнить код, который 100% выполнится после того, как новый state будет установлен?
    2) Зачем многие постоянно пишут в constructor: this.FUNCTION_NAME = this.FUNCTION_NAME.bind(this) и отсюда вопрос вытекает чему равно this в разных местах вашего компонента...
    3) в каких методах жизненого цикла стоит выполнять xhr запросы? В каких стоит "обновлять state на основе props"?
    4) Что будет если вызвать this.setState в render методе компонента?
    5) зачем нужен componenWIllUnmount, приведите пример..
    6) Контролируемые, не контролируемые компоненты
    7) Как организовать роутинг в реакт приложении? (ответ: взять react-router - подходит, но было бы круто, если бы вы рассказали, как он примерно работает)*
    8) Зачем нужны propTypes? Что происходит с ними в production сборке?
    9) Как можно удобно "отлаживать" чужой код приложения, написанного на react (намек в сторону React devtools)
    ...

    Redux
    0) Какую проблему решает redux?
    1) Зачем многие создают типы действий NAME_REQUEST / NAME_SUCCESS ? А заодно, что такое "действие", а что такое "создатель действия"...
    2) Что такое редьюсер? Можете написать простой редьюсер без react/redux?*
    3) Для чего нужен redux-thunk? Как он работает? Напишите (можно псевдокод) асинхронный создатель действия (либо, если надоело говорить "терминами" - асинхронный aciton)
    4) Как компоненты приложения получают "пропсы" из "стора"?*
    5) Можно ли (и считается ли это нормальным) использовать state, если используется Redux?
    6) Почему в reducer'ax мы возвращаем новые объекты? Приведите пример, когда вы возвращаете новый объект, а когда тот же самый.
    6.5) А так же, "как в js вообще это работает?". Например:
    let obj1 { name: 'Test', age: 100 }
    let obj2 = obj1
    obj2.name = 'Test_new'

    Что будет в obj1, почему? В каких случаях объекты могут быть равны?
    7) Что возвращает функция connect (из react-redux)?
    ...

    Общее:
    0) package.json
    1) Webpack, gulp, etc...
    2) node.js
    3) promise

    Что-нибудь практическое:
    1) Как бы вы валидировали форму, если ошибки валидации приходят после submit'a ее на сервер..
    2) Почему не работает следующий код, сделайте чтобы работало
    ...
    На истину не претендую, но такие вопросы имели место быть на собеседованиях. В беседе можно многое разузнать дополнительными вопросами и так далее. Так же, если часть вопросов вам неизвестна - не беда, многие и на половину ответить не могут.

    p.s. возможно дополню...
    p.p.s. звездочкой отметил, на мой взгляд не самые необходимые для junior-собеседования вопросы.
    Ответ написан
    31 комментарий
  • Что почитать frontend разработчику?

    @nk11k
    Можно отталкиваться от этого списка:

    sijinjoseph.com/programmer-competency-matrix

    Читайте блоги.

    - Того же Joel on Software
    - mpj
    - tonsky.me
    - .. десятки их

    Изучайте конференции, посмотрите:

    - Rich Hickey Simple Made Easy
    - jsconf
    - ... и т. д.

    Посмотрите, как происходит интервью в технические компании:

    - Google

    Есть замечательная книга Cracking Coding Interview

    Гуглите, гуглите, гуглите.

    Лично я завёл себе репу в гитхабе со всеми полезными ссылками, которые нашёл. Список дополняется по мере нахождения интересных и полезных вещей. Но я не один такой, есть аналогичные списки.
    Ответ написан
    Комментировать
  • Что почитать frontend разработчику?

    Neznayka1979
    @Neznayka1979
    Интересы - IT, психология...
    > есть ли ещё какие-нибудь книги, наподобие данных для общего развития, не привязываясь особо к конкретному языку

    «Алгоритмы. Вводный курс» Томас Х. Кормен
    «Алгоритмы. Построение и Анализ» Томас Х. Кормен, Чарльз И. Лейзерсон, Рональд Л. Ривест, Клиффорд Штайн.
    «Алгоритмы введение в разработку и анализ» Левитин А.В
    «Algorithms in a Nutshell, 2nd Edition»
    «Логика» Виноградов С. Н. и Кузьмин А. Ф _ 1954
    «Основы системного анализа» Спицнадель В.Н. (2000 г.)
    «Семь навыков высокоэффективных людей. Мощные инструменты развития личности» Стивен Р. Кови
    Ответ написан
    Комментировать
  • С чего начать учить серверный javascript?

    @Nwton
    Ответ написан
    Комментировать
  • Знаете качественный и интересный курс по javascript?

    BBmike
    @BBmike
    ничего Вы не выучили на codecademy.
    те курсы - прекрасный тренажер для приобретения психологического комфорта при знакомстве человека с синтаксисом ЯП и не более того.

    Чем раньше это поймете, тем лучше. Волшебных таблеток не бывает...
    Ответ написан
    Комментировать
  • Как лучше изучить теорию JavaScript?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    Самое сложное для начинающего не понять как делать или что делать, а понять зачем делать.

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

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

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

    Выработать эти микрорефлексы возможно только активно практикуясь и больше никак.

    Приглашаю тебя на Codewars - www.codewars.com/r/pj8ELg, там ты сможешь бесплатно попрактиковаться вволю, со своей стороны готов оказать тебе посильную наставническую поддержку.
    Ответ написан
    2 комментария
  • Как лучше изучить теорию JavaScript?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    "обеими ресурсами" => "обоими ресурсами"
    learn.javascript.ru
    Ответ написан
    Комментировать
  • Как научиться писать самостоятельно код?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В школах и институтах учили строить алгоритмы, еще когда рисовали блок-схемы.
    Это не зависит от языка программирования - нужно просто составить алгоритм для решения задачи. Изучая различные аспекты языка программирования, различные библиотеки, фреймворки и так далее вы просто приобретаете знания о дополнительных инструментах, которым нужно пользоваться для решения задачи.

    Но само решение придумывает программист, а не язык программирования.

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

    Например, взять какую-нибудь игрушку с множеством товара и найти самый выгодный или дешевый товар. Вам будет понятна цель - найти нужный вам товар
    При этом не будет важно в каком виде - в виде веб-странички, в виде простого текста на экран, или в виде заполненной таблички в базе данных.
    При этом не будет важно какими инструментами вам нужно воспользоваться.
    Главное, что вы осознаете что именно хотите получить. И пишете программу, которая выдает вам результат, используя имеющиеся знания.
    Чем больше знаний, тем удобнее в конечном счете пользоваться тем что вы написали и тем быстрее и проще вам это писать.
    Ответ написан
    Комментировать
  • Какой программой можно отслеживать время, проведенное за компом?

    sheyker
    @sheyker
    Дизайн мобильных приложений для iPhone и Android
    Сейчас использую Qbserve – https://qotoqot.com/qbserve/
    Обозначаешь какие программы относятся к рабочим, какие к нейтральным, а какие не по работе.
    Например в скайпе общие группы можно даже разделять на личные и рабочие.
    Если отработал 8 часов в день – 100% продуктивности.
    Лично мне нравится программа. 6eaad70bc473420cac215bf990596f78.pngceb4c375b5be4fcb85b047ee2e469790.png
    Ответ написан
    2 комментария
  • С чего и где начать обучению React, Redux?

    miraage
    @miraage
    Старый прогер
    От создателя Redux.
    И учите английский. Это на нем надо свободно разговаривать в нашей жизни.

    https://egghead.io/courses/getting-started-with-redux
    https://egghead.io/courses/building-react-applicat...
    Ответ написан
    Комментировать
  • Где найти интерактивное изучение js?

    toxicmt
    @toxicmt
    CTO at hexlet.io
    Посмотрите наши курсы https://hexlet.io На сайте много практики и большое комьюнити
    Ответ написан
    Комментировать
  • Где найти интерактивное изучение js?

    @dleshko
    С русскими очень сложно, попробуйте посмотреть freecodecamp.com . Там всё несложно, правда местами, на мой взгляд, затянуто)
    Ответ написан
    Комментировать
  • Что читать о принципах проектирования и алгоритмах программ на JavaScript?

    Все сслыки которые вам дали выше - хороши, но стоит обратить мнение на труды Nicolas Zakas. Он автор одной из книг, что советовали выше, а так же у него есть хорошие презентации на тему как делать "правильно"
    Ответ написан
    Комментировать
  • Что читать о принципах проектирования и алгоритмах программ на JavaScript?

    gzhegow
    @gzhegow
    aka "ОбнимиБизнесмена"
    Искать мастера.

    Сколько ты книги не читай, сколько лбом не долбайся, ощущение что ты пишешь правильно придет только когда крутой кодер (для тебя субьективно крутой) скажет тебе, что ты классно все делаешь и уже готов.

    Послушайте любого тренера в youtube. В большинстве своем они конечно трепачи и бездельники, но в некоторых вещах они сходятся. Например в том, что в Японии был обычай в 18 лет искать Наставника, на Руси был обычай становится Подмастерьем, в любой активно развивающейся стране был обычай что более опытные берут себе на обучение менее опытных из соображений ответственности за свою страну.

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

    Только не начинай сейчас демагогию типа "почему все так не делают". Единственный адекватный ответ будет "может все долбанулись?"

    ps. На это тоже есть объяснение. Деньги лежат в противоположной стороне от созидания, развития и гармонии и ответственности.
    Ответ написан
    3 комментария
  • Что читать о принципах проектирования и алгоритмах программ на JavaScript?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    largescalejs.ru
    UPD: stackoverflow.com/questions/1114024/constructors-i...
    PS: najomi.org - небольшой подбор разных полезных сниппетов, включая JS.
    Ответ написан
    Комментировать