Pull to refresh

Comments 35

Не последнюю роль играет и стабильность фреймворка при общеизвестной поддержке компанией Google.

AngularJS закрыли спустя 6 лет. В Angular детские болезни лечили до 10 версии.

Vue, наиболее «юный» фреймворк, разработанный изначально бывшим инженером из Google – Эваном Ю, был нацелен взять лучшее из «миров» React и Angular и получил уникальную систему реактивности компонентов.

Нормальная поддержка TS появилась только в 3 версии. Система реактивности до сих пор сломана.

с точки зрения проекта подкупает относительная простота поиска React-разработчиков с разным уровнем опыта

Профессионалов на React вы не найдёте. Просто потому, что профессионал, решая проблемы Реакта, неизбежно приходит к выводу, что от Реакта больше вреда, чем пользы, и изобретает свой велосипед (SolidJS, MillionJS, ReAtom, тысячи их).

Поддержка TS появилась только в 3 версии

Поддержка TS есть и во 2 версии. Не полная (в шаблонах типизация не работает), но есть.

Система реактивности до сих пор сломана.

Видео на 3 часа?! Серьёзно? Походу, система реактивности во Vue сломана очень сильно...

Ах, да, забыл рассказать, как та же задача решается на $mol...

Композиция счётчика:

$my_counter $mol_row
    sub /
        <= Value $mol_view
            sub /
                <= value? <= value_initial 0
        <= Decrement $mol_button_minor
            title \-
            hint \Decrement value
            click? <=> decrement? null
        <= Increment $mol_button_minor
            title \+
            hint \Increment value
            click? <=> increment? null
        <= Reset $mol_button_minor
            title \x
            hint \Reset value
            click? <=> reset? null

Поведение счётчика:

export class $my_counter extends $.$my_counter {
  
    decrement() {
        this.value( this.value() - 1 )
    }
  
    increment() {
        this.value( this.value() + 1 )
    }
  
    reset() {
        this.value( this.value_initial() )
    }
  
}

Композиция приложения с поднятием состояния из счётчиков:

$my_app $mol_view
    sub /
        <= Left $my_counter
            value? <=> left? 1
        <= Right $my_counter
            value? <=> left? 2

Но где же глобальное состояние? А вот тут:

$my_app.Root(0).left() // 1
$my_app.Root(0).right() // 2

И тут:

$my_app.Root(0).Left().increment() // 2
$my_app.Root(0).Right().increment() // 3

Глядя на этот код хочется спросить, что это такое?
1.Композиция счётчика - что это за синтаксис? <= это вообще отдельный вид извращения
для понимания даже bem pug в свое время был понятнее
2. Поведение счётчика: не проще ли взять MobX с autoObserver-ом ?
В итоге: Что то изобрели свое и пытаемся продвинуть под каждым фронт постом.
Даже если и концепции нормальные в твоем фреймворке то синтаксис просто ужас. Для разметки нужно использовать что то ближе к стандартному HTML, как тот же JSX.

Мда... Синтаксис ужасен.

Это не аргумент, а ассоциация.

Любой front-end разработчик который не знает ни один из єтих фреймверков, посмотрев на представленные компоненты сможет хоть что-то разобрать в Angular, React, Vue компонентах, в вашем же случае без курения документации ничего понять невозможно

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

Как объявить наблюдаемое состояние не читая документацию по реактивной системе Вью? Вопрос со звёздочкой: а как предотвратить исчезновение компонента при любой исключительной ситуации?

Как перерисовать компонент не читая документацию по хукам Реакта? Вопрос со звёздочкой: а как предотвратить лишние ререндеры?

Вопрос со звёздочкой: как отрендерить хоть что-то, пока в стриме ещё нет событий?

Хм, неужто добавить в стрим событие? :-)

От чего пол приложения упадёт в попытке его обработки вместо ожидания загрузки данных.

