• В чём смысл конструкции?

    Об этом в документации написано. Если коротко, то это устаревший подход с некоторыми багами. Там и ссылка на гитхаб с проблемами есть. Но они не актуальны для подхода с обратным вызовом.
    Legacy API: String Refs
    Ответ написан
    Комментировать
  • В чем суть паттерна Facade?

    Нет, не правильно.
    Для вашего примера правильно будет:
    a = new ExampleObjeact();
    a.makeSomething = function(action) {
        return a[action]();
    });
    a.makeSomething('makeSome1');
    a.makeSomething('makeSome2');
    a.makeSomething('makeSome3');

    Идея в том, что вы делаете один публичный метод, который принимает грубо говоря action-type. В зависимости от action вы уже делаете требуемое(возможно преобразуете аргументы и вызываете конкретную приватную функцию). Скрыает внутренний API вашего модуля за "Фасадом".
    Ответ написан
    5 комментариев
  • [code-review] JS галерея, какие замечания?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    1. Вы подключили 'use strict'; в самом начале кода. Этим подключением вы можете потенциально сломать чей-то чужой код, который написан без учета новых правил. Ваша первая задача - инкапсулировать свой код. Перенесите внутрь Gallery.
    2. Не хватает возможности подключать код как модуль: https://github.com/umdjs/umd
    3.
    throw new Error('I cant find gallery-element on this page');
    - не нужно кидать ошибку тут. Ваш плагин должен тихо проверять есть ли нужные элементы, и, если их нет, тихо НЕ запускаться. Мало ли, вдруг его подключат на весь сайт, а галерея будет только на одной из страниц.
    4. В остальном код выглядит немного сумбурно. Нет визуального разделения на части, разная функциональность не вынесена в отдельные функции, трудно понять логику и последовательность выполнения. Возможно не хватает немного комментариев. При расширении функциональности через какое-то время поддерживать этот код станет очень тяжело.
    Ответ написан
    1 комментарий
  • Какой необходимый уровень знаний для 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 комментарий
  • Со знанием какого MVC фреймворка больше шансов найти работу в русскоязычном сегменте?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Всегда есть возможность посмотреть сайты с вакансиями! Вам нужно поанализировать hh.ru и moikrug.ru
    По моим наблюдениям, годных вакансий на удаленку, на Моем круге всегда было больше.
    p.s. фильтры по удаленке настраиваются на обоих сайтах.
    Ответ написан
    Комментировать
  • Как сделать такой переход на другую страницу?

    @igumenov
    Гуглить Morphing modal overlay
    https://codyhouse.co/demo/morphing-modal-window/in...
    Ответ написан
    Комментировать
  • Асинхронная загрузка скриптов. Как вывести до загрузки скрипт?

    @Pavelblog
    Вариант 1: Сделать то что вам нужно без использования Jquery
    Вариант 2: Дождаться загрузки JQuery и только после этого выполнить нужный код.

    Я использую простую функцию с колбеком на загрузку файла. Ваша задача может быть решена так:
    function loadScript( url, callback ){
    	var elem = document.createElement('SCRIPT');
    	elem.setAttribute('src',url);
    	if( typeof callback == "function" ){
    		elem.addEventListener('load', callback);
    	}
    	document.head.appendChild(elem);
    }
    loadScript('catalog/view/javascript/jquery.min.js', function(){
      $('#text').html('Привет мир!')
    })
    Ответ написан
    Комментировать
  • Как влиться в тренд нынешней веб-разработки?

    Блин, 8 лет верстать "по-дедовски")
    Да за это время можно было стать Senior developer или даже выучиться на фуллстак и уехать в какой-нибудь Израиль работать за 4к $

    Препроцессоры я познал за один день. Для CSS использовал сначала less, через месяц ушел на Stylus (советую именно его, так как всякие sass это вообще мрак. Работать в чужом проекте на sass - ад, тогда как stylus прост, при этом более функционален и намного интуитивнее).

    Jade (ныне Pug) узнал просто заканчивая чужой проект. Открыл, посмотрел на то, чего боялся, пришлось почитать что за зверь - работу то делать надо. Оказалось все просто, теперь не знаю как теги раньше писал ручками (со стилями тоже самое было, кстати).

    Сборщик проекта. Для верстки, если выбирать между Grunt и Gulp - без сомнений Gulp. Я очень счастлив, что мне в тот момент подвернулась именно статья про Gulp. Работал с проектами на Grunt (их очень мало) - ну, это просто дерьмо, а не сборщик. Скорость сборки отличается в разы.

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

    Флексбоксы в CSS изучаются только на практике, сидеть и запоминать это бессмысленно. 2-3 проекта с подсказкой по флексу и он плотно осядет в голове.

    Вывод: надо просто не бояться нового. Берешь и применяешь новые технологии без страха и зазрения совести. Они быстро вольются в твою жизнь, а без них потом будет дышать тяжело и больно.

    Советую взять готовые проекты у хороших верстаков и просто что-то в них поделать, попеределывать, попользоваться технологиями сразу, не читая нудные статьи про основы.
    Ответ написан
    7 комментариев
  • Зачем использовать Vue вместе с Laravel?

    Добавили, чтобы вы jquery спагетти не использовали. Vue (как и другие js фреймворки) сокращает количество кода на клиенте и уменьшает его запутанность.

    Для примера вы создаете админку для магазина. У вас есть следующие варианты:
    1. Делать статическую страницу. На клиенте никакой логики, все вычисляет сервер. При новой покупке администратор должен будет обновить страницу.
    2. Писать динамический фронтэнд с использованием vue, angular и чего угодно остального. Бэкэнд шлет вам уведомления через вэбсокеты о новых заказах без перезагрузки страницы.
    2.1 Вы берете jquery и сначала все идет хорошо. Первые полчаса. Затем ваш код обрастает огромным количеством обработчиков событий. Если товар заканчивается на складе, его надо убрать из таблицы, затем если заказ отменяется, его надо вернуть в таблицу. Вы его вернули, но почему-то кнопка в строке с ним, вызывающая модальное окно перестала реагировать на события, потом еще что-то случилось и еще. Проблемы с jquery растут как снежный ком и вы проклинаете свое решение создать динамическую админку.
    2.2 Вы используете современный js фреймворк. Vue в этом плане хорош низким порогом изучения. Вы загружаете определенные обхекты и в зависимости от их свойств vue сам строит таблицы (с проданными и непроданными товарами), скрывает лишние элементы (не показывать такую-то кнопку, если товар всего 1), отправляет плагинам команды на обновление при изменении объектов и следит за тем, чтобы события, которые отваливались при jquery подходе работали.

    Я не сказать что спец в javascript, но (именно поэтому) меня vuejs на текущем проекте очень выручает.
    Ответ написан
    Комментировать
  • Как повторно использовать ng-controller как singleton?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Для этого factory придуманы. Используйте хоть 50 экземпляров контроллера, а данные храните в одном месте.
    Ответ написан
    Комментировать
  • Чем лучше всего заменить "чистый" JavaScript?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    когда требуется поддержка IE8, например?

    https://github.com/azproduction/autopolyfiller
    но протестить потом ручками не помешает.
    CoffeeScript и TypeScript уже утратили свою популярность

    CoffeeScript пожалуй, но TypeScript живее всех живых.
    В итоге хочу иметь чистый js (без подключения огромных скриптов поверх, которые в сумме весят больше изображений на сайте).

    Нуу.. переносим максимум логики на сервер. Толстый сервер - тонкий клиент.
    Ответ написан
    Комментировать
  • Как происходит деплой современного фронтенда?

    Можете посмотреть такие инструменты, как shipit и flightplan. Первый - более модульный, имеет некоторые плагины, а также поддерживает функцию "rolling releases" (чем-то похож на capistrano для ruby или deployer для php), второй же - более упрощенный.
    Варианты деплоя есть разные - можно локально собирать или на build-сервере и на прод заливать, а можно собирать уже на проде. Каждый выбирает то, что ему по душе.
    Ответ написан
    Комментировать
  • Как открывать заново текущий rout React.js, после перезагрузки страницы?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Я правильно понимаю, что у вас есть проект, на котором реакт рендерит лишь некоторые вьюхи? (то есть, только некоторые страницы?)
    В таком случае, вы можете сделать отдельные сборки для каждой страницы без использования роутинга вообще. Или, зачем он вам в таком случае?

    То есть: есть страница about на реакте, сделайте для нее bundle-about.js, для contacts на реакте - bundle-contacts.js и так далее.
    Ответ написан
    2 комментария