Comments 23
Совет номер 1 не использовать Angular…
Зачем писать такое в статьях посвященных тем, кому данный фреймворк интересен? Есть ли у вас аргументы, обосновывающий сей ценный совет?
Я бы не ждал аргументов после предыдущей реплики.
UFO just landed and posted this here
Angular уже давно как неактуальный а использовать его это головная боль для разработчика.
Коммент в тему.
Я когда пытался сделать по ангуляру тестовое то возникали различного рода странности и ошибки где рендер 3 элементов вызывался 9 раз вместо 3, или когда контекст элемента не передается в другой контролер и его нужно было передавать окольными путями создавая спагетти код и многое другое, после некоторых попыток я все это дело забросил и нашел вакансию по React с которым у меня не возникало таких неразрешимых проблем.
Я когда пытался сделать по ангуляру тестовое то возникали различного рода странности и ошибки где рендер 3 элементов вызывался 9 раз вместо 3, или когда контекст элемента не передается в другой контролер и его нужно было передавать окольными путями создавая спагетти код и многое другое, после некоторых попыток я все это дело забросил и нашел вакансию по React с которым у меня не возникало таких неразрешимых проблем.
Комментарий из разряда, не понимаю, но критикую. А плохо только одно, что вы не разобрались. C react свои проблемы, при всей простоте самой react.js экосистема вокруг него это ужас, каждый проект — это сборная солянка по архитектурным решениям и используемым библиотекам, только state manager: redux, mobx, mobx-state-tree, aync: redux-thunk, redux-saga, rxjs, не говоря уже о том что доки по webpack надо будет курить постоянно, и кривая входа растет дальше больше, тогда как с angular на начальном этапе сложно, а потом проще и в проект вливаться значительно проще
На React я всегда знаю что происходит так как он прост но очень функционален.
Экосистема очень помогает в разработке сложных интерфейсов и ко всем им есть документация
Если разобраться там нет ничего сложного.
Ну так не используй webpack, в чем проблема?
В angular всегда сложно и не понимаешь почему рендерится оно по 16 раз вместо 1, почему контекст не передается, почему возникают непонятные ошибки и многое другое.
экосистема вокруг него это ужас
Экосистема очень помогает в разработке сложных интерфейсов и ко всем им есть документация
state manager: redux, mobx, mobx-state-tree, aync: redux-thunk, redux-saga, rxjs
Если разобраться там нет ничего сложного.
доки по webpack надо будет курить постоянно
Ну так не используй webpack, в чем проблема?
тогда как с angular на начальном этапе сложно, а потом проще и в проект вливаться значительно проще
В angular всегда сложно и не понимаешь почему рендерится оно по 16 раз вместо 1, почему контекст не передается, почему возникают непонятные ошибки и многое другое.
Мне например все понятно из того что ты перечислил
Ну так не используй webpack, в чем проблема?
ну, честно, вы как не работали ровно с React. Что значит не использовать webpack? его надо постоянно тюнить, то нужно билд разбить и динамически подгружать по роуту, то нужно SSR подключить, и нужно постоянно что-то дописывать на каждый чих, даже в готовые шаблоны проектов, потому что нет универстального одного
Если разобраться там нет ничего сложного.
Если разобраться, то и с brainfuck все отлично, но это ненормально, когда на одном проекте react+redux+thunk+router3, на другом react+redux+saga+router4+recompose и все компоненты functional, еще видел проект, где была ramda c flow, где-то typescript. Что это, почему каждый проект — это как новая вселенная со своими архитектурными решениями?
Экосистема очень помогает в разработке сложных интерфейсов и ко всем им есть документация
Ну видимо формы и таблицы не относятся к сложным интерфейсам
почему контекст не передается, почему возникают непонятные ошибки и многое другое
Какой контекст не передается, какой контролер, вы о чем? Речь в статье идет про angular 2+!
ну, честно, вы как не работали ровно с React. Что значит не использовать webpack? его надо постоянно тюнить, то нужно билд разбить и динамически подгружать по роуту, то нужно SSR подключить, и нужно постоянно что-то дописывать на каждый чих, даже в готовые шаблоны проектов, потому что нет универстального одного
Нормально я работал без webpack делал проекты и не жаловался. Webpack не нужен, это еще одна ненужна приблуда наравне с ангуляром.
Если разобраться, то и с brainfuck все отлично, но это ненормально, когда на одном проекте react+redux+thunk+router3, на другом react+redux+saga+router4+recompose и все компоненты functional, еще видел проект, где была ramda c flow, где-то typescript. Что это, почему каждый проект — это как новая вселенная со своими архитектурными решениями?
Ну так это удобно есть модули которые нужны их и загружаешь в зависимости от проекта. Архитектурные решения разные в зависимости от того что нужно сделать.
Какой контекст не передается, какой контролер, вы о чем? Речь в статье идет про angular 2+!
А ну значит ты не работал с ангуляром.
Ой, я тут мимо проходил и решил написать. Я в корне не согласен, мой опыт использования angular говорит о обратном. На начальном этапе с angular все очень просто. Можно начинать писать вообще мало чего зная. С каждым месяцем использования Angular я находил новые интересные особенности, которые приводили меня в бешенство. По итогу общего опыта работы в полтора года с этим чудом я не возьму ангуляр для проекта длинее месяца и сложнее говноформочек.
Дальше, вы весьма неправы касательно state manager. Начнем с того, что в самом Angular уже идёт два механизма отслеживания изменений из коробки: либо на каждый чих, либо OnPush. Первый идеально подходит для случаев, когда не нужно управлять стейтом. Второй является основой для стейт менеджмента, при этом не самого лучшего качества. И да, вы можете подключить redux, ngrx (похоже на redux, но несовместимо с redux), mobx и я не знаю что ещё. Другое дело, что для многих проектов эти вещи не нужны.
Особенных лулзов я ловлю с того, что вы включили в свой список rxjs. По моим ощущением, за пределами Angular он мало кому сдался по объективным причинам.
Дальше, вы весьма неправы касательно state manager. Начнем с того, что в самом Angular уже идёт два механизма отслеживания изменений из коробки: либо на каждый чих, либо OnPush. Первый идеально подходит для случаев, когда не нужно управлять стейтом. Второй является основой для стейт менеджмента, при этом не самого лучшего качества. И да, вы можете подключить redux, ngrx (похоже на redux, но несовместимо с redux), mobx и я не знаю что ещё. Другое дело, что для многих проектов эти вещи не нужны.
Особенных лулзов я ловлю с того, что вы включили в свой список rxjs. По моим ощущением, за пределами Angular он мало кому сдался по объективным причинам.
По итогу общего опыта работы в полтора года с этим чудом я не возьму ангуляр для проекта длинее месяца и сложнее говноформочек.
Если у вас не хватает экспертизы, это не значит, что инструмент плохой. Skyeng и tinkoff активно используют и ничего, все работает
Дальше, вы весьма неправы касательно state manager
А в чем не прав? Мой аргумент был, что в экосистеме react state manager обязателен и посколько facebook не озаботился все размыто (flux, reflux, refux и тд) и так со всеми библиотеками, причем тут ChangeDetectionStrategy, которые по сути аналогичны Component и PureComponent
Особенных лулзов я ловлю с того, что вы включили в свой список rxjs.
Ок, redux, ramda, flow, immutable.js за пределами React.js «мало кому сдался по объективным причинам». Но я не ловлю с этого лулзов, потому что это нормально, инструмент обычно нужен для определенных целей
Если у вас не хватает экспертизы, это не значит, что инструмент плохойОмг. Вы бы прежде чем обвинять меня в отсутствии экспертизы хотя-бы спросили, что мне конкретно не нравится.
Skyeng и tinkoff активно используют и ничего, все работаетЭто какой-то извращенный вариант демагогического аргумента про авторитеты? Или это ошибка репрезентативности, когда вы не в курсе про проблемы отдельных разработчиков?
Мой аргумент был, что в экосистеме react state manager обязателен и посколько facebook не озаботился все размыто (flux, reflux, refux и тд) и так со всеми библиотекамиДа, вы правы, когда говорите, что для react использование state manager скорее обязательно (хотя на самом деле нет). Но когда вы будете пилить сложное приложение на angular, то вам придется подключать state manager.
Между тем, я не считаю это серьезной проблемой, потому что сейчас нельзя заставить все веб-приложения работать только через один подход.
А неправы вот вы в чем: в вашем оригинальном сообщении был наезд на React за то, что проекты на React используют разные решения для управления стейтом. Но проекты на Angular тоже используют разные решения для управления стейтом!
ChangeDetectionStrategy, которые по сути аналогичны Component и PureComponentВообще не правильно.
При ChangeDetectionStrategy.Default у вас компонент перерисовывается на каждое событие, в том числе и на каждый mousemove. У реакта такого чуда нет.
При ChangeDetectionStrategy.OnPush ваш компонент начинает работать чем-то похоже на React.PureComponent
Ок, redux, ramda, flow, immutable.js за пределами React.js «мало кому сдался по объективным причинам». Но я не ловлю с этого лулзов, потому что это нормально, инструмент обычно нужен для определенных целей
Драма в том, что redux, ramda, flow, immutable.js не являются обязательным для работы с react. А вот rxjs является обязательным для работы с Angular, потому что Angular очень многое делает через него. Но это не более чем забавный момент.
UFO just landed and posted this here
Почти все уже знал, но не все. Век живи — век учись. Добавил в закладки.
Не могу согласиться с советом про trackBy, конечно знать его нужно и есть случаи когда без него не обойтись, но использовать его везде кажется излишним
Там в комментариях к оригинальной статье, было ценное уточнение про async pipe. Не очень удобно часто писать | async, плюс можно наплодить подписчиков. Есть небольшой обход. Например один observable надо прокинуть в несколько дочерних компонент
<div>
<child-one
[data]="(data$ | async)?.propOne">
</child-one>
<child-two
[data]="(data$ | async)?.propTwo">
</child-two>
</div>
Получается не очень красиво. Можно сделать так:
<div *ngIf="data$ | async as data>
<child-one
[data]="data.propOne">
</child-one>
<child-two
[data]="data.propTwo">
</child-two>
</div>
А в целом отличная и полезная статья
В ответ на вопрос в конце статьи — да, используем в проде, очень плотно. Раньше был angularJS и React. На данный момент все новые разработки перевели на Angular, полет нормальный, напилена база компонент, которая используется во множестве наших проектов.
PS. странно что в статье не написали ничего по ChangeDetectionStrategy, можно получить неплохой прирост производительности
PS. странно что в статье не написали ничего по ChangeDetectionStrategy, можно получить неплохой прирост производительности
Многие советы относятся скорее к TS, чем к Angular. С таким же успехом можно наскрести 20 советов по TS и выдать их за советы по Angular…
Sign up to leave a comment.
22 совета Angular-разработчику. Часть 1