Объясните разницу между vue react angular и быстро получите техподборку!

внешний фреймворк

предисловие

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

Прежде всего, позвольте мне объяснить использование трех основных фреймворков.С самого начала и до настоящего времени чаще всего используется Vue, за ним следует React, а последним идет angular.Это всего лишь пассивное обучение в течение более трех месяцев. Причина очень проста.Никто не использует его в Китае.Найдите его.На самом деле трудно иметь компанию,использующую angular.Давайте сначала посмотрим на использование трех основных внутренних фреймворков,организованных боссом!

React: Визуализация данных Ant, Airbnb, Fliggy, Alida, Xiami Music, Word of Mouth Open Platform, TripAdvisor, Himalaya, Douyu, Zhihu, Douban, Meituan Takeaway H5, Fangduoduo, Graphite Documents, Ink Knife, TalkingData, xiaopiu, Teambition, Uber, Beicha, Tongdun Technology, Know the Weather, Pinduoduo (H5, встроенный в приложение), Didi Chuxing, Sentry, Tuniu, Youku, JD Apparel + Fresh Food + Travel + Make Money H5, Guazi Finance H5, Hashpower Matrix, Lianjia H5, Alibaba Фон управления облаком, кодирование, CodePen, Raspberry Pi, 36Kr, Notion, GoDaddy, Zanku Hailuo, Plotly, Mack CRM, маркетинговый календарь Tezign, Luban, ПК-терминал для чтения NetEase Cloud + Netease Cloud Music H5, Liepin.com, страница редактирования документа Kanyun , официальный сайт NIKE, Dr. Lilac, несколько модулей Qunar H5, отдельные модули eLong H5, Rent-a-car H5, Autohome, PayPal China, Pocket, Umeng, iH5...

Vue: Ele.me, iQiyi, China Ping An H5, Jianshu, Tuhu Yangche, Xiaohongshu, LeTV Mall, Mobile Sohu, Youku, Tudou, Nuggets, Weibo H5, Damai.com H5, Vipshop H5, Xiaomi Mall H5, мобильная версия Mango TV , Bilibili, Youpaiyun, данные Qimai, OneAPM, статистика апплета Aladdin, страница входа NetEase Yunxin + Mobile NetEase + NetEase Mail H5, веб-версия Toutiao + Watermelon Video, Beidian (H5, встроенный в приложение), Dasouche, Didi Open Source, AutoNavi Open Платформа, покупка JD.com + купоны + новый канал H5 + JD Cloud, подержанный автомобиль Guazi H5, Tubatu, Fenqile, BITMAIN, краткосрочная аренда Xiaozhu H5, IT Orange, Chuangyebang H5, Paipaidai, Geekbang Technology + Geek Time, Open Source Китай, Меньшинство, Голубое озеро, Индекс Baidu, Публичная платформа WeChat, Аккаунт Big Fish (UC Yunguan), Maker Post, Duiba, Gome H5, Версия с сенсорным экраном Jumei Youpin, Qianka, Shike Xiaobing, Zhanke, Snowball Finance, Video Game Bus, Версия с сенсорным экраном Hao123, Dangeche, Ctrip H5 и другие модули, Qyou.com, телефоны OnePlus...

AngularJS: Baidu Brain Map, eolinker, Haizhi BDP, Aurora, Worktile, официальный сайт Hammer Technology, веб-версия WeChat, iTunes Connect, фон управления Alibaba Cloud, квазидок-платформа Whale...

Судя по приведенным выше данным, vue react примерно соответствует, но angular немного блеклый.Далее поговорим о качестве трех основных фреймворков.

кадр битвы

Прежде всего выскажу свою личную точку зрения.Все три фреймворка хорошие фреймворки.Все они имеют возможность выполнять масштабные проекты и иметь активные сообщества(но в Китае Angular практически невозможно найти решения при возникновении проблем .Это действительно тревожно) На самом деле, так долго спор о том, хорош фреймворк или плох, всегда был фронтенд-инженером, обязательной темой для словесных перепалок.В начале мне тоже нравился vue , его отзывчивое письмо, лаконичная грамматика и введение cdn без инструментов.Возможность разработки из файлов действительно завораживает, но потом я узнал, что React более гибкий метод написания, лучшие практики, которые можно отображать везде, и свежесть принес больше вариантов, даже CSS может дать Я играл с цветами.Позже я вступил в контакт с angular и обнаружил, что он имеет большие и всеобъемлющие возможности, улучшенную разработку, обязательное наслоение, внедрение зависимостей и естественные возможности проверки кода ts. Это также очень ароматно, тогда возникает проблема, какой фреймворк лучше?

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

