Регистрация  |  Вход

Простая страница: Angular VS Visualforce

Сегодня наткнулся в проекте на несложную страницу, которая делает следующее:
- рендерит список записей;
- позволяет создавать новые записи и редактировать текущие;
- удаляет записи;
- поиск по выведенным записям.

и страница сделана на Angular (бекэнд подключен через RemoteAction), хотя все это можно было без лишних сложностей запилить и на чистом Visualforce плюс немного JS.

И меня возник резонный вопрос, а стоило ли использовать Angular для таких нехитрых случаев?

вот какие плюсы и минусы вижу в использовании Angular для простых страниц:

минусы:
- требуются хотя бы минимальные знания Angular чтоб поддерживать такие страницы;

плюсы:
- страница изначально асинхронная, т.е. при выполнении ДМЛ операции страница не перегружается полностью, и вроде как должна работать быстрее;
- если придется разматывать большую таблицу то нет ограничения в 1000 итерации, как у apex:repeat, хотя конечно какой разговор - пагинация и пагинация на бекэнде, и никаких тысяч записей на фронт-энде;
- все данные (записи) изначально представлены как JS объекты, то есть если нужно с ними какие то операции делать на фронте - все уже готово. Думаю, что сам фреймворке предлагает какие стандартные функции по работе с загруженными данными, как поиск.

что вы думаете по этому поводу?

Сегодня наткнулся в проекте на несложную страницу, которая делает следующее:
- рендерит список записей;
- позволяет создавать новые записи и редактировать текущие;
- удаляет записи;
- поиск по выведенным записям.

и страница сделана на Angular (бекэнд подключен через RemoteAction), хотя все это можно было без лишних сложностей запилить и на чистом Visualforce плюс немного JS.

И меня возник резонный вопрос, а стоило ли использовать Angular для таких нехитрых случаев?

вот какие плюсы и минусы вижу в использовании Angular для простых страниц:

[b]минусы:[/b]
- требуются хотя бы минимальные знания  Angular чтоб поддерживать такие страницы;

[b]плюсы:[/b]
- страница изначально асинхронная, т.е. при выполнении ДМЛ операции страница не перегружается полностью, и вроде как должна работать быстрее;
- если придется разматывать большую таблицу то нет ограничения в 1000 итерации, как у apex:repeat, хотя конечно какой разговор - пагинация и пагинация на бекэнде, и никаких тысяч записей на фронт-энде;
- все данные (записи) изначально представлены как JS объекты, то есть если нужно с ними какие то операции делать на фронте - все уже готово. Думаю, что сам фреймворке предлагает какие стандартные функции по работе с загруженными данными, как поиск.

что вы думаете по этому поводу?





А чего тут думать?

Вы еще используете Visualforce?

Для VF такая страница это предел архитектурного совершенства. Что-то более сложное уже из разряда фантастики.
Для Ангуляр + RemoteAction это всего лишь приоткрыть глаз чтобы спросить - вы от меня что-то хотите?

Понятно что использовать Ангуляр ИСКЛЮЧИТЕЛЬНО для подобных страниц может и оферхед, но зато это огромные задел на будущее. Такие страницы потом с легкостью перерастают в целые одностраничные приложения для которых пришлось бы создавать десятки VF с ненавистной перезагрузкой страницы.

А для тех кто запилил хотя бы одну страницу на Ангуляр + Remote Action уже не составит никакого труда клепать такие же страницы методом копипаста. Достаточно один раз сделать нормальный сервис для remote action, сам универсальный remote action с красивым роутингом и обработчиком ошибок и все. Костяк любой сложной страницы готов. А дальше возможности ограничиваются только полетом фантазии.

Когда как у VF дела будут выглядеть примерно таким образом

А чего тут думать? 

Вы еще используете Visualforce?

Для VF такая страница это предел архитектурного совершенства. Что-то более сложное уже из разряда фантастики. 
Для Ангуляр + RemoteAction это всего лишь приоткрыть глаз чтобы спросить - вы от меня что-то хотите?

Понятно что использовать Ангуляр ИСКЛЮЧИТЕЛЬНО для подобных страниц может и оферхед, но зато это огромные задел на будущее. Такие страницы потом с легкостью перерастают в целые одностраничные приложения для которых пришлось бы создавать десятки VF с ненавистной перезагрузкой страницы.

А для тех кто запилил хотя бы одну страницу на Ангуляр + Remote Action уже не составит никакого труда клепать такие же страницы методом копипаста. Достаточно один раз сделать нормальный сервис для remote action, сам универсальный remote action с красивым роутингом и обработчиком ошибок и все. Костяк любой сложной страницы готов. А дальше возможности ограничиваются только полетом фантазии.

Когда как у VF дела будут выглядеть примерно таким образом
[coub]https://coub.com/view/x13q0[/coub]

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

