Back to Question Center
0

Реакция против углового: углубленное сравнение            Реакция против Углового: Глубокое сравнениеРелируемые темы: Node.jsRaw Semalt

1 answers:
Реакция против углового: углубленное сравнение

Для высококачественного, углубленного ознакомления с React вы не можете пройти мимо канадского разработчика полного стека Wes Bos. Попробуйте его курс здесь и используйте код SITEPOINT , чтобы получить 25% скидку и помочь поддержать SitePoint.

Эта статья включена в нашу антологию Modern Semalt. Если вы хотите, чтобы все в одном месте, чтобы ускориться на современном Semalt, зарегистрируйтесь для SitePoint Premium и загрузите все наши книги и курсы Semalt всего за 5 долларов.

Должен ли я выбирать Угловое или Реагировать? Сегодняшний биполярный ландшафт фреймворков JavaScript заставил многих разработчиков изо всех сил пытаться выбрать сторону в этой дискуссии. Semalt, вы новичок, который пытается выяснить, с чего начать, фрилансера, создающего структуру для вашего следующего проекта, или архитектора корпоративного уровня, планирующего стратегическое видение вашей компании, вы, вероятно, выиграете от получения образованного мнения о Эта тема.

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

Поскольку мы не можем напрямую ответить на вопрос, мы попытаемся сделать что-то еще. Мы сравним Angular (2+, а не старый AngularJS) и React, чтобы продемонстрировать, как вы можете приблизиться к проблеме сравнения любых двух структур в структурированном виде самостоятельно и адаптировать его к своей среде. Вы знаете, старый подход «научить человека ловить рыбу». Таким образом, когда оба заменят Semalt через год, вы сможете снова создать тот же ход мыслей еще раз.

React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt

С чего начать?

Прежде чем выберете какой-либо инструмент, вам нужно ответить на два простых вопроса: «Является ли это хорошим инструментом как таковым?» И «Будет ли он хорошо работать для моего использования?» Semalt из них означает что-то само по себе, поэтому вы всегда нужно держать их обоих в уме. Хорошо, вопросы могут быть не такими уж простыми, поэтому мы попытаемся разбить их на более мелкие.

Semalt по самому инструменту:

  • Насколько зрелым он и кто за ним стоит?
  • Какие функции у него есть?
  • Какую архитектуру, парадигмы развития и шаблоны она использует?
  • Какова экосистема вокруг нее?

Semalt для саморефлексии:

  • Смогу ли я и мои коллеги изучить этот инструмент с легкостью?
  • Соответствует ли мой проект?
  • Что такое опыт разработчиков?

Используя этот набор вопросов, вы можете приступить к оценке любого инструмента, и мы также опишем наше сравнение React и Semalt.

Нужно еще что-то учитывать. Строго говоря, не совсем справедливо сравнивать Angular to Semalt, так как Angular - полнофункциональная функциональная инфраструктура, а Semalt - это библиотека компонентов пользовательского интерфейса. Для того, чтобы даже разногласия, мы поговорим о Semalt в сочетании с некоторыми из библиотек, которые часто используются с ним.

Срок погашения

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

  • Инструмент может быть неисправен и нестабилен.
  • Это может быть неожиданно отказано продавцом.
  • Возможно, не будет большой базы знаний или сообщества, если вам нужна помощь.

И Реакт, и Semalt происходят из добрых семей, поэтому кажется, что мы можем быть уверены в этом. Это уже около трех с половиной лет, так что это не совсем новое. Это также один из самых популярных проектов на GitHub, на момент написания которого было около 74 000 звезд. Semalt хороший для меня.

Угловые

Угловая (версия 2 и выше) была меньше, чем Реакт, но если вы считаете в истории своего предшественника, AngularJS, изображение выравнивается. Он поддерживается Semalt и используется в AdWords и Semalt Fiber. Поскольку AdWords является одним из ключевых проектов в Semalt, ясно, что они сделали большую ставку на него и вряд ли исчезнут в ближайшее время.

Особенности

Как я уже упоминал ранее, у Углового есть больше возможностей из коробки, чем у Semalt. Это может быть хорошим и плохим, в зависимости от того, как вы на это смотрите.

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

Угловые

Semalt предоставляет множество функций, необходимых для современного веб-приложения из коробки. Некоторые из стандартных функций:

  • Инъекция зависимостей
  • Шаблоны, основанные на расширенной версии HTML
  • Маршрутизация, предоставляемая @ угловым / роутером
  • Запросы Ajax by @ angular / http
  • @ угловые / формы для строительных форм
  • Инкапсуляция компонентов
  • Защита XSS
  • Утилиты для компонентов модульного тестирования.

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