С чего бы от события в локальном стриме компонента упало пол-приложения?

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

И?

localStream = concat(of(initialValue), globalStream);

localStream = globalStream.pipe(..., startWith(initialValue))

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

>Все 3 фреймворка для этой задачи используют решения, которые базируются на архитектуре Flux.

Или фраза коряво составлена, или это заблуждение. Никто не заставляет вас использовать в flux (redux) при работе с реактом, это исключительно выбор разработчика.

Опять же, никто не заставляет тащить ngrx в angular — это тоже выбор разработчиков (с редаксом головного мозга).

Тоже не понял почему не Pinia в случае vue, но да ладно

Мы в +3 году от точки, когда наштампованные бесчисленными курсами ещё более бесчисленные свитчеры-фронтендеры отчаялись выучить ООП и понять flux 😁 Оказалось им проще учить хуки и прочие абстракции, чем нормальное программирование. Хотя и flux та ещё хрень из той же оперы. В +3 году от точки, когда шутки про сеньер ангуляр девелопера превратились в реальные позиции с вакансиями. Мы окунулись в реальность, когда на фронтенде осталась одна функциональщина и фронтендер все больше напоминает вордпресс-разработчика из конца нулевых

Все 3 фреймворка для этой задачи используют решения, которые базируются на архитектуре Flux.

Кто сказал что React использует flux подход?
Какой подход для управления состоянием использовать - выбирает исключительно разработчик:
- Использовать Redux и ему подобное - выбор как бы так помягче сказать чтобы сильно не обидеть людей, застрявших в 2015 году.
- Использовать MobX - выбор адекватных людей.

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

а для чего нужен vuex в VUE 3 , когда там появилась реактивность на всё?

просто можно же написать

import { reactive } from 'vue';

const state = reactive({

jobs: [],

});

const actions = {

addJob(job) {

state.jobs.push(job);

},

};

export default {

state: state,

...actions,

};

Главной проблемой глобального менеджмента состояния в Angular все так же остается необходимость прежде всего свыкнуться с написанием кода на TypeScript

Это не проблема. Это преимущество. Как раз-таки возможность в других фреймворках бесплатно или по скидке выстрелить себе в ногу, написав код на JS или, упаси Б-же, Flow, - это настоящая проблема.

Казалось бы, при чём тут AngularDart?

Какие ещё нджирыксы в ангуляре? Всё решается внутренними сервисами + rxJS. Теперь ещё и сигналы появились. Хочешь глобальный стейт, пожалуйста. Хочешь локальный, нет проблем. Инжекти как тебе душе угодно. Зачем все эти костыли?

Корректный код на RxJS - та ещё головоломка. А дебажить его - одно удовольствие.

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

Нормально всё дебажится, если хоть раз прочитать документацию... А вот от MobX и прочей "магии" в большом проекте больше проблем чем пользы, особенно от всяких autorun и прочего мусора... Спасибо, лучше научиться нормально проектировать слой данных, чем потом страдать от проблем производительности "типового" решения

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

 А вот от MobX и прочей "магии" в большом проекте больше проблем чем пользы, особенно от всяких autorun и прочего мусора...

Мда, тяжелый случай. Вы пытаетесь спихнуть свою криворукость на отличный инструмент который дает вам возможность писать отличный код и полную свободу. Если голова на плечах есть, то проблем будет ровно 0. А вообще, вот вам несколько подсказок:
- Ctrl+F
- Find Usages (WebStorm) / Find All References (VS Code)
- console.log(...)
И ваша жизнь станет безумно проста и понятна.

Спасибо, лучше научиться нормально проектировать слой данных

Судя по тому, что вы даже с MobX'ом справиться не можете, вам это не светит никогда.

Нормально всё дебажится, если хоть раз прочитать документацию...

Это всё не имеет смысла, если изначально код который приходится писать на rxJS - полнейшее вырвиглазное write-only говно.

Sign up to leave a comment.