Особенности трех фреймворков

vue

Прежде всего, поговорим о vue, фреймворке, который я использую чаще всего, и фреймворке с наибольшим количеством звезд на github.Вообще его предпочитают использовать пожилые фронтендеры.Я до сих пор смутно помню, что когда мы обедали с нашим руководителем , Я выпил три рюмки вина.Я спросил лидера, почему Вам так нравится Vue, лидеры фронтенд-старейшины, они из первой партии фронтендов, с семи-восьмилетним стажем работы, он сказал, для нас, стариков, они пришли из ie6.Громоздкий метод разработки частой работы с DOM довольно болезненный.Потом вышли три основных фреймворка и их использовали снова.Позже выяснилось, что шаблонный синтаксис Vue довольно дружелюбен к ним. Концепция представления, управляемого данными, скрывает утомительную работу с DOM. Шаги, а также прогрессивная интеграция, - продолжил он, - когда вы стары, вы не можете больше учиться, Vue прост, быстр для начала, а самое главное, легко набирать людей (в этом году большинство из них - лидеры) и т.д. Преимущества, действительно проставьте это.

Далее поговорим о преимуществах Vue на мой взгляд.

1. Отзывчивый

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

2. Синтаксис шаблона

В vue мы так же свободны, как и пишем html, который выигрывает от синтаксиса шаблонов vue.

<p>{{message}}</p>

Почему я сказал, что старичок фронтенда любит использовать vue, потому что синтаксис его шаблонов вполне дружелюбен к старому фронтенду, ведь они все исходят из html, так откуда же взялся наш синтаксис шаблона?

Прежде всего, мы сказали, что шаблон vue не является html, поэтому, поскольку он не является html, его необходимо преобразовать в js-код, который представляет собой так называемую компиляцию шаблона. -компилятор используется, то этот инструмент, что вы сделали? По сути, это прекомпиляция шаблона Vue 2.0 в функцию рендеринга (template => ast => render)

//模板代码
const compiler = require('vue-template-compiler')
const result = compiler.compile(`
  <div id="test">
    <div>
      <p>This is my vue render test</p>
    </div>
    <p>my name is {{myName}}</p>
  </div>`
)

console.log(result)
{
//编译结果
  ast: {
    type: 1,
    tag: 'div',
    attrsList: [ [Object] ],
    attrsMap: { id: 'test' },
    rawAttrsMap: {},
    parent: undefined,
    children: [ [Object], [Object], [Object] ],
    plain: false,
    attrs: [ [Object] ],
    static: false,
    staticRoot: false
  },
  render: `with(this){return _c('div',{attrs:{"id":"test"}},[
        _m(0),          // 上述提到的静态子树,索引为0 <div><p>This is my vue render test</p></div>
        _v(" "),        // 空白节点 </div> <p> 之间的换行内容
        _c('p',[_v("my name is "+_s(myName))])  // <p>my name is {{myName}}</p>
    ])}`,
  staticRenderFns: [
    `with(this){return _c('div',[_c('p',[_v("This is my vue render test")])])}`
  ],
  errors: [],
  tips: []
}

Затем мы выполняем функцию рендеринга, которая вернет vnode, за которым следует знакомый алгоритм diff для обновления представления.

3. Внедрить MVVM

По крайней мере, я считаю благом реализовать MVVM, использовать данные для управления представлением, упростить утомительную работу dom и уделять больше внимания бизнес-логике, чтобы сэкономить время разработки и написать простой в обслуживании код, поэтому что такое мввм?

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

4. Удобный, простой в использовании

Это самая привлекательная черта vue.По сравнению с react jsx, angular rxjs и различными инъекциями зависимостей, стиль синтаксиса vue довольно удобен для использования API, и, конечно, у сообщества также есть несколько относительно фиксированных решений. и немного более удачно то, что оптимизация производительности vue вполне на месте, нам не нужно вручную оптимизировать, и нам не нужно обновлять подкомпоненты рендеринга, такие как реагировать, Это все еще написано китайцами, есть такой срединный путь Это значит оставить простоту и выбор другим, а сложность и беспомощность оставить себе...

5. Ослабление оптимизации производительности, пользователям нужно сосредоточиться только на логике