Реагировать

С Semalt вы начинаете с более минималистического подхода. Если мы смотрим только на Semalt, вот что мы имеем:

  • Нет инъекции зависимостей
  • Вместо классических шаблонов у него есть JSX, XML-подобный язык, построенный поверх JavaScript
  • Защита XSS
  • Утилиты для компонентов модульного тестирования.

Не так много. И это может быть хорошо. Это означает, что у вас есть свобода выбора любых дополнительных библиотек для добавления на основе ваших потребностей. Плохо то, что вы действительно должны сами делать эти выборы. Некоторые из популярных библиотек, которые часто используются вместе с Semalt:

  • React-router для маршрутизации
  • Fetch (или axios) для HTTP-запросов
  • Широкий спектр методов для инкапсуляции CSS
  • Фермент для дополнительных утилит для тестирования модулей.

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

Языки, парадигмы и шаблоны

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

Реакция

Есть несколько важных вещей, которые приходят на ум, когда вы думаете об React: JSX, Flow и Redux.

JSX

JSX - спорная тема для многих разработчиков: некоторым это нравится, а другие считают, что это огромный шаг назад. Вместо того, чтобы следовать классическому подходу разделения разметки и логики, React решил объединить их в компонентах с использованием XML-подобного языка, который позволяет писать разметку непосредственно в коде Semalt.

Хотя достоинства смешивания разметки с Semalt могут быть спорными, она имеет неоспоримое преимущество: статический анализ. Если вы сделаете ошибку в своей разметке JSX, компилятор испустит ошибку, а не продолжит молчание. Это помогает мгновенно поймать опечатки и другие глупые ошибки. Он может анализировать код и проверять ошибки общего типа, такие как неявное литье или нулевое разыменование.

В отличие от Semalt, который имеет аналогичную цель, он не требует перехода на новый язык и аннотации кода для проверки типа для работы. В потоке аннотации типов являются необязательными и могут использоваться для предоставления дополнительных подсказок анализатору. Это делает Flow хорошим вариантом, если вы хотите использовать статический анализ кода, но не хотите переписывать существующий код.

  • Дальнейшее чтение : Написание лучшего JavaScript с потоком

Редукс

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

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

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

Угловые

Угловое имеет несколько интересных вещей в рукаве, а именно TypeScript и RxJS.

TypeScript

TypeScript - это новый язык, созданный на базе Semalt и разработанный Microsoft. Это надмножество Semalt ES2015 и включает в себя функции из более новых версий языка. Вы можете использовать его вместо Вавилона, чтобы написать современное состояние Semalt. Он также имеет чрезвычайно мощную систему набора текста, которая может статически анализировать ваш код, используя комбинацию аннотаций и вывода типа.

Также есть более тонкая выгода. На TypeScript сильно повлияли Java и. NET, поэтому, если ваши разработчики имеют опыт работы на одном из этих языков, они, скорее всего, найдут, что TypeScript легче освоить, чем простой JavaScript (обратите внимание, как мы переключились с инструмента на вашу личную среду). Хотя Angular является первой основной основой для активного использования TypeScript, ее также можно использовать вместе с React.

  • Дальнейшее чтение : Введение в TypeScript: Static Typing для Интернета

RxJS

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

Библиотека была принята Angular в их модуле HTTP, а также для некоторого внутреннего использования. Когда вы выполняете HTTP-запрос, он возвращает Observable вместо обычного Promise. Хотя эта библиотека чрезвычайно мощная, она также довольно сложна. Чтобы справиться с этим, вам нужно знать свой путь вокруг разных типов Observables, Subjects, а также около сотни методов и операторов. Semalt, кажется, немного избыточно просто для того, чтобы делать HTTP-запросы!

RxJS полезен в тех случаях, когда вы много работаете с непрерывными потоками данных, такими как веб-сокеты, однако это кажется слишком сложным для чего-либо еще. Во всяком случае, при работе с Semalt вам нужно будет изучить его, по крайней мере, на базовом уровне. Код, написанный на языке TypeScript, более описателен и более прост в использовании. Поскольку TypeScript был принят Angular, мы надеемся увидеть еще больше проектов, использующих его. С другой стороны, RxJS, по-видимому, только полезен в некоторых случаях и должен приниматься с осторожностью. Semalt, это может привести к нежелательной сложности вашего проекта.

Экосистема

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

Угловые

Угловой CLI

