И нужно писать это новое на новом уже..
Sasha
https://tech.small-improvements.com/2017/01/25/how-to-migrate-an-angularjs-1-app-to-react/
Igor
Кратко о себе. Работаю в компании Лига. AngularJS и Angular 5 . У нас как раз гибридное приложение, без всякий либ с магией, все руками делается.
Иван
Denis
Denis
для самых базовых вещей можно просто написать самому observable паттерн
Denis
https://gist.github.com/mak2xt/e6771ef65465b5f687277430f2a932d8
Denis
вот что-то такое
Denis
ObserverObservable это как Subject в RxJS
Anton
Igor
Иван
Во-первых, очень долго. Конечно 90% времени вы будете рефакторить ajs даже не заикаясь про а2+, но после момента принятия решения о переходе хочется, чтобы это побыстрее закончилось. Дальше большие проблемы с поиском аналогичных а2+ модулей уже использованных в ajs и выглаживание различий. Почти в 100% таких случаев вёрстка разлетается в щепки даже если библиотеки от одного производителя. Доставил проблем переход с ui-router-а на нативный ангуляровский, в какой-то момент первый просто отказался работать из-под даунгрейженых компонентов а2+ и гладкости не получилось, возможно мало копали (смотри п.1)...
Иван
Основная проблема, что сколько не планируй, сколько не готовься, всё равно всё пойдет наперекосяк. Чего-то не досмотрели, чего-то не учли, что-то не заработало как планировали
Eugene
С нуля не вариант. Не дадут столько времени
Тогда я бы взял 100% Vue, и переписывал бы частями, благо Vue это позволяет сделать без каких либо проблем + прикрутить сразу TS на Vue и сразу заметите как все становится проще :)
Dmitriy
Eugene
И базовые вещи есть от того же производителя :)
Eugene
И я реакт не люблю за его JSX, это ад, js + весртка
Dmitriy
О ребят, в скором времени будем переводить проект с спагетти Джнйкверри. И вот в команде мнения разошлись что брать в качестве инструмента для фронта
Dmitriy
И вот кто что посоветует?
Eugene
Я думаю либо ангуляра либо vue. Я бы взял Angular 5 :)
pa[aad
Eugene
Хотя react меня подкупает его React Native на перспективу
Dmitriy
и css
Ну компоненты вью тоже все в одном файле
pa[aad
Ну компоненты вью тоже все в одном файле
но не так же
там именно css in js
/* Thumbnail.css.js */
export default {
image: {
borderRadius: '3px'
}
}
/* Thumbnail.jsx */
import styles from './Thumbnail.css.js';
render() { return (<img style={styles.image}/>) }
/* Rendered DOM */
<img style="border-radius: 3px;"/>
pa[aad
верстальщики говорят wtf jsx,
а потом еще wtf css in js
как им быть, если еще и лоадер less / scss / sass
жестяк
Dmitriy
pa[aad
вот именно, там оно в style хоть как обычно
Константин
Забыл представиться, не хорошо
Сейчас живу в СПб. Работаю в FirstLine Software фуллстек разработчиком с таким набором:
mssql, Asp.NET 4.5, AngularJS, Bootstrap, Less
Работаю на би-ту-би е-коммерс проекте
#whois
Dmitriy
Dmitriy
Тобишь топить за вью?
pa[aad
если бы дело не касалось ангуляра в целом
я бы выбрал vue вместо react
а так у меня only angular
nopefish
всем привет, наблюдаю странное - поставил ландшафтную ориентацию в хроме (iPhone 8) чтобы изменить ширину шапки, но оказалось что в такой ориентации ширина не равна высоте, она чуть меньше
nopefish
где это вычисляется?
nopefish
кто в курсе ? Медиа-запросом я не очень понимаю как это сделать, т.к. мне просто макс. ширина нужна, а девайсов много...
nopefish
нужна максимальная ширина
nopefish
в ландшафтной ориентации ) путано написал
nopefish
извиняюсь
Eugene
Это вопрос по верстке а не по Ангуляру
nopefish
разобрался, там масштаб менялся автоматом
Sasha
Такой кейс - есть некая форма, есть модалочки.
У модалочек вложенность практически бесконечная. Есть какие-нибудь способы отключить вотчеры, которые находятся в parent'ах, помимо ng-if?
pa[aad
pa[aad
а зачем тебе держать открытую модалку ?
только ради биндингов ?
Sasha
а зачем тебе держать открытую модалку ?
только ради биндингов ?
Нет, смотри. Есть форма, там есть какая-нибудь связь, типа one2many. То есть в определенном поле открывается еще форма в модалке, в этой мoдалке может быть еще поле o2m с модалкой. То есть получается у нас есть основная форма с вотчерами, когда открываем модалку - добавляются еще вотчеры и так до бесконечности
pa[aad
Sasha
Это ерп и там все динамически
Sasha
Bogdan
Sasha
На скрине - это не ангуляровское приложение, а десктопное
pa[aad
да, 5 модалок это текущие открытые ( типа текущий открытый стек ), а весь стек храните рядом
просто при нужной модалке, вам нужно будет ее показать и передав ее состояние
при этом сохранив ее позиционирование с помощью хранения z-index
Bogdan
Sasha
Каждое поле динамически зависит от других и вычисляется с помощью специальных выражений.
Bogdan
Bogdan
Скрытые компоненты не будут гнобить дайджест
Sasha
А в интерфейсе их скрывать ng-if'ом?
Bogdan
И вот тогда действительно можно очень глубоко в кроличью нору лезть
Sasha
Насчет хранений стейтов по мере закрытия - это понятно. У меня скорее вопрос, как убрать из DOM'а. Насколько я понимаю, это единственный способ убрать вотчеры
Sasha
Имею ввиду специфичные, типа ng-required/...
pa[aad
Bogdan
Sasha
pa[aad
Sasha
А как можно оптимизировать выражения в полях? Потому что даже обычная форма работает достаточно медленно
Sasha
Я просто не понимаю причин, почему тормозит так. Может глупые вопросы задаю, я сам бэкенд/десктоп.
pa[aad
Bogdan
Скорее всего, дофигище вотчеров
Sasha
А я уже старался с оптимизировать количество вотчеров, соежу за ними. Где можно - ::, односторонние биндинги, но вотчеров на форме все равно 1500, а иногда и 1900
pa[aad
pa[aad
а ты вотчеры удаляешь когда событие $onDestroy эмитится в скоуп ?
Sasha
Sasha
По поводу выражений, например вот выражение для ng-disabled:
const expr = {
"s": [{
"__class__": "Not", "v": {
"s2": "draft", "s1": {"v": "state", "d": "", "__class__": "Eval"}, "__class__": "Equal"
}
},
{
"s": [{"__class__": "Bool", "v": {"v": "lines", "d": [0], "__class__": "Eval"}},
{"__class__": "Bool", "v": {"v": "party", "d": "", "__class__": "Eval"}}],
"__class__": "And"
}, {"__class__": "Bool", "v": {"v": "lines", "d": [0], "__class__": "Eval"}}],
"__class__": "Or"
};