• Какую верстку выбрать для проекта - резиновую или фиксированную?

    Hando
    @Hando
    Верстак
    Если вы считаете, что много места пропадает, то ответ очевиден - резиновую и адаптивную, чтобы она подстраивалась под разрешение устройства, на котором будет отображаться. Это современный стандарт.
    Ответ написан
    Комментировать
  • Какой необходимый уровень знаний для 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 комментарий
  • В каких простых( не сложных) проектах/задачах можно использовать react?

    @vshvydky
    думаю ребята из фб считают что на реакте не сложно вывести instagram
    Ответ написан
    1 комментарий
  • Обязательно ли уметь верстать FrontEnd разработчику?

    sim3x
    @sim3x
    Пока дорастешь до фронтендера будешь делать автоматом без вопросов и прихода в сознание
    Ответ написан
    Комментировать
  • Языки программирования для работы с API?

    @Janus74
    Любой.
    API на то и API, что бы его можно было использовать везде
    Ответ написан
    Комментировать
  • Почему теряется this?

    @davidnum95
    Нужно биндить контекст.
    constructor(props, context) {
        super(props, context);
        this.onRegionChange = this.onRegionChange .bind(this);
      }
    Ответ написан
    3 комментария
  • Споры с менеджером?

    opium
    @opium
    Просто люблю качественно работать
    смените работу
    Ответ написан
    Комментировать
  • Хочу перейти на Linux, какой дистрибутив выбрать?

    tomnolane
    @tomnolane
    профессиональный разработчик
    mint, ubuntu - не ошибёшься
    п.с.
    каждая жаба хвалит своё болото...
    ИМХО (от себя): использую Kali для тестирования своих сайтов/программ

    п.с.с. наверно любой дистрибьютив (основной, который вы перечислили) - способен для тех целей, которые вы себе поставили. Те, дистрибьютивы которые я указал - для вас будут наиболее "лёгкими" в освоении. Главное - чтобы у вас работал интернет и google/yandex и желание искать там всё, что вам не понятно (а лучше и быстрее - посмотреть на ютубе видеоуроки по основам этих дистрибьютивов)
    п.с.с.с. освоение особо много времени не потребует, хотя конечно будет не привычно. Но, чуть-чуть потерпев вы найдёте для себя как плюсы, так и минусы. Из плюсов, которые лично мне нравятся - менее требовательны к компьютеру/железу + очень многое можно найти в интернете + развиваешься.
    Из минусов - непривычно + некоторые для WINDOWS программы нельзя использовать в linux (хотя есть иногда примерные аналоги), хотя без Kali второй ОС я себе не представляю себя как программиста.

    хороший отличный manual по linux (в частности mint)
    Ответ написан
    6 комментариев
  • Какой метод необходимо вызвать при изменении props в дочернем компоненте?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Когда у вас 1й раз происходит "и то и другое" - это ваш componentDidMount + render (у Child)
    Когда вы "нажимаете на кирпичик", то у вас componentDidMount уже не происходит (судя по коду, так как компонент у вас не удаляется из DOM и не появлется там снова). Но так как вы по нажатию меняете у родителя что-то, и это что-то прокидываете в потомка - значит "ему пришли новые props", следовательно используйте componentWillReceiveProps, где в nextProps - будет то что вам нужно.

    Документация про lifecycle methods

    p.s. проверьте, у вас в тексте примера есть someId и sometId (опечатка)
    Ответ написан
    2 комментария
  • Верстаете ли вы сайты на react.js?

    Rou1997
    @Rou1997
    На нем не верстают, он для Web-приложений, прежде всего SPA, только не путайте с теми одностраничными, которые landing page, для них он ни к чему.
    Ответ написан
    Комментировать
  • По каким ресурсам лучше изучать Java Servlet?

    sim3x
    @sim3x
    Ответ написан
    Комментировать
  • Какая правильная структура файлов front-end проекта и почему?

    @antonowano
    Профессиональный самоучка
    • dist
    • node_modules
    • src
    • gulpfile.js
    • package.json


    src - папка со всеми исходниками верстки (html, css, js, less, coffeescript и т.д.),
    dist - папка рабочего проекта скомпилированного из исходников папки src, по команде gulp,
    gulpfile.js - скрипт компиляции рабочего проекта,
    package.json - мета данные проекта и список необходимых npm библиотек для работы gulpfile.js,
    node_modules - сторонние npm библиотеки установленные для компиляции проекта.

    Пример gulpfile.js:
    var gulp = require('gulp');
    var less = require('gulp-less');
    var cleanCSS = require('gulp-clean-css');
    
    gulp.task('default', function() {
        gulp.src('./src/css/**/*.less')
            .pipe(less())
            .pipe(cleanCSS())
            .pipe(gulp.dest('./dist/css/'))
        ;
    });


    Для такого проекта должны быть установлены 3 npm библиотеки gulp, gulp-less, gulp-clean-css.

    Это общепринятый скелетон для любого gulp-проекта. А структура папки src это по вашему желанию. Каждый делает по своему.
    Ответ написан
    3 комментария
  • Какую литературу почитать по проектированию?

    Очень основательная книжка
    1000104253.jpg
    Ответ написан
    Комментировать
  • Как плавно анимировать иконку при наведении?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    в svg придется рисовать. по другому никак
    Ответ написан
    4 комментария
  • Как в react-redux реализовать вызов метода в ответ на изменение стейта?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Добрый день.

    Представим ваш action creator (функцию), которая на success возвращает успешную авторизацию, например:
    $.ajax(url...
      success(data) { dispatch({type: AUTH_SUCCESS, data }) })


    Кто мешает сделать так?
    $.ajax(url...
      success(data) { 
        dispatch({type: AUTH_SUCCESS, data }) 
        loadUserCart(data.user_id) // <- еще один action creator
    })

    Суть уже понятна? Мы после успешной авторизации юзера, вызываем сразу же следующий экшен-крейтор:
    function loadUserCart(id) {
      return (dispatch) => {
        
        dispatch({ type: CART_REQUEST }) // получается, это событие вызовется сразу после успешной авторизации, практически мгновенно
    
        
        $.ajax(urlForCartUpdate...
          success(data) { 
            dispatch({type: CART_SUCCESS, data })
        })  
      }
    }


    Далее вы в компоненте с корзиной, настраиваете показ прелоадера, и вуаля! Получается, для юзера, без задержек, как только он авторизовался - у корзины будет крутиться прелоадер. Юзеру все понятно, он занимается своими делами. Как только "данные подъехали" - вы скрыли прелоадер и показали ему необходимые данные по корзине.

    нужно сначала сделать AJAX-запрос, а по его результатам уже рендерить корзину

    Именно это мы и сделали.

    P.S. не знаю, требуется ли это, но на всякий случай укажу, что чтобы сделать прелоадер в шаблоне, вам нужно в редьюсере корзины создать какое-нибудь поле (флаг), например isLoading и устанавливать его в true когда получите action с типом CART_REQUEST, и false для CART_SUCCESS. Таким образом, вы сможете сделать банальный if в шаблоне рендера и показывать либо разметку прелоадера, либо разметук с данными корзины.

    === вторая часть ===
    В компонентах-контроллерах есть только функция connect() со своими функциями-аргументами, которые передают данные в представление. Как-то реагировать на изменения состояния такие компоненты не умеют (я ведь не ошибаюсь в этом?).

    Еще как умеют, в этом и суть. Вы в mapStateToProps передаете в общем случае:
    {
      ваше_название_поля: reduxStore.название_редьюсера
    }

    В частном случае, может выглядеть так:
    function mapStateToProps(state) {
      return {
        rate: state.rate,
      }
    }


    После того, как вы "подписались" на изменения в state.rate, (а это, если говорить об частном случае, скорее всего reducer с названием rate), ваш "приконекченный" компонент всегда будет получать новые props при изменении в редьюсере. Следовательно, будет вызываться функция render. Само собой - можно хоть сколько "редьюсеров подключить" к одному компоненту.

    Имейте ввиду, что все здесь написано для понимания простым русским языком, на самом деле, так как вы используете компонент Provider на самом верхнем уровне вашего приложения, он прокидывает необходимые props вниз. Ваши connect(Компоненты) умеют реагировать на изменение необходимых props => реакт вызывает рендер, так как "пришли новые props".
    Ответ написан
    2 комментария
  • Bootstrap. Cпор с программистом, как убедить?

    dom1n1k
    @dom1n1k
    Имею опыт глубокой кастомизации Бутстрапа. Глупая была затея.
    Родился такой монстр, который просрал плюсы и сочетал минусы обоих подходов (популярный фреймворк vs самописный велосипед).
    Сильно изменив Бутстрап, убиваются:
    - его обновления и багофиксы
    - совместимость со сторонними плагинами
    - низкий порог вхождения новых людей
    - возможность гуглить решения в случае багов
    Но и самописным велосипедом это тоже не является, потому что сильно завязано на исходную архитектуру. То есть нет полной свободы и гибкости, присущей кастомным решениям. БЭМ-ом там, конечно, тоже не пахнет, откуда идут большие проблемы с независимостью.
    Бутстрап нужно использовать либо как есть, либо с минимальными скинами-стилизациями поверх.
    Ответ написан
    Комментировать
  • В FreeBsd можно просмтатривать изображения, мультимедиа?

    @brar
    Мне кажется, входить в мир линукс через FreeBsd - несколько не то.
    Ответ написан
    5 комментариев