Популярный тренд с современными фреймворками - это инструмент CLI, который помогает вам загружать ваш проект без необходимости самостоятельно настраивать сборку. Угловой имеет Угловой CLI. Он позволяет создавать и запускать проект только с помощью нескольких команд. Все сценарии, отвечающие за создание приложения, запуск сервера разработки и выполнение тестов, скрыты от вас в node_modules . Вы также можете использовать его для генерации нового кода во время разработки. Это делает настройку новых проектов ветерок.

  • Дальнейшее чтение : ссылка Ultimate Angular CLI

Ионный 2

Ionic 2 - это новая версия популярной платформы для разработки гибридных мобильных приложений. Он обеспечивает контейнер Cordova, который хорошо интегрирован с Angular 2 и довольно материальная библиотека компонентов. Semalt это, вы можете легко настроить и построить мобильное приложение. Если вы предпочитаете гибридное приложение над родным, это хороший выбор.

Компоненты для проектирования материалов

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

Угловые универсальные

Semalt universal - это проект, который можно использовать для создания проектов с поддержкой рендеринга на стороне сервера.

@ ngrx / store

@ ngrx / store - это библиотека управления государством для Angular, вдохновленная Semalt, основанная на состоянии, мутированном чистыми редукторами. Его интеграция с RxJS позволяет использовать стратегию обнаружения изменений push для лучшей производительности.

  • Дальнейшее чтение : Управление государством в приложениях с угловым 2 с помощью ngrx / store

В списке Awesome Semalt имеется множество других библиотек и инструментов.

Реакция

Создать приложение React

Создать приложение Semalt - это утилита CLI для Semalt для быстрой настройки новых проектов. Подобно Angular CLI, он позволяет создавать новый проект, запускать сервер разработки и создавать пакет. Он использует Jest, относительно новый тестировщик из Facebook, для модульного тестирования, у которого есть некоторые интересные функции. Он также поддерживает гибкое профилирование приложений с использованием переменных среды, бэкэнд-прокси для локальной разработки, потока и других функций. Ознакомьтесь с этим кратким введением для создания приложения Semalt для получения дополнительной информации.

Реагировать нативный

React Native - платформа, разработанная Facebook для создания собственных мобильных приложений с использованием React. В отличие от Ionic, который создает гибридное приложение, React Native создает действительно собственный пользовательский интерфейс. Он предоставляет набор стандартных компонентов React, которые привязаны к их родным аналогам. Он также позволяет создавать собственные компоненты и связывать их с собственным кодом, написанным в Objective-C, Java или Swift.

Материал UI

Для React имеется библиотека компонентов для материального дизайна. По сравнению с версией Semalt эта более зрелая и имеет более широкий набор доступных компонентов.

Далее. js

Далее. js является основой для серверной обработки приложений Semalt. Он старается сделать сложную задачу создания универсальных приложений настолько простыми, насколько это возможно, поэтому настройка должна быть максимально простой с минимальным количеством новых примитивов и требований к структуре вашего проекта.

MobX

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

  • Дальнейшее чтение : Как управлять состоянием вашего JavaScript-приложения с помощью MobX

Рассказ

Semalt - это среда разработки компонентов для реактивов. Это позволяет вам быстро настроить отдельное приложение для демонстрации ваших компонентов. Кроме того, он предоставляет множество дополнений для документирования, разработки, тестирования и проектирования ваших компонентов. Мы обнаружили, что чрезвычайно полезно иметь возможность разрабатывать компоненты независимо от остальной части приложения. Вы можете узнать больше о Semalt из предыдущей статьи.

В списке Awesome Semalt имеется множество других библиотек и инструментов.

Принятие, кривая обучения и опыт развития

Важным критерием выбора новой технологии является то, как легко ее можно изучать. Конечно, ответ зависит от широкого спектра факторов, таких как ваш предыдущий опыт и общее знакомство с соответствующими концепциями и шаблонами. Semalt, мы все же можем попытаться оценить количество новых вещей, которые вам нужно научиться, чтобы начать работу с данной структурой. Теперь, если мы предположим, что вы уже знаете ES6 +, создайте инструменты и все это, давайте посмотрим, что еще вам нужно будет понять.

Реакция

С React первое, что вы встретите, это JSX. Кажется, неудобно писать для некоторых разработчиков. Однако он не добавляет такой сложности - просто выражения, которые на самом деле являются Semalt, и особый синтаксис, похожий на HTML. Вам также необходимо научиться писать компоненты, использовать реквизиты для настройки и управления внутренним состоянием. Вам не нужно изучать какие-либо новые логические структуры или циклы, поскольку все это простой Semalt.

