Задать вопрос
  • Лучший ресурс для изучения React?

    Astrohas
    @Astrohas
    Python/Django Developer
    я хоть и ненавижу ITVDn за излишнею майкрософтоманию, но курс по реакту у них отличный, да лекторша - дева с приятным голосом
    Ответ написан
    2 комментария
  • Кто работает на upwork только по верстке?

    vicodin
    @vicodin
    Имею некоторый опыт
    Работаю не только верстальщиком, но некоторые проекты на чистую верстку в работе имею. Без всяких натяжек на WordPress. Конкуренция низкая, так как хороших верстальщиков на Upwork мало(по той же причине не могу делегировать свой поток заказов - просто некому).
    Сейчас верстаю за 50$/hr.
    Английский может быть начальным, но должен не быть таким, если хочется иметь хороший рейт.
    Ответ написан
    32 комментария
  • Какая разница между es2015 и stage-0?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Это не «версия».

    Каждая фича, которую предлагается включить в ES, проходит несколько стадий, от 0 до 4. 0 — голое описание фичи в текстовом виде, 4 — фича имеет хорошие шансы попасть в следующий релиз, 3 — аналогично, но шансы поменьше. Таким образом, включая stage-0, можно использовать очень экспериментальные фичи. Есть вероятность, что они не войдут в стандарт вообще или заметно изменятся. В проекте, рассчитаном на долгую поддержку, я бы не стал их использовать, если только вы не активный участник TC39 или контрибютор babeljs.
    Ответ написан
    Комментировать
  • Как устроена архитектура современного front-end приложения?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В одностраничном приложении (SPA) присутствует единая точка входа. Это загрузка основного скрипта, который будет отвечать за логику работы приложения. Это как index.php в корне веб-сайта. Ну а дальше он уже сам решает, что делать. В основной скрипт обычно включены составляющие отвечающие за маршрутизацию и загрузку других частей приложения. Вы можете представить себе SPA как набор кирпичиков с раствором в виде основного скрипта.
    Так вот эти кирпичики могут быть загружены сразу, а могут лишь в тот момент, когда они потребуется, примерно как Autoloader в Composer.

    Относительно загрузки есть несколько разных подходов.
    1. Когда грузится только загрузчик и затем остальные скрипты и шаблоны подгружаются по необходимости.
    2. Когда все (скрипты+шаблоны) собирается в огромный JS-файл. Это файл потом работает.
    3. Когда JS идет большим файлом, а шаблоны отдельно (так работает AngularJS 1).

    Есть множество различных сборщиков, например WebPack, Gulp, Brunch, Grunt. Их вариаций много, не пугайтесь.

    После начальной загрузки приложение решает, что должно быть запущено первым. Обычно это какие-то системные вещи, вроде загрузки шаблонизатора, всяких кэшей и роутера.
    Далее роутер рабирает маршрут и запускает нужный модуль (контроллер/компонент); в зависимости от фреймворка это выглядит по-разному, но суть одна и таже.
    Каждый компонент отвечает за модификацию отдельных узлов дерева состояний, которое так или иначе спроецировано на DOM. Если смотреть на бэкенд, это как подставлять в шаблон данные, только на бэкэнде это происходит в один проход, а здесь перестройка происходит сразу после изменения оригинальных данных.
    В каждом феймворке это сделано по-своему. Смысл одинаков - проекция данных на DOM.
    Данные вытаскиваются приложением самостоятельно, могут быть загружены через Ajax. У меня есть приложение, где транспорт идет через веб-сокеты. Можно даже через iframe заморочиться, это не имеет значения.
    Иногда сервер отдает страничку с изначально подготовленными данными. Это делается в разных целях, в основном для уменьшения скорости старта приложения.

    Из личного опыта скажу, что вам следует начинать с Angular 2, т.к. он сделан намного проще остальных в плане использования.
    Ответ написан
    1 комментарий
  • Что такое замыкание?

    iCoderXXI
    @iCoderXXI
    React.JS/FrontEnd engineer
    В целом ты все верно понял. Почитал я тут ответы, термины, термины, термины...

    Я люблю простые объяснения, буквально на пальцах.

    Вот ты вызвал функцию, в ней создаются переменные локальной области видимости, т.е. доступные только самой функции. Под эти переменные движок JavaScript выделяет память.

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

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

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

    Один из основных паттернов, для которых применяются замыкания - ограничение доступа к данным, их изоляция (ограничение их области видимости).

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

    В ответах есть пример со счетчиком, который наглядно демонстрирует этот принцип.
    Ответ написан
    2 комментария
  • Как вы структурируете компоненты в react приложениях?

    maxfarseer
    @maxfarseer
    https://maxpfrontend.ru, обучаю реакту и компании
    Есть директория components, есть containers. Внутри почти плоский список, когда появляется какая-то явная группа, например 5 компонентов фильтров - создаю отдельную поддиректорию.

    Предлагаю вам не заморачиваться по этому поводу сильно .)
    Ответ написан
    Комментировать
  • Переход проекта с jQuery на Angular 1 или Angular 2 или React?

    @frozen_coder
    Java-developer
    Я за React + Redux. Вникать надо по минимуму. Если знаете JavaScript, то вам больше ничего и не надо, чтобы понять. На хабре полно статей, чтобы начать. Запоминать какие-то магические слова не надо (типа ng-то, ng-это).
    Не знаю за второй Angular, но решение на React + Redux будет быстрее первой версии.
    Больше свободы. Меньше специфического синтаксиса и невидимой магии, чем в Angular.
    Минус - вам нужно принять много своих решений как лучше сделать и выбрать между большим разнообразием доп. либ, но в этом же и плюс.
    Вместо Redux можно попробовать MobX.
    Angular2 активно эволюционирует, вроде только вышел, а уже 2.3. И я бы отнес TypeScript к плюсам - люблю типизацию. Но у React есть Flow.
    Ухожу с 1го Angular. Не нравится scope и двухсторонний биндинг. Переходить на 1й в долгосрочной перспективе смысл ли есть, когда будущего нет? ИМХО. Вопрос холиварный. Попробуйте оба-три варианта и выберете сами, что по душе.
    Ответ написан
    2 комментария
  • Как сделать так, чтобы до полного скачивания страницы выводился loader?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Да. Показать его вначале, а скрывать по событию DOMContentLoaded
    document.addEventListener("DOMContentLoaded", function(event) {
        // скрыть лоадер ))
      });
    Ответ написан
    Комментировать
  • Как в git вернуться вперед?

    svfat
    @svfat
    ☺Нужен VPS? Два месяца бесплатно. Смотри профиль☺
    Попробуйте:
    git reflog
    затем
    git reset --hard <хэш коммита>
    Ответ написан
    1 комментарий
  • Где скачать книгу "Разработка Backbone.js приложений"?

    iusfof
    @iusfof
    Front-end developer
    в вк в документах есть дофига книг, в том числе та, которую вы ищите
    Ответ написан
    Комментировать
  • Как сделать, чтобы div подстроился под высоту окна браузера?

    @IoannGrozny
    Front-end разработчик
    Зависит от контекста. Для современных браузеров подойдёт решение с CSS3 единицами 'vh';
    Для старых браузеров придётся задействовать javascript и отслеживать высоту экрана.
    caniuse.com/#feat=viewport-units - первый вариант, height: 100vh соответствует высоте окна браузера.
    https://api.jquery.com/height/ - второй вариант, $(window).height вернёт высоту окна браузера.
    По первому варианту:
    #hei {
        height: 100vh; /* 100vh - 100% от высоты viewport(окна браузера) */
    }

    По второму варианту:
    function setHeiHeight() {
        $('#hei').css({
            height: $(window).height() + 'px'
        });
    }
    setHeiHeight(); // устанавливаем высоту окна при первой загрузке страницы
    $(window).resize( setHeiHeight ); // обновляем при изменении размеров окна
    Ответ написан
    8 комментариев