И все же хочется в Яндексе работать, вроде как и статус, и в резюме лучше смотрится, но амбиции это одно, а решить задачу для своего проекта это другое....
И все же, зачем везде свой синтаксис, придет ли web наконец-то к нативным технологиям? в одном месте *ngIf, в другом месте вы v-if используете, и вот, потом как возьмут, напишут angular 2020 , или Vue 2020, код которых будет не переносим (как это было с angular 1.x to angular 2) и потом сиди переписывай или забрасывай проект.
denismaster, Да, я скорее более примитивный вариант нарисовал с *ngFor, насчет отрисовки инпутов в полях, но общий смысл я уловил, я его в начале также реализовал, но смотрите:
а) в модуле динамического создания компонентов DynamicFormModule они их заранее декларируют:
это означает, если у вас их 200, то вам приходится прописывать их все, и тогда у вас бандл увеличивается
б) Далее они добавляются reference, чтобы можно было сразу получить компонент в Map
components = {
button: FormButtonComponent,
input: FormInputComponent,
select: FormSelectComponent
};
То есть это означает, если у вас их 200 компонентов, вам приходится в двух местах сразу что-то добавлять или удалять (да даже если и IDE как-то вам поможет рефакторить все это, все равно не удобно), то есть в одном месте декларируете компоненты, а в другом помещаете в Map снова теже компоненты, да еще и в entryComponents для модуля нужно указывать, получается 200 компонентов все равно как-то диковато.
А что означает все делается ручками на сервере? Вы к тому, что лучше все же использовать серверный рендеринг + получать макет сразу на сервере?
Ну команда в гневе, что я якобы выбрал не ту технологию, джависты пришли к нам в команду из Сбертеха (раньше они также писали и на angular 1.x), но про второй (четвертый) они не знают и поэтому считают angular испорченной технологией (ибо экосистема стала странной, всякие лоадеры, вебпаки, тайпскрипты). Помочь советами они не могут, что и как делать, поэтому пытался сам найти решение, да, у нас сейчас стоит продуктовая задача, сделать именно динамическую отрисовку компонентов исходя из того, что сейчас лежит в базе (то есть каждый раз пересобирать проект нельзя).
Динамически генерировать формочки мне не надо, это делается легко с тем же *ngFor и привязкой модели
Мне нужно генерировать разного рода компоненты:
<ТУТ ДОЛЖЕН БЫТЬ КОМПОНЕНТ> ТУТ ДОЛЖЕН БЫТЬ КОМПОНЕНТ>
И черт его знает, что это за компонент, может это dropdown-list, может step-list, может
graphSVG компонент, потому как прилетает разметка, а судя по разметке нужно рендерить в тех метках где указан компонент, тупейший способ использовать ngComponentOutlet, но ему на вход нужен reference компонента, а это значит нужно все компоненты где-то хранить в Map и получать их по ссылке, а значит это тупой единый бандл с компонентами.
denismaster, Динамически генерировать формочки мне не надо, это делается легко
<div *ngFor="let field of entityFields">
<input [ngModel]="field" />
</div>
Мне нужно генерировать разного рода компоненты:
<ТУТ ДОЛЖЕН БЫТЬ КОМПОНЕНТ> ТУТ ДОЛЖЕН БЫТЬ КОМПОНЕНТ>
И черт его знает, что это за компонент, может это <dropdown-list>, может <step-list>, может
<graphSVG>, потому как прилетает разметка, а судя по разметке нужно рендерить в тех метках где указан компонент, тупейший способ использовать ngComponentOutlet, но ему на вход нужен reference компонента, а это значит нужно все компоненты где-то хранить в Map и получать их по ссылке, а значит это тупой единый бандл с компонентами.
Ну вот я про серверный рендеринг вроде как писал, что можно попробовать его запустить, но увы их рабочий репозиторий Angular Universal с кучей багов и не у всех все работает, судя по issues tracker. Но раз вы пишите на Angular 1.5, значит вы не используете TypeScript и не знаете как устроена текущая архитектура Angular, может и знаете, но сейчас там все по другому и тут либо ты используешь рендеринг typescript to javascript, либо на сервере комплируешь, но опять же геморой какой-то.
Ну вот как бы в самом ангуляре сделаны это одно, а вот самому реализовать подобное это другое, у меня так и не получилось вынести компоненты в отдельные бандлы и подгружать их и отрисовывать по требованию. И что значит стандартные решения из коробки, вы про ngComponentOutlet, я реализовывал это схему, главной особенностью является передача ссылки на компонент (класс компонента) в директиву ngComponentOutlet, а это значит, что вам придется все компоненты хранить в одном бандле и держать ссылки на эти компоненты в HashMap (ну или обычно объекте ключ => значение) ?
Что насчет Stencil JS, не пробовал, но в репозитории на гитхабе у них IE11+, у нас же заказчики с IE10+.
Можете описать механизм разработки ленивых компонентов https://debtstracker.io/ ? Я пытался использовать что-то от Ionic, но так и не получилось, постоянные ошибки и все падало.
Я понимаю благими намерениями прямиком в ад можно попасть, но дело в том, что на ангуляре я пытался решить эту задачу 3 месяца, думаю время, которое мне было отведено уже на исходе, и либо надо что-то делать, либо проект уже зафакаплен и тогда пора уволняться (что будет означать, что я сдался). У реакта сейчас 74к звезд, у Vue было 80к звезд, сейчас 65к, это означает там была накрутка, их забанили кого-то из, в общем, я так понял React все же лучше, раз обществом лучше расценивается?
Кстати, и почему Vue все же используется что-то подобное в шаблонах, как ангуляр? Это решение лучше и привычней? Я никогда не работал с jsx, но просто я пытаюсь представить, как бы я кучу html писал бы в js и мне не особо это нравилось бы
А в двух словах, что за механизм Vuex или типа Redux применяется в этих фреймворках? Просто к сервисам привык, да и инжектить удобно. А что с написанием тестов, сложнее или проще, чем у ангуляра?
Ну условно 1 модуль и 1 компонент весил у меня 4кб в минифицированной версии, но зависит от компонента (далее умножаем на N количество компонентов), но даже если они не много весят, для кого то, зачем грузить все каждый раз (ведь все это интерпретатор каждый раз прогоняет). Что вы подразумеваете под code splitting? В ангуляре можно разделить по бандлам только модули (но тогда что делать с общими компонентами, если они нужны в каждом бандле).
Бюджет скорее на переработку не выделят, скорее своими усилиями по 15 часов в день и без выходных, если только на благо проекта (просто, если я не могу решить задачу, значит я завел всех в тупик в своей команде).
Можно ли на VueJS использовать typescript, есть ли там аналог сервисов, input, output события как в angular, есть ли примеры с динамической загрузкой или отрисовкой компонентов по lazy load, поддержка модулей.
И опять же, возьмут ли работать в Яндекс, если не используешь React?
eval() cодержимого выполнял, но там не срабатывает DI и в целом, он не использует модуль, так как обычно webpack резолвит пути модулей и ставит в соответствие с именем модуля.
но при сборке webpack import('./something'), нужно прописывать конкретный адрес файла на где лежит на диске, а вот мне приходить должны из базы путь до скомпилированного файла, и вот в коде у меня import(loadFileInDBfromFS);
Извините, можете посмотреть, вы про метаданные вот эти говорили? попытался подставить как вы сказали, но он все равно не подключает компонент
Пишет ошибку: core.umd.js?e2a5:1091 ERROR Error: Uncaught (in promise): Error: No NgModule metadata found for '[object Blob]'.
Error: No NgModule metadata found for '[object Blob]'.