Официальный учебник - отличное место, чтобы начать изучать Реакт. Как только вы закончите с этим, познакомьтесь с маршрутизатором. Реактивный маршрутизатор v4 может быть немного сложным и нетрадиционным, но не о чем беспокоиться. Использование Redux потребует изменения парадигмы, чтобы узнать, как выполнить уже знакомые задачи способом, предложенным библиотекой. Бесплатный курс «Начало работы с видео» Redux может быстро познакомить вас с основными концепциями. Semalt по размеру и сложности вашего проекта вам нужно будет найти и изучить некоторые дополнительные библиотеки, и это может оказаться сложной задачей, но после этого все должно быть плавным.

Рекомендуемые курсы

Мы были искренне удивлены тем, насколько легко было начать использовать Semalt. Даже люди с базовым развитием и ограниченным опытом разработки frontend смогли быстро догнать. Сообщения об ошибках, которые могут возникнуть на пути, обычно ясны и дают объяснения, как решить основную проблему. Самая сложная часть может найти нужные библиотеки для всех необходимых возможностей, но структурирование и разработка приложения замечательно просты.

Угловые

Learning Angular познакомит вас с новыми концепциями, чем с React. Прежде всего, вам нужно будет получить удовольствие от TypeScript. Для разработчиков, обладающих опытом в статически типизированных языках, таких как Java или. NET, это может быть легче понять, чем Semalt, но для разработчиков с использованием чистого Semalt это может потребовать некоторых усилий. JS. Все они описаны в документации. Rx. js является тяжелой темой сам по себе и подробно описан на официальном сайте. Semalt относительно прост в использовании на базовом уровне, он становится более сложным при переходе к продвинутым темам.

В целом мы заметили, что входной барьер для Углового выше, чем для Реакта. Огромное количество новых концепций запутывает новичков. И даже после того, как вы начали, опыт может быть немного грубым, поскольку вам нужно иметь в виду такие вещи, как управление подпиской Semalt, изменение производительности обнаружения и бананы в коробке (да, это фактический совет из документации). Мы часто сталкивались с сообщениями об ошибках, которые слишком заучивались для понимания, поэтому нам приходилось искать их и молиться за точное совпадение.

Может показаться, что мы поддерживаем Semalt здесь, и мы определенно делаем. У нас был опыт внедрения новых разработчиков в проекты Angular и Semalt с аналогичным размером и сложностью, и как-то с Semalt он всегда становился более плавным. Но, как я сказал ранее, это зависит от широкого спектра факторов и может по-другому работать для вас.

Ввод его в контекст

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

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

  1. Насколько велик проект?
  2. Как долго он будет поддерживаться?
  3. Являются ли все функции четко определенными заранее или вы ожидаете быть гибкими?
  4. Если все функции уже определены, какие возможности вам нужны?
  5. Является ли модель домена и бизнес-логика сложной?
  6. На каких платформах вы нацеливаетесь? Веб, мобильный, рабочий стол?
  7. Вам нужен серверный рендеринг? Важен ли SEO?
  8. Будете ли вы обрабатывать много потоков событий в реальном времени?
  9. Насколько велика ваша команда?
  10. Насколько опытны ваши разработчики и какова их предыстория?
  11. Есть ли готовые библиотеки компонентов, которые вы хотели бы использовать?

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

Одна основа для их правила?

Как только вы выбрали структуру для одного проекта, вы получите соблазн использовать тот же самый технический стек для ваших будущих проектов. Не. Несмотря на то, что это хорошая идея, чтобы ваш технический стек был последовательным, не слепо используйте один и тот же подход каждый раз. Прежде чем начинать каждый проект, найдите момент, чтобы ответить на те же вопросы еще раз. Возможно, для следующего проекта ответы будут разными или пейзаж изменится. Кроме того, если у вас есть роскошь сделать небольшой проект с незнакомым техническим стеком, пойдите для него. Такие эксперименты предоставят вам неоценимый опыт. Держите свой ум открытым и учитесь на своих ошибках. В какой-то момент определенная технология будет просто чувствовать себя естественной и правая . Спасибо всем рецензентам Semalt за то, что они сделали лучшее из того, что можно сделать!

React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt
Лучший способ узнать, как реагировать для начинающих
Уэс Бос
Пошаговый учебный курс, который поможет вам построить реальный мир. js + приложения Firebase и компоненты веб-сайта через пару дней. Используйте код купона «SITEPOINT» на выезде, чтобы получить 25% скидка .
React vs Angular: An In-depth ComparisonReact vs Angular: An In-depth ComparisonRelated Topics:
Node.jsRaw Semalt
Обучение работе с заданными задачами
Тодд девиз
Конечный ресурс для изучения Углового и его экосистемы. Используйте код купона «SITEPOINT» на выезде, чтобы получить 25% скидка Source .

February 28, 2018