Автор оригинала: Artem Golovin.
Боже мой, такой титул клики! Но поверь мне, все еще есть несколько действительных моментов.
Угловая команда, я бы хотел поблагодарить вас за три года, которые вы потратили на новую и блестящую угловую 2,0. Но ваша новая рамка отстой. И я скажу вам, почему.
Я сделал дюжину приложений с угловой 1.x. Большие, такие как Goabout веб-сайт или настоящие маленькие, такие как Sporteventa посадка. Я влюбился в угловой 1.x.
Тем не менее, есть очень простой принцип, который я следую во всех моих проектах. Принцип говорит:
Держать его просто глупо.
И это именно там, где новый угловой унций потерпел неудачу во многих отношениях.
Несмотря на то, что кривая обучения для угловых 1.x не была идеальной, сама структура была чем-то более или менее простым. Он не потребовал TS, компилятора HTML, CLIS, специфической структуры, учебного запаса, встряхивания дерева, компиляция AOT и так далее.
Это просто работало.
Я смог вставить голый angular.min.js
В файле и начните запись кода сразу (даже если я все еще использую глотку в Livereload/построить приложение).
Вся идея хорошей рамки состоит в том, что вы начинаете с простых вещей и сделаете его более сложным только тогда, когда вы хотите, чтобы это было. Угловая команда пошла совершенно противоположным образом.
Давайте обсудим, почему угловые 2 чрезмерно сложны в деталях:
1. Это написано в Teadercript
Не поймите меня неправильно, Thingscript добавляет крутые функции для JavaScript, таких как (очевидно) типов и многое другое. Но я на самом деле нужно Это? Я не пишу программное обеспечение для NASA – я пишу веб-приложения, и я хотел бы быть тем, кто решит, на каком языке Я использовать. Не ты. Если я хочу использовать TS, я буду использовать его. Но что, если я просто хотел сделать простое прототипное приложение, где мне не нужно TS?
JavaScript стал настолько популярен, потому что это было просто для изучения, но с типами/интерфейсами/декораторами, вы делаете слишком сложные. Теперь мне нужно учиться Больше, чтобы иметь IDE для проверки ошибок и компилятора, чтобы снова сделать его JavaScript. Вы сделали Java из JavaScript.
Снимание Я знаю, что я все еще могу Вид Используйте JS с ним. Но на самом деле это становится близко к невозможным, потому что мне придется иметь дело с тем фактом, что все остальное вокруг угловагона сделано с TS (как плагины или документы).
2. Угловой HTML не является действительным HTML
Просто подумайте об этом следующем предложении: угловая 2 команда пришлось написать компилятор для компиляции «угловой HTML» в HTML, потому что некоторые из тегов угловых применений не являются действительными HTML.
Нет, этот компилятор не делает HTML более читаемой – Джейд (AKA PUG) делает. Единственная цель компилятора состоит в том, чтобы изменить угловые теги во что-то более действительное и (также) добавить кучу мусора в ваш конечный HTML.
Это не то. Компилятор дает безумно бесполезным Traceroutes, если у вас есть ошибка в HTML, хорошо … Удачи, найдя его. Ох, и я должен добавить, все приложение не начнется, пока вы не найдете эту ошибку.
Также! Вам больше не разрешается использовать Джейд (PUG) В ваших новых проектах, потому что, как я уже упоминал, HTML, который вы пишете для угловых, не будут действительными для мопса (нефрита), чтобы скомпилировать его в Выпуск GitHub Отказ
3. Угловые принимают бесконечность для горячей перезагрузки вашего кода
То, что я люблю больше всего в приложениях JS, это то, что я могу изменить кусок кода и увидеть результаты немедленно в моем браузере.
С угловым 2.0, это не правда. Уже нет. У меня очень мощный четырехъядерный ноутбук, и он все еще занимает 3-5 секунд, чтобы повторно собрать пустое угловое приложение. Для уже разработанных приложений, таких как NG2-Admin , это занимает примерно 10-12 секунд. Ты должен быть, шутишь, верно?
Используя наш старый добрый угловой 1.0 и простой настройкой глотания, я смог объединить весь свой код и перезагрузить страницу через полторы.
Конфигурация WebPack Angular 2.0 длиной 300 строк. Это так большие и нечитаемые, они должны были сделать отдельный конфиг для конфигурации. Хорошо, верно?
4. Огромный размер исходного приложения
Это то, что все сейчас озадачили на некоторое время. Голые угловые 2,0 (+ RXJS) веса вокруг мегабайта. Да, мегабайт. Это как в 6 раз больше, чем предыдущие угловые приложения и в 10 раз больше, чем я ожидаю, что мои пользователи загружают через соединение на 3G.
Я знаю, что угловой 4.0 будет меньше, и я знаю, что вы можете использовать Встряхивание дерева и Передние временные компиляции сделать его меньше до 3-5 раз. Но все равно.
Подумай об этом. Начальный угловой код был настолько большим и сложен, команда должна была сделать его еще более сложной, чтобы сделать код меньше! Другими словами, React и Old Angular были достаточно маленькими, чтобы команда не должна была иметь дело со всеми этими дополнительными методами оптимизации.
Я могу продолжать добавлять в список, но я думаю, что я сделал мою точку зрения.
Заключение
Угловой 2 не так уж плохо. Это полностью модульно, следует на конкретной структуре, использует типы, а (теоретически) позволяет писать код с меньшими ошибками.
Но на мой взгляд, вещи должны оставаться максимально простыми. Угловой далек от простого. Это просто кажется чрезмерно сложным.
Я делаю веб-приложения, а не программное обеспечение для космических кораблей. Угловая команда представила так много добавленной (и ненужной) сложности, что означает:
- Есть значительно больше очков неудачи. С неактивными терасниками, угловые 2 становится головной болью, которая заставляет разработчиков тратить свое драгоценное время.
- Трудно отрегулировать каркас для конкретных потребностей. Разработчики могут начать бороться с рамками вместо того, чтобы написать фактический код.
- Он имеет чрезвычайно крутущую кривую обучения. Иногда я работаю с гораздо менее опытными разработчиками – я хочу, чтобы они могли внести изменения, не пройдя 200 учебных видео.
Мне нужны все эти сложности в моих небольших частных проектах? EHM, наверное не. В проектах среднего размера моей компании? Нет, я так не думаю. В приложениях большого предприятия, где 10 команд работают над тем же приложением? Да, может быть, все эти сложности/модульности/прекомпиляция были бы хорошими. Но опять же, если эти команды решают использовать другие рамки, они могут не понадобиться так много людей в первую очередь
Я был бы более понимаемым, если бы невозможно было сделать хороший и стабильный WebApp без всех сложностей. Но, как мы все знаем, возможно, и Evit намного проще для хороших приложений без всех сложностей. Просто посмотрите на другие рамки, такие как Aurelia , Vue.js (мой текущий любимый) или на что-то Реагистрационные Отказ
Этот учебник был первоначально опубликован автором здесь Отказ Эта версия была отредактирована для ясности и может появиться отличаться от исходного поста.
Я доступен для проката и репетитора! Проверьте детали [здесь (https://artemgolovin.com) или дайте мне сообщение через Commentor | JavaScript, Angular.js, Vue.js, React, Adonis, Express и многое другое