По сравнению с react и angular vue ограничений при разработке по формату шаблона не так много.Благодаря адаптивной системе нет необходимости делать соответствующую оптимизацию производительности.Благодаря синтаксису шаблона внутри vue его можно скомпилировать в среда разработки. Таким образом, некоторые оптимизации производительности могут быть выполнены во время компиляции. Например, в этом vue я четко знаю, что второе имя является переменной, поэтому оно будет оптимизировано внутри.

<template>
    <ul>
        <li>0</li>
        <li>{{ name }}</li>
        <li>2</li>
        <li>3</li>
    </ul>
</template>

В React из-за гибкого написания jsx и многих неопределенностей оптимизация производительности не может быть выполнена во время компиляции, и оптимизация производительности возлагается на наших разработчиков.

<ul>{
    data.map((name, i) => <li>{i !== 1 ? i : name}</li>)
}</ul>

react

1. Идея дизайна неизменяемых значений также является практикой функционального программирования

Мы знаем, что право на оптимизацию производительности в реакции предоставляется разработчику, поэтому по умолчанию, когда обновляется родительский компонент реакции, дочерний компонент должен быть обновлен, поэтому нам нужно использовать некоторые методы оптимизации, предоставляемые реакцией, такие как scu , такие как purecomponent и memo и т. д., для выполнения соответствующих оптимизаций производительности, мы знаем ShouldComponentUpdate(SCU) можно использовать для блокировки распространения обновлений. Однако компоненты React не реализуют его по умолчанию, поэтому разработчик должен определить, нужно ли оптимизировать приложение для повышения производительности. В этом методе вы можете определить, было ли изменено состояние или реквизиты компонента, и если нет, он вернет false, и ни компонент, ни его дочерние элементы не будут повторно отображаться. Проблема здесь: если данные изменяемы и напрямую модифицируются, SCU всегда будет возвращать false, что приведет к тому, что компонент никогда не будет перерисовываться.В начале проектирования идея этого неизменяемого значения проходит через реагировать, даже на разработку Immutable.js специально для неизменяемых значений ушло два года. Это библиотека js, которая также является концепцией функционального программирования.

2. все на js

В реакте все js.На самом деле так называемый jsx это просто синтаксический сахар.Именно благодаря этому опыту разработки многим разработчикам будет удобнее писать.У него нет ограничений различного шаблонного синтаксиса в Vue , При высокой степени свободы он обращает внимание на большую гранулярность разбиения, и продвигает дизайнерскую идею компонентизации.В реакте все является компонентом, а масштабный проект состоит из компонентов, нагроможденных наподобие строительных блоков .

3. Активное сообщество, благополучная экология

Это то, чем React гордится больше всего. Он знает, что должен делать, а остальное предоставляется сообществу. В отличие от Vue, экологическое сообщество относительно стабильно. В основном все сообщество признает некоторые относительно фиксированные. сто цветов расцветает.Например в public data state management есть redux,mobx,а так же освежает недавно выпущенный концентрат.Например css тоже неразрывно связан.Есть sass и less раньше,а потом css в js Например, мидлвар, который может реализовать асинхронность в редуксе, включает в себя редукс-thunk, редукс-сага и т.д., не говоря уже о появившихся на базе реакта дваджах, такая библиотека используется на замену редукса, и появления уми, цель состоит в том, чтобы заменить cra, короче говоря, студенты, которые испытывают трудности с выбором, должны быть осторожны с реакцией, потому что вариантов действительно слишком много, и вы не сможете начать. Именно благодаря открытому способу мышления реагировать (соответствующему китайскому режиму Vue) в нескончаемом потоке возникают различные колеса, продолжается всеобщий энтузиазм в отношении исследований, фронтенд становится все более и более важным, а заработная плата становится все выше. и выше. Я думаю, причина, по которой многие крупные производители выбирают реакцию, заключается в том, что реакцию легко бросить, и все они являются техническими экспертами Кто не хочет делать большие новости, когда им нечего делать, верно?

4. Многосторонняя разработка кроссплатформенных возможностей

Благодаря благословению RN, получив синтаксис реакции, вы даже можете приступить к созданию приложения, что здесь невозможно с vue. , и именно из-за этого вы обнаружите, что события в React пишутся сами по себе, а не нативные для браузера, потому что ему нужно использовать этот набор синтетических механизмов событий, написанных им самим, для реализации cross-end событий, принцип на самом деле очень просто