то, что это задел на будущее, то согласен, только оно не наступит в СФ. там другое, свое будущее.

кстати есть еще такая штука, в СФ-классик ты можешь использовать Ангуляр в ВФ, а вот Лайтнинг так просто использовать не получится, как я понимаю.

ОК, плиз, опишите мне что Ангуляр вот так прям из коробки может ЕЩЕ сделать полезного в ситуации описанной выше.

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

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

то, что это задел на будущее, то согласен, только оно не наступит в СФ. там другое, свое будущее.

кстати есть еще такая штука, в СФ-классик ты можешь использовать Ангуляр в ВФ, а вот Лайтнинг так просто использовать не получится, как я понимаю.

ОК, плиз, опишите мне что  Ангуляр вот так прям из коробки может ЕЩЕ сделать полезного в ситуации описанной выше.

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


Den Brown
кстати говоря, не думал об этом, но получается что код Ангуляр приложения фактически полностью выгружается на клиента, что мешает людям просто найти рабочие приложение в нете, раскомпилировать и сделать "свое"?

Абсолютно ничего не мешает. Но процесс этот немного муторный и не всем под силу.

[quote="Den Brown"]кстати говоря, не думал об этом, но получается что код Ангуляр приложения фактически полностью выгружается на клиента, что мешает людям просто найти рабочие приложение в нете, раскомпилировать и сделать "свое"?[/quote]

Абсолютно ничего не мешает. Но процесс этот немного муторный и не всем под силу.

Den Brown
то, что это задел на будущее, то согласен, только оно не наступит в СФ. там другое, свое будущее.

Согласен, но когда я начинал использовать Ангуляр вместо VF, Лайтнингом еще и не пахло. А так опыт фронтенда на ангуляре более универсален - что для SF что для любой другой. Меняешь Remote Action Service на поддержку любого другого бэкенда и дальше все одно и тоже.


Den Brown
кстати есть еще такая штука, в СФ-классик ты можешь использовать Ангуляр в ВФ, а вот Лайтнинг так просто использовать не получится, как я понимаю.

Можно извернуться, но это уже будут костыльные костыли. Ангуляр как и Lightning это можный самодостаточный инструмент для создания SPA приложений. Встраивать одной в другое это уже не сильно по феншую.


Den Brown
ОК, плиз, опишите мне что Ангуляр вот так прям из коробки может ЕЩЕ сделать полезного в ситуации описанной выше.

Как-то сложно так на пальцах объяснить еще может сделать полезного. Придумать можно все что угодно. Когда дело дойдет до практики все сразу станет понятным. Для меня лично килер фичей ангуляра является two-way binding. Не спорю что он есть везде и его можно реализовать с нуля самому, но насколько он в ангуляре просто, крут и всегда работает что просто писаешься от удовольствия. Пробовал React, Vue, другие микро фреймворки - ну что-то не то, а в ангуляре ну прям сказка. Компонентная система просто крутая, взаимодествие компонентов огонь. Писать ОГРОМНЫЕ приложения одно удовольствие. Я когда пишу на ангуляре просто испытываю кайф - он реально понимает меня с полуслова и всегда делает так как я задумал. Были опыты работы с другими фреймворками и везде это была борьба и попаболь. Тот же VF вспоминают с болью. Те страницы что раньше разрабатывали целыми отделами по нескольку месяцев сейчас спокойно могу за день накидать.

Den Brown
кстати говоря, не думал об этом, но получается что код Ангуляр приложения фактически полностью выгружается на клиента, что мешает людям просто найти рабочие приложение в нете, раскомпилировать и сделать "свое"?

Пожалуйста. Бери и делай. Никто не запрещает. Но увы, не всем дано. А тем кому дано, им проще свое написать чем в чужом говнокоде ковыряться. Но если тебя пугает то что твою интелектуальную собственность спионерят, то современный Ангуляр компилируется и минимизируется до абсолютно нечитаемого вида и без исходного кода проекта (который хранится в твоем супер секретном репозитории) никому от js файлов пользы не будет.

[quote="Den Brown"]то, что это задел на будущее, то согласен, только оно не наступит в СФ. там другое, свое будущее.[/quote]
Согласен, но когда я начинал использовать Ангуляр вместо VF, Лайтнингом еще и не пахло. А так опыт фронтенда на ангуляре более универсален - что для SF что для любой другой. Меняешь Remote Action Service на поддержку любого другого бэкенда и дальше все одно и тоже. 


[quote="Den Brown"]кстати есть еще такая штука, в СФ-классик ты можешь использовать Ангуляр в ВФ, а вот Лайтнинг так просто использовать не получится, как я понимаю.[/quote]
Можно извернуться, но это уже будут костыльные костыли. Ангуляр как и Lightning это можный самодостаточный инструмент для создания SPA приложений. Встраивать одной в другое это уже не сильно по феншую. 


