Автор оригинала: FreeCodeCamp Community Member.
Yangshun Tay
Развитие переднего конца никогда не было таким сложным и захватывающим, как сегодня. Новые инструменты, библиотеки, рамки и плагины появляются через день. Есть так много, чтобы учиться.
К счастью, наша веб-команда на Хватает был Хранить С новейшими лучшими практиками и включил современную экосистему JavaScript в наших веб-приложениях.
Результатом этого является то, что наши новые инженеры напрошении или задних инженерах, которые не обязательно хорошо знакомятся с современным javaScript Ecosystem, могут чувствовать себя пораженным заграждением новых вещей, которые они должны учиться только для завершения своей функции или исправления ошибок в веб-приложение.
Вам необходимо, чтобы они руководствуются, чтобы они охватывали эту эволюцию переднего конца, научитесь легко ориентироваться на экосистеме и получить продуктивность в судоходном коде для наших пользователей как можно быстрее. Мы придумали руководство по изучению, чтобы представить, почему мы делаем то, что делаем.
Этот учебный руководство вдохновлен « план изучения для лечения усталости JavaScript » и мягко говоря, в том смысле, что мы рекомендуем определенные библиотеки/рамки для изучения для каждого аспекта разработки передней части, основываясь на том, что в настоящее время считается в настоящее время подходит для захвата.
Мы объясняем, почему определенная библиотека выбрана и предоставляет ссылки на учебные ресурсы, чтобы дать читателю забрать его самостоятельно. Альтернативные варианты, которые могут быть лучше для других случаев использования, также предоставляются для справки и дальнейшего самосознания.
Если вы знакомы с разработкой передней части и были последовательно отставать от последних разработок, это руководство, вероятно, не будет таким полезным для вас. Это нацелено на новички к передней части.
Если ваша компания также изучает современный стек JavaScript, вы можете найти это руководство по изучению полезным для вашей компании! Не стесняйтесь адаптировать его к вашим потребностям. Мы будем периодически обновлять это исследование, согласно нашей последней работе и варианту.
Обратите внимание, что мы опубликовали это руководство по изучению на Github Также и мы сделаем будущие обновления для него там.
Grab/Front-End-Guide Фронта-руководство -? Учебный руководство и введение в современную стопку передней части. ithub.com.
Подготовка к передним техническим интервью? Проверьте это справочник который содержит ответы на знаменитые вопросы собеседования на переднем углу.
Yangshun/Front-End-Esbile-Handbook Фронт-интервью-справочник -? Почти завершенные ответы на «Вопросы собеседования на работе в интерфейсе» G ithub.com.
Предпосылки
- Хорошее понимание основных концепций программирования.
- Комфортно с базовыми действиями командной строки и знакомства с системами управления версиями исходного кода, такие как GIT.
- Опыт работы в Интернете. Сделали веб-серверные веб-приложения, использующие каркасы, такие как Ruby на рельсах, Django, Express и т. Д.
- Понимание того, как работает веб. Знакомство с веб-протоколами и конвенциями, такими как HTTP и RESTFLAY API.
Некоторые вещи, которые мы покроем в этой статье:
- Однострановые приложения (SPA)
- JavaScript New-age
- Пользовательский интерфейс
- Государственное управление
- Кодирование со стилем
- Тестирование
- Рединг JavaScript
- Отвлечение CSS.
- Типы
- Система сборки
- Управление пакетами
- Непрерывная интеграция
- Хостинг
- Развертывание
Не стесняйтесь пропустить некоторые из этих тем, если у вас уже есть предыдущий опыт с ними.
Однострановые приложения (SPA)
Веб-разработчики в эти дни относятся к продуктам, которые они строят в виде веб-приложений, а не на веб-сайты. Хотя нет строгого различия между двумя условиями, веб-приложения, как правило, очень интерактивные и динамические, позволяющие пользователю выполнять действия и получать ответ на их действия.
Традиционно браузер получает HTML с сервера и отображает его. Когда пользователь навигаций к другому URL, требуется полноценное обновление, и сервер отправляет свежий новый HTML для новой страницы. Это называется рендерингом на стороне сервера.
Однако в современных курортах вместо этого используется рендеринг на стороне клиента. Браузер загружает начальную страницу с сервера, а также скрипты (Frameworks, библиотеки, код приложения) и таблицы стилей, необходимые для всего приложения. Когда пользователь навигации на других страницах, обновление страницы не срабатывает. URL страницы обновляется через HTML5 История API Отказ Новые данные, необходимые для новой страницы, обычно в формате JSON, извлекается браузером через Ajax запросы на сервер. Спа тогда динамически обновляет страницу с данными через JavaScript, которую он уже загрузил на начальную страницу нагрузки. Эта модель похожа на то, как работают собственные мобильные приложения.
Выгоды:
- Приложение чувствует себя более отзывчивым, и пользователи не видят вспышку между навигациями страницы из-за полногасных обновлений.
- Меньше HTTP-запросов сделаны на сервере, так как одинаковые активы не должны быть загружены снова для каждой нагрузки страницы.
- Четкое разделение опасений между клиентом и сервером; Вы можете легко построить новые клиенты для разных платформ (например, Mobile, Chatbots, Smart Watchs) без необходимости изменить код сервера. Вы также можете изменить технологический стек на клиенте и сервере независимо, до тех пор, пока договор API не нарушен.
Даунсид:
- Более тяжелая нагрузка на начальную страницу из-за загрузки рамок, кода приложения и активов, необходимых для нескольких страниц.
- На вашем сервере есть дополнительный шаг, который должен быть сделан на вашем сервере, который должен настроить его в маршрут всех запросов на одну точку входа и разрешить маршрутизацию на стороне клиента, чтобы взять оттуда.
- СПА полагается на JavaScript для рендеринга содержимого, но не все поисковые системы выполняют JavaScript во время ползания, и они могут видеть пустое контент на вашей странице. Это непреднамеренно ранит SEO вашего приложения.
В то время как традиционные приложения для оказанных серверов на стороне сервера все еще являются жизнеспособными опцией, четкое разделение клиент-серверов лучше для больших инженерных групп, поскольку клиентский и серверный код может быть разработан и выпущен независимо. Это особенно так, если у нас есть несколько клиентских приложений, ударяющих о том же сервере API.
Поскольку веб-разработчики теперь строят приложения, а не страницы, организация JavaScript на стороне клиента стала все более важным. На стороне сервера представлены страницы, общим использование фрагментов jQuery, чтобы добавить интерактивность пользователя на каждую страницу. Однако при строительстве больших приложений только jQuery недостаточно. В конце концов, jQuery – это в первую очередь библиотека для манипуляций DOM, и это не является структурой; Он не определяет четкую структуру и организацию для вашего приложения.
JavaScript Frameworks были созданы для обеспечения абстракций более высокого уровня над домом, что позволяет удерживать состояние в памяти, из-за DOM. Использование Frameworks также приносит преимущества повторного использования рекомендуемых концепций и лучших практик для строительства приложений. Новый инженер по команде, который не знаком с кодовой базой, но имеет опыт работы с рамками, будет легче понять код, потому что он организован в структуре, с которой они знакомы. Популярные рамки имеют много учебных пособий и руководств, и нажав на знания и опыт от коллег, и сообщество поможет новым инженерам встать на скорость быстро.
Учебные ссылки
- Приложение для одиноких страниц: Преимущества и недостатки
- Эволюция веб-разработки (R)
- Вот почему клиентский рендеринг выиграл
JavaScript New-age
Прежде чем погрузиться в различные аспекты построения веб-приложения JavaScript, важно познакомиться с языком Web – JavaScript или Ecmascript. JavaScript – это невероятно универсальный язык, который вы также можете использовать для создания Веб-серверы , родные мобильные приложения и Настольные приложения Отказ
До 2015 года последнее крупное обновление было ECMAScript 5.1, в 2011 году. Однако в последние годы JavaScript внезапно видел огромный взрыв улучшений в течение короткого периода времени. В 2015 году Ecmascript 2015 (ранее называемое Ecmascript 6) было выпущено, и была введена тонна синтаксических конструкций, чтобы сделать написание кода менее громоздкими. Если вам интересно это, AUTH0 написал хорошую статью о История JavaScript Отказ До этого дня не все браузеры полностью реализовали спецификацию ES2015. Инструменты, такие как Бабел Разрешите разработчикам для записи ES2015 в их приложениях, и Babel транкирует их до ES5, чтобы быть совместимым для браузеров.
Быть знаком с ES5, так и ES2015, имеет решающее значение. ES2015 все еще относительно нова и много открытого исходного кода и приложений Node.js все еще записаны в ES5. Если вы делаете отладку в консоли браузера, вы не сможете использовать синтаксис ES2015. С другой стороны, документация и пример кода для многих современных библиотек мы представим позже ниже, все еще написаны в ES2015. Нахвата, мы используем использование Babel-Preset-Env Наслаждаться повышением повышения производительности от синтаксических улучшений, будущее JavaScript обеспечивает, и мы так долго любили. Babel-Preset-Env
Интеллектуально определяет, какие плагины Babel необходимы (какие новые языковые функции не поддерживаются и должны быть трансформированы), поскольку браузеры увеличивают нативную поддержку для большего количества функций языка ES. Если вы предпочитаете использовать языковые функции, которые уже стабильны, вы можете обнаружить, что Babel-Preset-Stage-3 , что является полной спецификацией, которая, скорее всего, будет реализована в браузерах, будет более подходящим.
Проведите день или два пересмотра ES5 и исследуя ES2015. Более сильно используемые особенности в ES2015 включают «стрелки и лексические это», «классы», «шаблонные струны», «деструктурирующие», «Операторы по умолчанию/отдыхам/распространению», а также «импортные модули для экспорта».
Расчетная продолжительность: 3-4 дня. Вы можете узнать/нажать на синтаксис, когда вы узнаете другие библиотеки и попробуйте построить свое собственное приложение.
Учебные ссылки
- Узнать ES5 на кодекадемии
- Узнайте ES2015 на Вавиле
- ES6 Katas
- Бесплатный код лагеря
- Вы не знаете JS (Расширенный контент, необязательный для начинающих)
Пользовательский интерфейс – реагировать
Если в последние годы какой-либо проект JavaScript предпринял переднюю концевую экосистему в последние годы, это было бы Реагировать Отказ React – это библиотека, построенная и открытая умными людьми на Facebook. В реакции разработчики пишут компоненты для своего веб-интерфейса и составляют их вместе.
Реагировать о многих радикальных идеях и поощряет разработчиков на переосмыслить лучшие практики Отказ На протяжении многих лет веб-разработчики учили, что это была хорошая практика для записи HTML, JavaScript и CSS отдельно. Реагирование делает точную противоположность и поощряет, что вы пишете свой HTML и CSS в вашем JavaScript вместо. Сначала это звучит как сумасшедшая идея, но после пробуждения ее на самом деле не так странно, как это звучит изначально. Причина, являющаяся местом развития переднего конца, переходит к парадигем компонентов развития. Особенности реагирования:
- Декларативный – Вы описываете то, что вы хотите увидеть на своем мнении, а не как его добиться. В дни jQuery разработчики должны будут придумать серию шагов, чтобы манипулировать DOM, чтобы получить из одного устройства приложения к следующему. В реакции вы просто измените состояние в компоненте, и представление будет обновляться в соответствии с состоянием. Также легко определить, как будет выглядеть компонент, просто посмотрев на разметку в
Render ()
метод. - Функциональный – Вид – это чистая функция
реквизит
иГосударство
Отказ В большинстве случаев компонент React определяетсяреквизит
(внешние параметры) иГосударство
(внутренние данные). Для того жереквизит
иГосударство
тот же вид производится. Чистые функции легко проверить, и то же самое касается функциональных компонентов. Тестирование в реакции производится легко, потому что интерфейсы компонента четко определены, и вы можете проверить компонент, поставляя различныереквизит
иГосударство
к нему и сравнение оказанного вывода. - Поднесение – Написание вашего представления в компонентной моде поощряет повторное использование. Мы находим, что определение компонента
Пропорты
Сделайте ADCED Code самодокументирование, так как читатель может четко знать, что нужно для использования этого компонента. Наконец, ваш вид и логика самостоятельно содержится в компоненте, и не следует затронуть и не влиять на другие компоненты. Это облегчает смещение компонентов во время крупномасштабных рефакторинга, до тех пор, пока одинаковореквизит
поставляются на компонент. - Высокая производительность – Возможно, вы слышали, что реагирование использует виртуальный DOM (не быть путать с Shadow DOM ), и она переназначает все, когда происходит изменение в состоянии. Почему есть необходимость в виртуальном доме? Хотя современные двигатели JavaScript быстро, читая и писать до DOM медленно. РЕАКТ одержит легкое виртуальное представление дома в памяти. Переработка всего является вводящим в заблуждение срок. В реакции он фактически относится к повторной рендере в памяти представления DOM, а не фактического дома. Когда существует изменение базовых данных компонента, создается новое виртуальное представление и сравнивается с предыдущим представлением. Разница (потребность в минимальном наборе изменений) затем исправляется до реального браузера DOM.
- Простота обучения – Изучение реагирование довольно просто. Поверхность API RACT относительно мала по сравнению с это ; Есть только несколько API для изучения, и они не меняются часто. Общественное сообщество React является одним из крупнейших, и наряду с этим наступает яркая экосистема инструментов, компонентов с открытым интерфейсом, а также тонна отличных ресурсов, которые начнутся, чтобы вы начали начать реагирование.
- Опыт разработчика – Есть ряд инструментов, которые улучшают опыт развития реагирования. Инструменты разработчика реагирования Это расширение браузера, которое позволяет осматривать ваш компонент, просматривать и манипулировать его
реквизит
иГосударство
Отказ Горячая перезагрузка С WebPack позволяет вам просматривать изменения в вашем коде в вашем браузере, без необходимости обновлять браузер. Разработка переднего конца включает много настроек кода, сохраняя и затем обновляющую браузер. Горячая перезагрузка поможет вам, устраняя последний шаг. Когда есть библиотечные обновления, Facebook предоставляет Сценарии кодом Чтобы помочь вам перенести свой код в новые API. Это делает процесс модернизации относительно обезболивающим. Кедос в команду Facebook за свою преданность в создании опыта разработки реагировать великим.
За прошедшие годы новые библиотеки просмотра, которые еще более исполняются, чем реагирование. Реагистрация не может быть самой быстрой библиотекой, но с точки зрения экосистемы, общий опыт использования и преимуществ и преимуществ, оно все еще является одним из величайших. Facebook также направляет усилия в создание реагирования даже быстрее с помощью Переписать основной алгоритм примирения Отказ Концепции, которые реагируют введенные, научили нас, как писать лучший код, более приемлемые веб-приложения и сделали нас лучшим инженерам. Нам это нравится.
Мы рекомендуем пройти через Учебное пособие На создании игры Tic-Tac-Toe на домашней странице реагирования, чтобы почувствовать, что реагирует и что он делает. Для более глубокого обучения проверить бесплатный курс с высокой оценкой, Реагистрационные основы Создателями React Router , которые являются экспертами из сообщества React. Он также охватывает более продвинутые концепции, которые не охватываются документацией по реагированию. Создать ract app Facebook – это инструмент для проекта React Project с минимальной конфигурацией и настоятельно рекомендуется использовать для начала новых реагированных проектов.
React – это библиотека, а не рамка, а не имеет дело с слоями ниже представления – состояние приложения. Больше на этом позже.
Расчетная продолжительность: 3-4 дня. Попробуйте построить простые проекты, такие как список дел, Hacker News Clone с чистым реагированием. Вы будете медленно получить признательность за это и, возможно, столкнуться с некоторыми проблемами по пути, которое не решено реагированием, что приводит нас к следующей теме …
Учебные ссылки
- Реагировать на официальный учебник
- Реагистрационные основы
- Простое развитие реагирования в 2017 году
- Компоненты презентационного и контейнера
Альтернативы
Государственное управление – Flux/Redux
Поскольку ваше приложение растет больше, вы можете обнаружить, что структура приложений становится немного грязной. Компоненты во всем приложении могут поделиться и отображать общие данные, но нет элегантного способа обрабатывать это в реакции. В конце концов, Rect – это просто слой просмотра, он не диктует, как вы структурируете другие слои вашего приложения, такие как модель и контроллер, в традиционных парадигмах MVC. При попытке решить это, Facebook изобрел поток, архитектуру приложения, дополняющую композиционные компоненты реагирования, используя однонаправленный поток данных. Узнайте больше о том, как работает Flux здесь Отказ Таким образом, рисунок потока имеет следующие характеристики:
- Однонаправленные данные поток – делает приложение более предсказуемым, так как обновления могут быть легко отслежены.
- Разделение опасений – Каждая часть в архитектуре потока имеет четкие обязанности и сильно отделены.
- Хорошо работает с декларативным программированием – Магазин может отправлять обновления на просмотр, не указывая, как переходные представления между государствами.
Поскольку Flux не является структурой SE, разработчики попытались придумать множество реализаций картины потока. В конце концов, появился четкий победитель, который был Redux Отказ Redux сочетает в себе идеи из потока, Узор команды и Элма архитектура И разработчики библиотеки государственного управления де-факто используют в наши дни. Его основные концепции:
- Приложение Государство описывается одним простым старым объектом JavaScript (POJO).
- Отправить Действие (Также POJO), чтобы изменить состояние.
- Редуктор Это чистая функция, которая принимает текущее состояние и действие для получения нового состояния.
Концепции звучат просто, но они действительно мощны, поскольку они позволяют приложениям к:
- Имейте свое состояние на сервере, загружено на клиенту.
- Трассировка, журнал и возврат возврата в целом приложение.
- Реализовать функциональность отменить/повторить функции.
Создатель redux, Дэн Абрамов , забил большую помощь в написании подробной документации для Redux, а также создание всеобъемлющих видеоуробников для обучения Базовый и Продвинутый Redux. Они чрезвычайно полезны для обучения Redux.
Сочетать вид и состояние
Хотя Redux не обязательно должен использоваться с реакцией, настоятельно рекомендуется, поскольку они очень хорошо играют друг с другом. Реагировать и Redux имеют много идей и общего числа:
- Функциональный состав парадигмы – Реагистрационные представления (чистые функции) в то время как Redux составляют чистые редукторы (также чистые функции). Вывод предсказуема придано тот же набор ввода.
- Легко расследую о – Вы, возможно, слышали этот термин много раз, но что это на самом деле значит? Мы интерпретируем его как имеющие контроль и понимание нашего кода – наш код ведет себя способами, мы ожидаем его, и когда есть проблемы, мы можем их легко найти. Через наш опыт реагировать и redux предоставляют отладку проще. Поскольку поток данных является однонаправленным, отслеживание потока данных (ответы на серверы, события ввода пользователей) легче, и это просто, чтобы определить, какой слой возникает проблема.
- Слоистая структура – Каждый слой в архитектуре приложения/потока – это чистая функция, и имеет четкие обязанности. Это относительно легко писать тесты для чистых функций.
- Опыт развития – Многие усилия ушли в создание инструментов, чтобы помочь в отладке и осматривать приложение во время развития, например Redux devtools Отказ
Ваше приложение, вероятно, придется иметь дело с асинхронизами, такими как делать удаленные запросы API. Redux-Thunk и Redux-Saga были созданы для решения этих проблем. Они могут занять некоторое время, чтобы понять, как требуется понимание функциональных программиров и генераторов. Наш совет должен иметь дело только тогда, когда вам это нужно.
React-redux является официальным связыванием с реагированием для Redux и очень просто учиться.
Расчетная продолжительность: 4 дня. Курсы EGGHEAD могут быть немного трудоемкими, но они стоят тратить время. После обучения Redux вы можете попробовать включить его в проекты React Projects. Redux решает некоторые проблемы государственного управления, с которыми вы боролись с чистым реагированием?
Учебные ссылки
- Домашняя страница Flux.
- Домашняя страница redux.
- Курс EGGHEAD – Начало работы с Redux
- Курс EGGHEAD – построить React Apps с идиоматическим Redux
- React Redux ссылки
- Возможно, вам не понадобится redux
Альтернативы
Кодирование со стилем – CSS модули
CSS (каскадные листы стилей) – это правила, чтобы описать, как выглядят ваши HTML-элементы. Писать хорошие CSS сложно. Обычно это занимает многолетний опыт и разочарование стрельбы себя в ноге, прежде чем кто-то сможет писать ремонторуемыми и масштабируемыми CSS. CSS, имеющие глобальное пространство имен, принципиально предназначен для веб-документов, а не на самом деле для веб-приложений, которые предполагают архитектуру компонентов. Следовательно, опытные разработчики передних конечностей разработали методологии, чтобы направлять людей о том, как писать организованные CSS для сложных проектов, таких как использование Smacss , Бем , Костюм CSS , так далее.
Как вы, возможно, реализуются на сегодняшний день, экосистема передней части насыщена инструментами, а неудивительно, что инструменты были изобретены в Частично решить некоторые проблемы с написанием CSS в масштабе. «В масштабе» означает, что многие разработчики работают над тем же крупным проектом и касаются одних и тех же таблиц стилей. Там нет согласованного сообщества подход к написанию CSS в JS На данный момент, и мы надеемся, что однажды победитель появится, просто как Redux сделал, среди всех реализаций потока. На данный момент мы банан на CSS модули Отказ Модули CSS – это улучшение по существующим CSS, которые направлены на решение проблемы глобального пространства имен в CSS; Это позволяет вам писать стили, которые по умолчанию являются локальными и инкапсулированы к вашему компоненту. Эта функция достигается с помощью инструментов. С модулями CSS большие команды могут писать модульные и многоразовые CSS, не опасаясь конфликта или переопределения других частей приложения. Однако в конце дня CSS-модули по-прежнему компилируются в нормальные H глобально-имен CSS, которые распознают браузеры, и все еще важно учиться и понимать, как работает RAW CSS.
Если вы полтый новичок в CSS, кодекадемы HTML & CSS курс будет хорошее введение для вас. Далее прочитайте на Sass Preprocessor , расширение языка CSS, который добавляет синтаксические улучшения и поощряет повторное использование стиля. Изучите методологии CSS, упомянутые выше и, наконец, модули CSS.
Расчетная продолжительность: 3-4 дня. Попробуйте утешить свое приложение, используя подход SMACS/BEM и/или модули CSS.
Учебные ссылки
- Учите курс HTML & CSS на кодекадемии
- Введение в HTML/CSS на Ханской академии
- SMACSS.
- Бемический
- Костюм CSS.
- Спецификация модулей CSS
- Главная страница Sass.
- Ответы на передние задания Вопросы собеседования – HTML ⭐.
- Ответы на передний план собеседования Вопросы – CSS ⭐.
Альтернативы
Ремонтность
Код читается чаще, чем написано. Это особенно верно на захвате, где размер команды большой, и у нас есть несколько инженеров, работающих в нескольких проектах. Мы высоко ценят читаемость, ремонтопригодность и стабильность кода, и есть несколько способов достижения того: «Обширное тестирование», «Совместное стиль кодирования» и «TypeChecking».
Тестирование – шума + фермент
Jest Является ли библиотека тестирования Facebook, которая направлена на процесс тестирования безболезненного. Как и в случае с проектами Facebook, он предоставляет отличный опыт разработки из коробки. Тесты могут быть запущены параллельно, что приводит к более короткой продолжительности. Во время режима часов, по умолчанию запущены только тесты для измененных файлов. Одна конкретная функция, которую нам нравится, это «тестирование снимков». Quest может сохранить сгенерированный выход вашего компонента React Component и State redux и сохранить его в качестве сериализованных файлов, поэтому вам не придется вручную придумать ожидаемый выпуск самостоятельно. Jest также поставляется со встроенным издевательством, утверждением и тестовым покрытием. Одна библиотека, чтобы управлять их всеми!
Реакция поставляется с некоторыми утилитами тестирования, но Фермент По Airbnb облегчает генерацию, утверждать, манипулировать и пройти выходные компоненты React Components с API jQuery. Рекомендуется использовать фермент для проверки компонентов реагирования.
Jest and Enzyme делают писать передние испытания в веселую и легко. При написании тестов становится приятным, разработчики пишут больше тестов. Это также помогает, чтобы компоненты реагирования и действия/редукторы Redux относительно просты в тесте из-за четко определенных обязанностей и интерфейсов. Для компонентов реагирования мы можем проверить, что дано некоторые реквизит
, желаемый DOM отображается, и что обратные вызовы выпускаются при определенных симулированных взаимодействиях пользователя. Для редукторов Redux мы можем проверить, что дано предварительное состояние и действие, полученное состояние получение.
Документация для шума и фермента довольно кратко, и должно быть достаточно, чтобы узнать их, читая его.
Расчетная продолжительность: 2-3 дня. Попробуйте написать jest + Enzyme Tests для вашего Action + Redux!
Учебные ссылки
- Домашняя страница
- Тестирование приложений реагирования с шумом
- Главная страница фермента
- Фермент: Утилиты тестирования JavaScript для реагирования
Альтернативы
Линцинг JavaScript – Eslint
Linter – это инструмент для статически анализатора кода и находит проблемы с ними, потенциально предотвращающие ошибки/ошибки выполнения и одновременно, при этом стиль кодирования. Время сохраняется во время потяжного запроса отзывов, когда рецензенты не должны оставлять nitpicky комментарии к стилю кодирования. Eslint Является инструментом для линтного кода JavaScript, который очень расширяется и настраивается. Команды могут написать свои собственные правила льта для обеспечения соблюдения их пользовательских стилей. Нахвата, мы используем Airbnb Eslint-config-airbnb Предустановите, что уже настроен с общим хорошим стилем кодирования в Руководство по стилю Airbnb JavaScript Отказ
По большей части, используя ESLINT так же просто, как настройка файла конфигурации в папке проекта. Нет ничего особенного, чтобы узнать о Eslint, если вы не пишете новым правилам для него. Просто будьте в курсе ошибок, когда они поверхностные и Google его узнают рекомендуемый стиль.
Расчетное продолжительность: 1/2 день. Здесь ничего не нужно учиться. Добавьте Eslint в свой проект и исправьте ошибки подтянуты!
Учебные ссылки
Альтернативы
Рятистые CSS – StyleLint
Как упоминалось ранее, хорошие CSS целесообразно писать. Использование инструментов статического анализа на CSS может помочь сохранить качество и кодировать качество кода CSS. Для льготных CSS мы используем StyleLint. Как и Eslint, Stylelint разработан в очень модульной моде, позволяя разработчикам включить/выключать правила и записывать пользовательские плагины для него. Помимо CSS, Stylelint способен анализировать SCSS и имеет экспериментальную поддержку для меньшего количества, что снижает барьер для большинства существующих основных баз кода для его принятия.
Как только вы узнаете Eslint, изучение стихийного стиля будет без усилий, учитывая их сходство. Stylelint в настоящее время используется крупными компаниями, такими как Facebook , Github и WordPress Отказ
Один недостаток Stylelint заключается в том, что функция Autofix еще не полностью зрела, и может быть только для ограниченного количества правил. Однако эта проблема должна улучшаться со временем.
Расчетное продолжительность: 1/2 день. Здесь ничего не нужно учиться. Добавьте StyleLint в свой проект и исправить ошибки подтягивания!
Учебные ссылки
Альтернативы
Типы – поток
Статическая набравка приносит много преимуществ при написании приложений. Они могут ловить общие ошибки и ошибки в вашем коде рано. Типы также служат формой документации для вашего кода и улучшает читаемость вашего кода. Как кодовое основание растет больше, мы видим важность типов, поскольку они дают нам большую уверенность, когда мы делаем рефакторинг. Также легче на борту новых членов команды в проекте, когда понятно, какие значения выполняются каждый объект, и какие параметры каждая функция ожидает и возвращает.
Недавно я должен был исправить ошибку в кодовой базе, которую я не тронул в течение нескольких месяцев. Это было благодаря типам, которые я мог легко освежить себя на том, что делал код, и дал мне уверенность в исправлении, которое я сделал.
Два самых больших претендента в добавлении статических типов на JavaScript являются Поток (на Facebook) и Tymdercript (Microsoft). На дату в битве нет четкого победителя. На данный момент мы сделали выбор использования потока. Мы находим, что поток имеет нижнюю кривую обучения по сравнению с типографическими, и она требует относительно менее усилий для переноса существующей кодовой базы для потока. Быть построенным Facebook, поток имеет лучшую интеграцию с помощью экосистемы RACTED из коробки. Джеймс Кайл , один из авторов потока, имеет написано по сравнению между приемным потоком и Teadercript.
Во всяком случае, не очень трудно перейти от потока в TypeScript, поскольку синтаксис и семантика очень похожи, и мы повторем оценке ситуации вовремя. Ведь используя один лучше, чем вообще не использовать.
Поток недавно обновил свою домашнюю страницу, и теперь это довольно аккуратно!
Расчетная продолжительность: 1 день. Поток довольно прост, чтобы узнать, что аннотации типа чувствуют себя как естественное расширение языка JavaScript. Добавьте аннотации потока в ваш проект и охватите силу типа систем.
Учебные ссылки
Альтернативы
Система сборки – WebPack
Эта часть будет короткими, поскольку настройка WebPack может быть утомительным процессом и может быть отключенным к разработчикам, которые уже перегружены заграждением новых вещей, которые они должны учиться для развития переднего конца. В двух словах, WebPack Является ли Bundler модулем, который компилирует проект переднего конца и его зависимости в финальный комплект для обслуживания для пользователей. Обычно проекты уже будут настроить конфигурацию WebPack, и разработчики редко должны ее изменить. Наличие понимания WebPack по-прежнему хорошо иметь в долгосрочной перспективе. Это связано с WebPack, который способен, такие как модули горячего перезагрузки и CSS.
Мы нашли WebPack Worlthrough Выживу, чтобы быть лучшим ресурсом на обучении Уэбпака. Это хорошее дополнение к официальной документации, и мы рекомендуем сначала после прохождения и ссылки на документацию позже, когда возникает необходимость дальнейшей настройки.
Расчетная продолжительность: 2 дня (необязательно).
Учебные ссылки
Альтернативы
Управление пакетами – пряжа
Если вы загляните в свой node_modules
Справочник, вы будете потрясены количеством каталогов, которые содержатся в нем. Каждый плагин Babel, функция Lodash, это пакет самостоятельно. Когда у вас есть несколько проектов, эти пакеты дублируются через каждый проект, и они в значительной степени похожи. Каждый раз, когда вы запускаете NPM установить
В новом проекте эти пакеты загружаются снова и снова, даже если они уже существуют в каком-то другом проекте на вашем компьютере.
Была также проблема не детерминизм в установленных пакетах через NPM установить
Отказ Некоторые из наших CI строят из строя, потому что в точке времени, когда сервер CI устанавливает зависимости, он вытянул незначительные обновления для некоторых пакетов, которые содержали разбитые изменения. Это не произошло бы, если бы авторы библиотеки уважали СЕМВЕР И инженеры не предполагали, что контракты API будут соблюдаться все время.
Пряжа решает эти проблемы. Вопрос неопределения установленных пакетов обрабатывается через пряжа. Блок
Файл, который гарантирует, что каждая установка приводит к тому же структуре файлов в node_modules
через все машины. Пряжа использует глобальный каталог кэша внутри вашего компьютера, а также пакеты, которые были загружены ранее, не должны быть загружены снова. Это также позволяет автономным установке зависимостей!
Наиболее распространенные команды пряжи можно найти здесь Отказ Большинство других команд пряжи похожи на NPM
эквиваленты, и это нормально использовать NPM
Версии вместо этого. Одна из наших любимых команд – Обновление пряжи - интерактивная
Что делает обновление зависимостей ветерок, особенно когда современный проект JavaScript требует так много зависимостей в наши дни. Проверьте это!
NPM @ 5.0.0 был выпущен в мае 2017 года И, похоже, решает многие из вопросов, которые пряжа стремится решить. Следите за этим!
Расчетная продолжительность: 2 часа.
Учебные ссылки
Альтернативы
Непрерывная интеграция
Мы используем Трэвис CI Для нашей непрерывной интеграции (CI) трубопровода. Трэвис – очень популярный CI на Github и его построить матрицу Функция полезна для репозиториев, которые содержат несколько проектов, таких как Grab’s. Мы настроили TRAVIS, чтобы сделать следующее:
- Беги протягивания для проекта.
- Запустите модульные тесты для проекта.
- Если тесты проходят:
- Тестовое покрытие, созданное шумом, загружено на Кодеков Отказ
- Создайте производственный пучок с помощью WebPackack в
построить
каталог. Tar
построить
каталог какt; .tar и загрузите его к ведрю S3, который хранит все наши сборки TAL. - Разместите уведомление о расслаивании, чтобы сообщить о результате сборки TRAVIS.
Учебные ссылки
Альтернативы
Хостинг – Amazon S3
Традиционно веб-серверы, которые получают запрос на веб-страницу, будут отображаться содержимое на сервере и возвращает HTML-страницу с динамическим контентом, предназначенным для запроса. Это известно как рендеринг на стороне сервера. Как упоминалось ранее в разделе «Однострановые приложения», современные веб-приложения не включают рендеринг на стороне сервера, и достаточно использовать веб-сервер, который обслуживает файлы статических активов. Nginx и Apache возможны варианты, и не настолько конфигурация, необходима для того, чтобы добиться и договариваться. Ужеюмера состоит в том, что веб-сервер должен быть настроен на маршрут всех запросов на одну точку входа и разрешить маршрутизацию на стороне клиента. Поток для маршрутизации передней части идет так:
- Веб-сервер получает HTTP-запрос для определенного маршрута, например
/Пользователи/Джон
Отказ - Независимо от того, какой маршрут сервер получает, служат
index.html
из каталога статического актива. -
index.html
Должен содержать скрипты, которые загружают JavaScript Framework/библиотеку, которая обрабатывает маршрутизацию на стороне клиента. - Библиотека маршрутизации на стороне клиента читает текущий маршрут и сообщает Framework MVC (или эквиваленту, где релевантно) о текущем маршруте.
- Framework MVC JavaScript отображает желаемый вид на основе маршрута, возможно, после получения данных из API, если требуется. Пример, загрузка
UsersController
Получите данные пользователя для имени пользователяДжон
Как JSON, сочетайте данные с видом и визуализируйте его на странице.
Хорошая практика для обслуживания статического контента – использовать кэширование и помещать их на CDN. Мы используем Amazon Простая служба хранения (S3) Поскольку он может как хост и действовать как CDN для нашего статического контента веб-сайта. Мы находим, что это доступное и надежное решение, которое отвечает нашим потребностям. S3 предоставляет возможность «использовать это ведро для проведения веб-сайта», что по существу направляет запросы на все маршруты к корню ковша, что означает, что нам не нужны собственные веб-серверы со специальными конфигурациями маршрутизации.
Пример веб-приложения, который мы размещаем на S3, это Хаб Отказ
Кроме того, прохождение сайта, мы также используем S3 для проведения сборки .tar
Файлы, сгенерированные из каждой успешной сборки TRAVIS.
Учебные ссылки
Альтернативы
Развертывание
Последний шаг в доставке продукта нашим пользователям является развертывание. Мы используем Ошибная башня Это мощное программное обеспечение для автоматизации, которое позволяет легко развертывать наши сборки.
Как упоминалось ранее, все наши комбиниты, после успешной сборки, загружаются в Central S3 Bucket для сборки. Мы следуем семете для наших выпусков и имеют команды для автоматической генерации заметок выпуска для последнего выпуска. Когда пришло время выпустить, мы запускаем команду для течения последних коммит и нажмите на нашу среду хостинга кода. TRAVIS будет запустить шаги CI на Teaged Compart Compart и загружать файл TAR (например, 1.0.1.tar
) с версией нашего ведра S3 для сборки.
На башне мы просто должны указать имя .tar
Мы хотим развернуть в нашем хостинговом ведре, а башня делает следующее:
- Загрузите желаемое
.tar
Файл из наших сборки S3 Bucket. - Извлекивает содержимое и своп в файл конфигурации для указанной среды.
- Загрузите содержимое в хостинговое ведро.
- Разместите уведомление, чтобы сообщить об успешном развертывании.
Весь весь процесс проводится в возрасте до 30 секунд, а использование башни сделало развертывание и откаты легко. Если мы понимаем, что произошло неисправное развертывание, мы можем просто найти предыдущий стабильный тег и развернуть его.
Учебные ссылки
Путешествие только началось
Поздравляем с тем, чтобы сделать это далеко! Разработка переднего конца сегодня тяжело , но это также интереснее, чем раньше. То, что мы накрыли до сих пор, помогут любому новому инженеру получить веб-команду GRAB, чтобы встать на скорость с нашими технологиями довольно быстро. Есть еще много вещей, но построение прочной основы в основных условиях поможет в изучении остальных технологий. Это полезно Передний конец веб-разработчика Roadmap Показывает альтернативные технологии, доступные для каждого аспекта.
Хватает Лидирующая транспортная платформа Юго-Восточной Азии (SEA) и наша миссия – водить море вперед, используя новейшие технологии и талантливых людей, которые мы имеем в компании. По состоянию на май 2017 года схватывают ручки 2,3 млн езды ежедневно И мы расти и нанимаем на быстром масштабе.
Следовательно, мы сделали наши технические решения, основанные на том, что было важно для быстрорастущей команды GRAB Engineering – ремонтопригодность и стабильность кодовой базы. Эти решения могут или не могут применяться к меньшим командам и проектам. Оцените, что лучше всего подходит для вас и вашей компании.
По мере роста экосистемы передней части растут, мы активно изучаем, экспериментируя и оценивая, как новые технологии могут сделать нас более эффективной командой и повысить нашу производительность. Мы надеемся, что этот пост дал вам представление о технологиях, которые мы используем в GRAB. Если что мы вам интересуем, Мы нанимаем !
Если вам понравилось эту статью, пожалуйста, не забудьте оставить? (Вы знаете, что вы можете хлопать более одного раза? Попробуйте и посмотрите на себя!). Вы также можете следовать нами на F Acebook и т Увеличение
Эта статья была первоначально опубликована на Грабский инженерный блог Отказ Оригинальное исследование можно найти на Гадость И будущие обновления для этого будут сделаны там.
Grab/Front-End-Guide Фронта-руководство -? Учебный руководство и введение в современную стопку передней части. ithub.com.
Написано Tay Yang Shun. Отказ Большое спасибо Джоэл Низкая , Л.И. Кай а также Tan Wei Seng Кто рассмотрел проекты этой статьи.
Подготовка к передним техническим интервью? Проверьте это справочник который содержит ответы на знаменитые вопросы собеседования на переднем углу.
Yangshun/Front-End-Esbile-Handbook Фронт-интервью-справочник -? Почти завершенные ответы на «Вопросы собеседования на работе в интерфейсе» G ithub.com.
Больше чтения
Общий
- Состояние ландшафта JavaScript: карта для новичков
- Руководство автомата к современному рабочему процессе разработки переднего конца
- Как это чувствует для изучения JavaScript в 2016 году
- Дорожная карта, чтобы стать веб-разработчиком в 2017 году
- Современный JavaScript для древних веб-разработчиков
Другие руководства по изучению