Pull to refresh
4
0
Владлен Волков @lrsvolk

Frontend-developer (angular/electron)

Send message

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

Input: $0.0015 / 1K tokens

1 токен - это примерно 1 слово.

https://openai.com/pricing

Из разряда "поброса" данных в компоненты:


  1. Ещё можно использовать flux-паттерн (к примеру, ngrx), хотя это kind of services
  2. Так же можно что-то пробрасывать через @Attribute(), а не только Input()
  3. Через FactoryResolver задать пропсы компонента напрямую.

  • Крайне экзотические [возможно, антипаттерны], которые видел на практике
    1. У @ContentChild/@ContentChildren задать публичные свойства, тогда компонент-контейнер может смотреть в них. Использовалось внутри какой-то библиотечной пробрасываемой-директивы, чтобы избежать аналогичного биндинга для компонента
    2. Ну, и как же без хранения в глобальной области видимости + declare, хотя такой подход возможен в рамках абсолютно любого фреймворка. Этот "шедевр" использовался вместе с ssr
Первым аргументом в trackBy идёт index, а вторым уже сам иттерируемый item (в stackblitz).

По делу вот 2 вопроса:
1. Почему не использовать virtualScroll? В примере высота элементов «статичная», cdk с этим рендерингом справится легко, не отрисовывая элементы заранее.
2. Если по какой-то причине virtualScroll всё же не подходит, то почему не использовать lazyScroll?

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

Хочу всё-таки немного поспорить с такой позицией.

Если на выходе получается "FizzBuzz Enterprise" -- это означает, что у кандидата/разработчика нет понимание того, что и зачем он делает, какую проблему решает и т.д. и т.п

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

Можно пример такой "небанальной" задачи, ради которой мне нужно лезть разбираться в кишках ангуляра? А то, вот буду сидеть теперь и думать о том, какой же я банальный разработчик, банально решающий банальные задачи)

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

Думаю вам это очевидно просто в силу того, что у вас не было желания/необходимости копнуть чуть глубже

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

"rx""изящно"

Выберите что-то одно.

Ну тут уж дело практики, кмк. Ну либо можно пример того кода с rx, который написан приемлимо, и при этом, если переписать его без использования этой либы, он будет гораздо лучше?

angular 2 никогда не был встраевымым, ничего не изменилось к текущему моменту, и, мне кажется, никогда не изменится - из пушки по воробьям не стреляют) В кейсах, когда нужно что-то среднего объема поднять сам я использую vue.

А про бэкграунд с .net -- это, разумеется, хорошо подмечено. Многие разработчики с базой в виде c# или java легко вкатываются в этот фреймворк.

Самая большая - сложность обучения, из-за которой многие негативно относятся к этой платформе:

  • Непрозрачность того, как работает cdr и zone [ну многие так говорят, хотя мне кажется, что это очевидные вещи какие-то]

  • Такие штуки, как DI и rx - это сложно, хотя я уже представить не могу, как без этих штуковин (паттернов) решать свои задачи настолько же изящно

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

  • Наверно, что-то еще (и даже много), но я уже не могу сказать, что сложно, а что просто, надо спросить у тех, кто пробует войти в ангуляр

Как следствие популярность инструмента падает, сообщество растет медленно, меньше готовых решений. Кроме того сейчас многие перешли на "функциональную" парадигму, и вот есть такая либа как twilio -- в ООП она прям плохо вписывается, хотя это дико популярный инструмент для видео-аудио-звонков.

Остальное мелочи, к примеру:

  • Почему нет типов на ngOnChanges?

  • Почему нет типов на Provider?

  • Почему нет типов у FormControl?

  • Почему нельзя стилизовать диррективу?

  • Как мне пробросить аттрибуты на дочерний шаблон так же красиво, как во vue или react?

  • В качестве расширения комопнентов есть только наследование, а вот всякие крутые решения по типу composition api (vue) или hooks (react) -- отсуствуют;

  • В ssr нет возможности проставить custom-property (css);

А можно какую-то обоснованную критику ангулара-то? Пишу на нем уже года три, а тут оказывается его выбросить нужно. До этого писал на реакте и знаю его очень неплохо, а недавно делал тестовое на vue - и то, и другое тоже хорошо, но чтоб прям принципиально лучше ангуляра - даже близко не представляю о чем речь. Вернее, есть пару претензий к ангуляру, но, как правило, чтобы их назвать нужно очень глубоко знать фреймворк, и те, кто выдает такие комментарии, обычно ничего перечислить не могут

Прошу прощения, не внимательно проскринил статью, приём корректный.
В чем смысл директивы elementRef? Можно же просто обращаться к якорю напрямую:
<img #element>
<button (click)="element.focus()"></button>
class Burger {
   addCheese() {
     ...
     return this
  }

  addSalad() {
     ...
    return this
  }

  addBacon() {
     ...
     return this
  }
}

const burger = new Burger().addCheese().addSalad().addBacon()

Кстати, чисто из любопытства вопрос появился: чейнинг нарушает LoD?

Разницу понимаю.


Задал наводящие вопросы, чтоб и этот аспект осветили, а то как-то не понятно, что делать с этой информацией.

А можно ли из программиста перейти в инженеры? И что для этого нужно? Опыт или что-то другое?

Что такое «сложное»-бизнес приложение? Каждый эту формулировку понимает по своему, и уже это подобный спор делает довольно бессмысленным.

Когда появился первый ангуляр, эта концепция не была популяризирована во фронтенде. Как же без неё обходились? Или сложные приложения не разрабатывались?

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

После нескольких попыток построить сложные бизнес приложения понял, что RxJS и сервисов — мало… state management тоже обязателен


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

С учётом вышесказанного, легко сделать вывод: в каких-то приложениях некий паттерн может не применяться. Тогда можем ли мы написать фронтенд-приложение без стейтменеджмента, что по сути является flux-паттерном? Можем.

Другое дело, что сейчас стейтменеджмент стал стандартом во фронтенде, и он действительно помогает решать задачи единообразно. Это круто по многим причинам, и должна быть довольно веская и, вероятно, специфичная причина, чтобы пренебрегать подобными тулзами.

Считаю, что упомянуть в статье концепцию стейтменеджмента стоило, добавив про ngrx/ngxs и прочее. Думаю, что инициатор ветки именно это и имел в виду, однако, в ответе ему справедливо добавили, что это всё же необязательное условие.

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


  1. Операторы по типу debounce/throttle/audit- Time,
  2. Различное кеширование стримов через share/publish/replay
  3. Все что связано с фильтрацией данных с помощью distinct и filter
    • Одно из важнейших: встроенный пайп async, который идеально работает с rx и onPush

Похоже на паттерн билдер.

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

Alpine.js — это альтернатива jQuery, используется как простая библиотека (с рекомендованным способом подключения через CDN !), в то время, как svelte требует компиляции и имеет гораздо более богатое API.
1

Information

Rating
Does not participate
Location
Краснодар, Краснодарский край, Россия
Works in
Date of birth
Registered
Activity