Как показано на рисунке выше, это собственный механизм событий реакции, поэтому он может обеспечить хорошие кросс-платформенные возможности.

5. Волокно (квант времени)

В react 16 добавлено волокно (time slicing) Этот механизм рендеринга делит символы на этапе Reconcilation на исполнительные единицы, так называемые файберы, а затем использует метод requestIdleCallback для выполнения процесса, когда основной процесс простаивает. , принцип следующий:

Таким образом, проблемы с задержкой и пропаданием кадров, вызванные чрезмерным занятием основного процесса из-за вычисления разницы во время рендеринга React, грубо решаются.

angular

Поскольку angular используется всего три месяца, многие принципы не совсем понятны.

Предоставляет комплексное комплексное решение

Причина, по которой Angular раньше считался большим и полным, заключается в том, что ему не нужно полагаться на силу сообщества, но он может реализовать решение от начала до запуска продукта самостоятельно.Например, он предоставляет полный модуль решение для тестирования. Здесь вы находитесь. Когда вы создаете новый компонент, он даст вам тест ts. Например, он предоставит все услуги, необходимые для разработки, такие как службы http, такие как службы маршрутизатора, такие как управление общедоступными данными сервисы, эти angular все полные, он больше похож на язык бэкенда со строгой проверкой типов, который включает в себя ts, обязательное наслоение и идею лучшей разработки, объектно-ориентированное программирование. Angular очень высокий и сложный.Официальная библиотека angular дает вам все, что вы хотите.Используя стек технологий angular, вам в принципе не нужно тратить слишком много времени и сил на выбор компонентов (по сравнению с реагированием).

Некоторые различия и связи между тремя фреймворками

соединять

Когда я изучал три основных фреймворка, я обнаружил, что на изучение Vue у меня ушел месяц. На React может уйти 20 дней, а на Angular может уйти 15 дней. На самом деле, это потому, что они неразрывно связаны. , пока это С идеей, сложность обучения трех основных фреймворков постепенно снижается, хотя индустрия Angulr сложнее в освоении, чем React, React сложнее в освоении, чем Vue, тогда давайте поговорим об их связи

1. Компонентизация

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

2. Все представления на основе данных

Три основных фреймворка относятся к фреймворку mvvm, и идея представлений, управляемых данными, проходит через все время, поэтому нам нужно обращать внимание только на изменения данных при разработке, хотя методы использования разные, реакция функциональна, angular и vue являются объявлениями. Однако идея, управляемая данными, остается неизменной. Например, react использует присваивание setState, а vue и angular используют явное и прямое присваивание. Их конечной целью является изменение значения, тем самым вызывая обновление страницы.

3. Общие процедуры разработки

В трех основных фреймворках, поскольку все они следуют идее компонентизации, все они имеют одинаковую процедуру разработки, но методы использования немного различаются.Например, есть передача компонентов родитель-потомок, инфраструктура управления данными, фронт- конечная маршрутизация, и оба слота, просто называемые проекционными компонентами в anguar и комбинациями в react, могут реализовывать некоторые так называемые функции более высокого порядка (hoc)

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

разница

Я знаю лишь ограниченное количество связей. На самом деле, эти связи могут в основном справляться с повседневным развитием бизнеса. Причина, по которой многие люди считают, что изучение трех фреймворков затруднено, заключается в том, что знания, выходящие за рамки фреймворков, бесконечны. , Например, если вы хотите иметь возможность использовать три основных фреймворка: ts, rxjs, redux, vuex, mobx, router, node, npm, webpack, middleware и т. д., вам нужно немного знать, потому что каждый фреймворк выбирает чтобы охватить разные сообщества , то вещи, которые нам нужно изучить, разные. Однако когда вы поймете и закончите их, вы обнаружите, что большинство их использования и идей похожи. Далее давайте поговорим о различиях.

Шаблоны против JSX

Самая большая разница между React и Vue, angular — это написание шаблонов. Vue и angulr поощряют вас писать шаблоны, приближенные к обычному HTML. Написан очень близко к стандартным элементам HTML, но с несколькими дополнительными атрибутами. React поддерживает все в js, поэтому он создает оригинальный стиль написания jsx, но они по сути являются синтаксическим сахаром, и все они являются исполняемыми функциями после компиляции.

Virtual DOM vs Incremental DOM

Что касается базового рендеринга, и vue, и react используют виртуальный DOM, но angular его не использует. После проверки он, кажется, использует Incremental DOM. Пожалуйста, перейдите к конкретной разнице.Понимание Angular Ivy: инкрементный DOM и виртуальный DOM

