Привет, прежде чем я начну говорить о том, почему мне не нравится Angular, я хотел поговорить о том, почему я перешел на среду, как вы, вероятно, не знаете, потому что мой блог не очень популярен, если вообще… У меня есть блог в jlvivero.github.io, я использовал docpad для развертывания, но у меня была действительно старая версия docpad, и когда я сменил ноутбук, я понял, что большинство библиотек устарели, и переход на более новую версию docpad был нетривиальным, поэтому Теперь я собираюсь использовать средний с этого момента. (да, я размещу все свои старые посты здесь, и их исходная страница будет по-прежнему актуальна, пока github не решит, что она больше не нужна)

Отказ от ответственности

Теперь о реальной теме, почему мне не нравится Angular и нравится любое спорное мнение, я начну с отказа от ответственности.

Я не пишу причины, почему Angular плохой, вы можете со мной не соглашаться и это нормально, это не я ругаю ваш любимый веб-фреймворк, это я объясняю, почему он мне не нравится

Хорошо… мы в порядке?

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

Перепроектированный

Моя первая претензия к Angular заключается в том, насколько он сложен, теперь я довольно хорошо понимаю, как он работает, и я говорю не о кривой обучения, а даже когда вы знаете, как его использовать, это такая проблема делать что-то в angular. Конечно, начать новый проект очень просто, но расширить проект — нет. Это действительно просто слишком все усложняет без видимых причин. Мне нравится идея повторно используемых компонентов, и я ценю эту попытку, но повторное использование компонентов не так просто, если вы специально не настраиваете свой проект для этого (а если вы настраиваете его для повторного использования, вы можете сделать то же самое с другими вариантами). Трудно описать этот момент, не коснувшись других моментов, о которых я собираюсь написать в следующих предложениях, поэтому я позволю другим пунктам говорить сами за себя.

МВК

Я по большей части предвзято отношусь к MVC, я думаю, что у него есть время и место, и это достойный подход к структурированию проектов, но использование mvc во внешнем интерфейсе кажется довольно странным, вы разделяете каждый компонент на машинописный текст, html и компонент css, но по соглашению файл машинописного текста мало что делает, потому что вы помещаете логику в сервисы (это еще один файл ts), поэтому вы получаете файл шаблона html, файл css и почти шаблон, такой как ts script.

Моя проблема в том, что у вас есть как минимум 3 файла без логики и один с логикой, почему бы просто не объединить их вместе. В этом смысле мне больше нравится решение React с использованием jsx (каким бы уродливым оно ни было). Но интересно то, что вы на самом деле добавляете элементы angular в свои шаблоны, что снова работает так же, как если бы вы использовали рельсы или django со встроенным python в представлении.

Машинопись

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

Или вы можете просто отказаться от всего и просто использовать let/var как обычно, и ничего плохого не произойдет, потому что это компилируется в js, и вы можете в конечном итоге использовать js. Что я в конечном итоге и делаю, потому что машинописный текст уродлив и довольно бесполезен.

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

самоуверенный

Я думаю, что большинство вещей, которые я упомянул, можно суммировать в одном:

Angular очень самоуверен. В любой момент я чувствую, что должен следовать пути Angular, и, честно говоря, я не всегда с ним согласен. Он не такой строгий, как рельсы, и в какой-то момент каждый фреймворк будет самоуверен до определенного уровня, но для меня angular определенно пересекает черту.

Одно из приятных преимуществ, которое мне нравится в angular, заключается в том, что он поставляется с собственной конфигурацией веб-пакета, с которой вам не нужно возиться, но вы не можете создавать несколько конфигураций веб-пакета для разработки/производства. Это означает, что если вам нужно настроить веб-пакет, вам нужно отсоединить cli от angular, и вы сами по себе. Мне нравится, что у них есть предварительно настроенный веб-пакет (хотя и самоуверенный), но принуждать вас к их конфе или делать это самостоятельно — это слишком.

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

Альтернативы

В целом, я просто думаю, что есть просто лучшие альтернативы, React, хотя он все еще не идеален, на мой взгляд, лучший фреймворк, есть также vue, и если вам это нравится, вы можете использовать elm.

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

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