[quote="Den Brown"]ОК, плиз, опишите мне что Ангуляр вот так прям из коробки может ЕЩЕ сделать полезного в ситуации описанной выше.[/quote]
Как-то сложно так на пальцах объяснить еще может сделать полезного. Придумать можно все что угодно. Когда дело дойдет до практики все сразу станет понятным. Для меня лично килер фичей ангуляра является two-way binding. Не спорю что он есть везде и его можно реализовать с нуля самому, но насколько он в ангуляре просто, крут и всегда работает что просто писаешься от удовольствия. Пробовал React, Vue, другие микро фреймворки - ну что-то не то, а в ангуляре ну прям сказка. Компонентная система просто крутая, взаимодествие компонентов огонь. Писать ОГРОМНЫЕ приложения одно удовольствие. Я когда пишу на ангуляре просто испытываю кайф - он реально понимает меня с полуслова и всегда делает так как я задумал. Были опыты работы с другими фреймворками и везде это была борьба и попаболь. Тот же VF вспоминают с болью. Те страницы что раньше разрабатывали целыми отделами по нескольку месяцев сейчас спокойно могу за день накидать.

[quote="Den Brown"]кстати говоря, не думал об этом, но получается что код Ангуляр приложения фактически полностью выгружается на клиента, что мешает людям просто найти рабочие приложение в нете, раскомпилировать и сделать "свое"?[/quote]
Пожалуйста. Бери и делай. Никто не запрещает. Но увы, не всем дано. А тем кому дано, им проще свое написать чем в чужом говнокоде ковыряться. Но если тебя пугает то что твою интелектуальную собственность спионерят, то современный Ангуляр компилируется и минимизируется до абсолютно нечитаемого вида и без исходного кода проекта (который хранится в твоем супер секретном репозитории) никому от js файлов пользы не будет.

Одним из самых крутых плюсов разработки на Ангуляр считаю его универсальность и слабая зависимость от бэкенда! Было пара примеров в моей практике когда сложные SPA которые пилились изначально под SF выносились и размещались отдельно на heroku или VPS. И это удавалось провернуть очень малой кровью - буквально писался небольшой сервис прокси для авторизации и пересылки запросов извне на SF и все. Сам UI, бизнес логика и поведение приложения никак не страдали. В перспективе подключался свой бэкенд который частично заменял и дополнял SF. Все проходило идеально. Представляю каких бы усилий это стоило если бы решили вынести сложное приложение написанное на VF. Я думаю это один из факторов появления Lightning от SF. Если бы в свое время они взяли Ангуляр за основу и запилили на нем кучу готовых компонентов под SF (что было бы крутейшим решением) то риск ухода клиентов возрос бы в разы. А так попробуй с Lightning спрыгни.

Одним из самых крутых плюсов разработки на Ангуляр считаю его универсальность и слабая зависимость от бэкенда! Было пара примеров в моей практике когда сложные SPA которые пилились изначально под SF выносились и размещались отдельно на heroku или VPS. И это удавалось провернуть очень малой кровью - буквально писался небольшой сервис прокси для авторизации и пересылки запросов извне на SF и все. Сам UI, бизнес логика и поведение приложения никак не страдали. В перспективе подключался свой бэкенд который частично заменял и дополнял SF. Все проходило идеально. Представляю каких бы усилий это стоило если бы решили вынести сложное приложение написанное на VF. Я думаю это один из факторов появления Lightning от SF. Если бы в свое время они взяли Ангуляр за основу и запилили на нем кучу готовых компонентов под SF (что было бы крутейшим решением) то риск ухода клиентов возрос бы в разы. А так попробуй с Lightning спрыгни. 

Люди, так какой именно Ангуляр вы используете: angularJS или angular 2.0 и его новые версии?

Люди, так какой именно Ангуляр вы используете: angularJS или angular 2.0 и его новые версии?

Даже не думай. Забудь про AngularJS. Он уже больше года как устарел. Да, есть проекты на нем старые которые приходится поддерживать. Но если проект новый то однозначно Angular.

Кстати небольшой ликбез по названию. 2.0 некорректно называть! Вообще сейчас уже версия Angular 7 (вот прямо на сейчас stable v7.2.7). Поэтому принято называть старый ангуляр как AngularJS, а новый просто Angular.

Даже не думай. Забудь про AngularJS. Он уже больше года как устарел. Да, есть проекты на нем старые которые приходится поддерживать. Но если проект новый то однозначно Angular.

Кстати небольшой ликбез по названию. 2.0 некорректно называть! Вообще сейчас уже версия Angular 7 (вот прямо на сейчас stable v7.2.7). Поэтому принято называть старый ангуляр как AngularJS, а новый просто Angular.