функциональное программирование, декларативное программирование

Неизменяемые значения в React проходят через весь фреймворк.Если вы хотите изменить данные, вы должны вызвать API для их изменения.Это идея функционального программирования.В vue и angualr идея декларативного программирование также глубоко укоренилось в сердцах людей, что удобно. Есть ярлыки. Этот метод прямого назначения и метод назначения с помощью API на самом деле отличаются только использованием, и суть все еще зависит от данных.

сложность сообщества

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

сложность входа

Angular — лучший фреймворк для разработки, а также самый сложный фреймворк из-за охвата rxjs и ts (до сих пор я не могу понять дженерики ts)

React также относительно легко начать, особенно после введения хуков в 16, он известен как API-терминатор, но из-за того, что сообщество слишком активно, разные новые вещи появляются одно за другим, а китайские документы неясны и сложны. понять, что затрудняет начало работы по сравнению с Vue.

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

Как выбрать три фреймворка

для учебы

Для обучения я изучаю использование трех фреймворков.Ведь Yiduo не перегружен, но я все еще обращаю внимание на реакцию и vue.Ведь в Китае эти два можно есть только тогда, когда они хороши.Причина почему я должен изучить три фреймворка, потому что я чувствую, что понимаю, что у трех фреймворков есть свои достоинства и недостатки, и поскольку идеи имеют сходство, то в последующих проектах вы можете узнать преимущества и намерения написания предшественников , например, в рамках написания angular, так как мне нужно кешировать страницу роутинга, я буду хранить данные в сервисе, потом, когда я напишу react, я вдруг узнаю, почему я использовал redux, когда писал проект react. рекомендуется хранить все данные в редуксе.Например, в угловых, из-за естественной проверки грамматики ts, он действительно благоухает после его использования.Тогда при использовании реакции будут внедрены инструменты статической проверки типов, такие как prop-types предотвратить странные ошибки. Поэтому я предлагаю, чтобы в плане обучения было время изучить все три фреймворка.

Для личных проектов

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

Для проектов компании

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

1. Поскольку Vue можно быстро начать и легко нанять, если проект срочный, а общая техническая мощь фронтенд-команды компании слаба, то Vue — очень хороший выбор.

2. Если это супер-крупный проект, у компании достаточно персонала, сильная техническая мощь и сильные способности к обучению, то Angular определенно лучший выбор.С точки зрения обслуживания angualr определенно лучший выбор, но я написал три За много месяцев angualr, если общий уровень front-end команды будет неравномерным, его реально невозможно поддерживать.На более позднем этапе написания у вас точно будет опыт поиска кода за три часа и написания кода за три минут (не спрашивайте почему)

3. Если техническая сила в команде хорошая, но время ограничено, то хорошим выбором будут реакции и vue.Конечно, реакции более рекомендуются, потому что текст более освежает, а чувство выполненного долга самоочевидно. ! Причина, по которой angualr не рекомендуется, заключается в том, что ng слишком ограничен с точки зрения проектов. ts, rxjs, декораторы, внедрение зависимостей... Стоимость обучения слишком высока

4. Если вы хотите учитывать совместимость, лучше ничего не использовать, просто будьте честны с jquery!

Вышеупомянутое только предложение, это всегда технический отбор. Слишком много вопросов для рассмотрения, и неизбежно иметь дело с людьми. Например, структура компании является back-end, поэтому он обязательно порекомендует angualr. на этот раз, как фронтенд-лидер команды, он может только принимать заказы.Например, предыдущий проект компании был React, тогда, когда появится новый проект, следует ли увеличить стоимость обучения членов команды, это также вопрос для рассмотрения Короче говоря, при выборе технологий не может образоваться цепочка пренебрежения.Кто-то считает angular крутым, я смотрю свысока на react, и vue, думаю будут видны ts, rxjs, декораторы, внедрение зависимостей и прочие новинки, а другие будут считаться новичками.На самом деле эти идеи разработаны не вами,и,если после отбора,требования к низовым программистам естественно будут повышены на уровень,а это называется умением экранировать лучше людей, но и подумайте, почему отличные люди должны быть солдатами в этом году. Так что не следуйте чужому мнению, слушайте, что другие говорят хорошо, тогда он хорош, на самом деле, для компании самое главное правильный, не обязательно лучший.

наконец

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