посмтри что нибудь подобное angular.element('*[ng-app]').injector().get('serviceName')
спасибо за наводку, попробую я хотел делать вообще грязный хак.. в конструкторе сервиса делать присвоение globalMyService = this
Какой кейс то?
Просто как факт - 🤯, это и есть изврат, который стоит вообще обходить стороной.. и на все есть либо сервисы, либо директивы... И уж точно направления из анги во внешний мир это грубое проведение.
Да у меня просто Легаси на ангулярЖС, и новый функционал пишется на реакте. Просто есть пару сервисов в ангуляре связанные с авторизацией.. просто нужно переи их же использовать вне ангуляра. Но в общем выход я нашел
И кто до этого додумался?
лоол, у меня легаси на АнгулярЖС и функционал таки продолжается писатся на АнгулярЖС, хотя остальная часть приложения - на реакте)(((
Встречный вопрос - а почему не мигранули на нг2+?
Я, я же архитектор :)
А смысл?! Можно поподробнее?
Ну во первых ангулярЖС как бы уже все, не актуален. В будущем находить новых разработчиков на его поддержку будет проблематично. Грядет поэтапный редизайн. Но сразу все приложение переписать не получится, так как нужно очень много времени и ресурсов. Потому я принял решение новые модули писать на реакте, к счастью реакт достаточно гибкий чтобы обернуть его точку входа в ангуляровый компонент и рендерить прямо в тимплейте. В этом случае новый функционал будет дописываться на актуальной платформе и постепенно заменит все Легаси куски кода, и однажды, когда 80% кодовой базы будет поэтапно мигрировано - будет очень просто отказаться от оставшегося куска кода и перейти полностью на новую платформу :)
Почему было принято решение перейти на реакт, а не на свелти, вуй и ангу10?
это очень хороший вопрос. vuejs - точно нет и даже по ряду причин: 1) потому что на vue2 писать новый проект не имеет смысла, он очень быстро станет deprecated + есть проблемы с тем чтобы качественно покрыть типами; 2) на vue3 писать еще слишком рано - сырой, и экосистема не готова, плюс.. интеграции - highcharts, echarts, тонна других оберток.. надо все педалить самому. angular 10 - в общем-то был бы хороший выбор, но если бы я начал переписывать куски на 10ом ангуляре и вставлять их контейнерами в существующее приложение - бандл был бы неведомых размеров, плюс ангуляр 10 очень сложный для конфигурации.. я имею ввиду, я вручную сконфигурировал вебпак конфиг для старого ангулярЖСа, и мне легко было рядом подложить пару трюков для *.tsx файлов чтобы рядом компилить в единый бандл реактовое приложение, в частности же все теги все равно превращаются в банальный document.createElement и это очень просто. Как это сделать с новым ангуляром - я понятия не имею, думаю, мне пришлось бы две недели заниматься R&D.. и в общем есть много вопросов. svelte - ну это игрушечная поделка без нормальных best practices, разве что экспериментальное что-то попедалить - да, но опять же много вопросов на счет интеграций с популярными графиками и другими модулями. react - идеально подходит для подобных извращений, сама по себе библиотека очень мелкая и достаточно гибкая, настраивается вебпак довольно легко, встраивается куда угодно, кушает мало, поведение предсказуемое, оборачивать реактовый компонент (особенно понимая что это createElement) довольно легко, включить JSX-синтаксический сахар для других файлов проще простого чтобы просто импортировать тот же компонент и обернуть его в ангуляровскую директиву. Ну а продолжать расширять кодовую базу на angularJS тоже не очень хорошая идея, ведь во-первых его уже никто не учит и это вызывает огромные проблемы даже года через 2-3 находить людей на поддержку даже. Можно влететь в некислые денежные потери однажды на переписывание всего приложения. Как-то так:)
Ну не знаю получилось бы вообще контейнерами вставлять ангу10... Не факт + если это даже возможно, то просто там бы все афигели с архитектуры и тд. А почему не рассмптривался вариант как раз все новое - в отдельных страницах? В чем проблема то? Просто помодульно написать новые части и также помодульно переаисать старые
Ну флаттер ещё очень рано, а тем более для веба :)
Страница состоит из контейнеров (типа дашборда) И сейчас переписывается по очереди каждый контейнер, не вся страница целяком. Потому делать редиректы между new.domain.com/pageX и domain.com/page2X вызовет много сложностей... Потому пока отдельно контейнеры, а со времёнем (год плюс) мигрирует и весь проект
Мы приняли решение пока продолжать саппортить нг1 дальше и по возможности скидывать на индусов, но в прошлом месяце все контракты почему-то свернули 😭 и теперь снова приходится пахать на нг1 и забывать нг10... параллельно мы пишем другой проект база которого совпадает с текущим проектом на нг10 и планировали перенести клиента на него, но тот пока добро не даёт... Плюс у нас ещё тяжелее ) мы ещё на галпе и на жс с примесью ес6 классов 😂🙈🤦♂
Плюс надо ещё под него весь дизайн поменять/подогнать ) и в данном случае проще с нуля все делать
Вуй и свелти я сразу выкинул, так как их будущее очень сомнительное, особенно в условиях короны... На реакт у нас никого нет на фирме с хорошей интерпрайз базой, и выбор нг10 как единственное решение никуда не продвинуло. Да, вес бандла - дело тонкое, но при сильном сжатии трафика (gzip/brotly/etc) и хттп2 даёт небольшое ускорение. Плюс обфускация и минификация кода сжимает по большей части все. И немного кэша на то что редко меняется помогает с загрузкой...
При миграции основная трабла это перепись некоторых кусков кода, который не поддается в нг10, остальное же решается с лёгкостью используя их ng-upgrade plugin или как его там... В данном случае старая архитектура должна оставаться на своем месте.
" который не поддается в нг10" - да там лучше ничего не апдейтить. С 0 в новой анге начинать и все
Обсуждают сегодня