NG2-SFDC Solutions (beta 1)

NG2-SFDC Solutions (beta 1)

Друзья, свершилось

Я преодолел все барьеры и сделал первую бету своего замечательного тула для разработки Angular 2 приложений под Salesforce. Целью ставилось именно изучение самого Ангуляра 2, но за почти месяц я так к нему и не приступил. Потратил на изучение всего кроме самого виновника проекта. И это реально правда, что порог вхождения для разработчиков в эту тему ОГРОМНЫЙ. В отличии от А1 (извините, но буду сокращать дальше Angular 1 как A1 и Angular 2 как A2) который подгрузил на страницу из CDN и начал разработку, А2 требует серьезного понимания NodeJS, NPM, различных либ и сборщиков. Плюс сюда добавляем понимание процесса деплоя на SF.

Главная цель данного проекта:
- сделать мою работу с A2 проще и комфортнее
- собрать и реализовать в виде скриптов и компонентов мой предыдущий опыт.
- прокачаться в области Javasctipt (NodeJS)

Если проект кому еще понравится, буду только рад.

Монетизировать никак не планирую, цель прокачка и дальнейший самопиар

Итак детали проекта
(описание работы будет ниже)

Проект состоит из 3 подпроектов:

1. Project Template
Открытый проект на github - https://github.com/dmnBrest/ng2sfdc-project-template
Используется как основа при создании локального проекта.
Данный пустой проект будет содержать:
- предустановленные ангуляр2 учебные приложения:
-- Tour of Heroes (официальное учебное приложение по A2 - https://angular.io/docs/ts/latest/tutorial/)
-- Demo (мое учебное приложение, которое будет демонстрировать все возможности проекта и кастомных компонентов).
- A2-SLDS компоненты и сервисы которые я буду создавать в процессе изучения A2 и переносить то что есть из A1.

2. SFВС Managed Package "NG2"
Этот пакет будет содержать необходимую логику для обеспечения работы A2 приложений.
Он скроет кучу обслуживающего кода чтобы сократить разработку бэкенда до чистой бизнес логики и автоматизировать запуск самого приложения. Также в нем содержится спец логика для обеспечения работы локального прокси сервера.

3. Локальное приложение "NG2-SFDC Server"
Венец всего проекта который объединяет работу двух вышеупомянутых подпроектов.
Это GUI приложение на подобии глубоко уважаемого MavensMate.
Позволяет:
- создавать новые проекты (на базе вышеупомянутого Project Template)
- создавать внутри проекта новые A2 Application. В интернете вы найдете 99% информации о том что A2 должен быть в виде одного неделимого приложение навигация к котором осуществляется посредством Routing и lazy modules loading. В принципе если бы этого было достаточно, то я бы взял angular-cli и больше ничего не делал. В реальности существует необходимость в разработке независимых мини приложений в рамках одного проекта с общей бизнес логикой.
- компилировать и собирать приложение (build). Не забываем что A2 уже разрабатывается на Typescript, а браузеру нужен JS в виде одного файла (потом расскажу почему).
- автоматизировать сборку. Запускается наблюдатель (watcher) за проектом, который перекомпилирует проект при каждом сохранении.
- запустить локальный сервер (вот это моя любимая и сложнейшая часть). Ваше A2 приложение можно запускать локально и при этом оно будет работать с SF оргом так же прозрачно как внутри VF страницы (только запросы идут чуть дольше). Что это дает? Если запустить watcher, то перекомпиляция проекта занимает до 1 сек, а локальный сервер любезно перезапустит ваше A2 приложение в браузере. Это мега быстро и мега удобно по сравнению с распространенными решениями по деплою на SF.
- деплой на SF. После того как локальная разработка окончена, код собирается в package и деплоится в SF (ну тут ничего нового нет).

Делать все старался максимально гибко.

Так что в перспективе, если мой локальный сервер или managed mackage будут глючить или вызывать у кого-то стойкую неприязнь, то можно будет использовать Project Template с демо приложениями и A2-SLDS компонентами отдельно в сочетании с gulp и webpack. Но это уже будет обычное решение каких в интернете каждое первое.

А теперь куча скриншотов

А вот собственно как выглядит код на стороне SF

1. VF страница со спец. компонентом

2. Сервис с бизнес логикой

Работы по оптимизации и улучшательствам конечно еще звиздец сколько
По пока радует что первый рабочий вариант готов.

Сейчас конечно буду делать основной упор на изучение самого Angular 2, ну а данный тул мне в этом сильно поможет. В процессе пойму чего не хватает и что нужно изменить.

Вот такое небольшое интро и отчет о проделанной работе

PS. Сделал всю эту большую работу потому что месяц как уволился и решил посвятить это время себе. Но уже чувствую пора возвращаться к реальности и искать работу потому что кушать то хочется :(

Dmitry Shnyrev
Работы по оптимизации и улучшательствам конечно еще звиздец сколько
По пока радует что первый рабочий вариант готов. :(

Дима, проделал шикарную работу!
Я сам помешан на данной тематике, в ближайшее время буду тестировать твое детище!
Что по поводу контрибъюта, можно пилить PR?

Может создвать для данного тулза какую-то отдельную ветку для обсуждения? Например в том же Gitter?

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

Но пока случился небольшой перерыв - со свободным временем стало сильно сложно - появились новые коммерческие проекты с уже можно сказать "устаревшими" технологиями и любимый ангуляр2 ушел на второй план :(, ну и совсем уж косвенная причина заставила отложить проект - третью неделю болеем всем семейством сначала малые не давали расслабиться особенно по ночам, а сейчас уже у самого мозги в соплях плавают неделю и думать в таких условиях отказываются напрочь.

Надеюсь что это все временная проблема и скоро я опять вернусь в боевой ритм

смущает что все это написано на вымирающем visualforce, что насчет lightning?

Что написано на Visualforce?
Visualforce тут только страница-контейнер с 2-мя тэгами (играет роль пустой html страницы).
Сам же SPA может быть написан на любом JS фреймворке (Ангуляр1/2-х, Vue1/2 или любом другом)
Lightning сам по себе уже фреймворк. Ты не будешь писать на Vue и запускать это под Ангуляр?
Lightning поддерживает компонентную структуру или может показывать ту же VF страницу как iframe. Можно попробовать засунуть SPA в компонент, и раньше я бы сказал что это невозможно, но сейчас появился вроде специальный вид компонентов специально созданных чтобы засунуть внутрь свои SPA, но это еще только в планах (опять же пока сложно судить как будет осуществляться взаимодействие с самим Lightning или это будет вакуумная песочница).
В общем вопрос немного некорректный.

Про iframe можно вообще забыть, это костыль который можно поставить только временно. Lightning это не фреймворк, а технология которая включает в себя Lightning Component Framework.

Так как в A2 высокий порог входа, давайте создадим кучу кода чтобы этот порог преодолеть. Зачем все это если уже есть Lightning Component? Какой будет business impact?

Тот же Lightning это нативная технология Salesforce, интегрированная с Salesforce 1, AppExchange к тому же она постоянно развивается.

Если честно то пока я не понимаю в чем смысл, выглядит как очередное изобретение велосипеда.

billy
Тот же Lightning это нативная технология Salesforce, интегрированная с Salesforce 1, AppExchange к тому же она постоянно развивается.

А вы пробовали ее использовать в больших и сложных проектах?
Я вот больше не хочу!

Вопрос ведь не стоит хочу/не хочу. Вопрос стоит - как быстро можно сделать это на lightning или переделать visualforce в lightning.

billy
Lightning это не фреймворк, а технология которая включает в себя Lightning Component Framework.

Вот видишь, даже толком понятия нет устоявшегося. Я вот например постоянно слышу что надо что-то пилить на Lightning, а не на Lightning Component Framework. Кто что подразумевает пойди разберись.

billy
Так как в A2 высокий порог входа, давайте создадим кучу кода чтобы этот порог преодолеть. Зачем все это если уже есть Lightning Component?

Порог выше, но и выхлопа больше. На А2 реально писать большие проекты, на Lightning Component нет (по крайней мере у меня не получается). То что я постоянно пишу для фронтенда поднять на Lightning Component потребуется в 10 раз больше времени. К тому же решения на любом НЕ Lightning фреймворке являются универсаьлными и могут быть при желании запущены в любом окружении. SPA созданное с помощью Lightning Components можно запускать исключительно под Lightning. Отсюда выхлоп -

billy
Какой будет business impact?

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

billy
Тот же Lightning это нативная технология Salesforce, интегрированная с Salesforce 1, AppExchange к тому же она постоянно развивается.

А у нас вообще кто-нибудь использует Salesforce1? Особенно с кастомизациями? Ладно, там стандартными графиками поиграться, но разве под него адаптируют сложные SPA решения? Последний раз когда вставал вопрос про использования мобильной платформы - открестились от SF1 в пользу PhoneGap и радовались как дети!
А что AppExchange? Разработка приложения под AppExchange и разработка кастомных решений для бизнеса это разные задачи. Я работаю исключительно со вторым.

billy
Вопрос стоит - как быстро можно сделать это на lightning

В том то и дело что вопрос стоит уже непозволительно долго и никто не знает на него ответа!
Я уже не раз поднимал на форуме темы про Success Story под lightning.
Не спрорю видел примеры и достаточно удачные по разработке небольших компонентов, но это был не уровень реального SPA, так, пара инпутов и небольшая логика на них. А то и вообще одна кнопка кастомная А создавались сие чуды в поту и боли

Понимаешь в чем проблема.
Lightning красив, хорош (наверное), за ним стоит сам Salesforce.
Но у него не комьюнити, у него нет базы знаний. У него ничего нет кроме красивый обертки и документации.
(а если принимать во внимание слухи про то как это все внутри SF пилится, то вообще становится грустно).
Таких как Lightning Components Framework (сорри опять перепутал выше) сотни на github. И если многие из этих фреймворков сами завоевывают себе репутацию и уважение сообщества, то Lightning тупо пихается самим SF. Да блин, до недавнего времени его даже не поддерживали основные девелоперские тулы, нужно было писать в БРАУЗЕРЕ! И это 21 век?! И вот ЭТО вы хотите использовать?

Я для себя понял, что Lightning Components чисто для Lightning UI, когда например нужен quick action или небольшой компонент для Lightning layout, то есть что-то что будет встроено standard SF UI. Писать что-то сложное на нем требует очень много времени и не имеет никакого смысла, когда есть куча других, проверенных фреймворков для этого.

P.S.
Lightning вроде как реально поднять в другом окружении Lightning Out

По salesforce1 - если ты им не пользуешься, это не означает что никто им не пользуется. На прошлом дримфорсе я выпивал с разработчиком salesforce1, наш разговор начинался так-же - я спросил кто вообще пользуется salesforce1? Ответ был - то что по статистике это очень востребованнй инструмент и есть родмап на несколько лет по развитию.

По-поводу ligtnning я согласен что он не сильно приятный в работе, разработка в developer console и пр. Но для бизнеса это неважно, важно иметь галочку "lightning ready". Как по мне - меня устраивает visualforce и salesforce classic, но выглядит для новых заказчиков он как продукт из начала 2000ых, вот почему все и идет в этом направлении.

Я наверное старомоден - но мне гораздо проще работать с css фреймворком типа bootstrap и тем-же jquery, больше мне ничего не надо.

billy
Ответ был - то что по статистике это очень востребованнй инструмент и есть родмап на несколько лет по развитию.

Возможно по статистике он востребован как стандартный готовый продукт для домохозяек. А речь идет про написание кастомных решений. Он совершенно не поддается кастомизации. Был один проект которые хотел оптимизировать под него существующие VF страницы. Это было ужасно.

billy
Как по мне - меня устраивает visualforce и salesforce classic, но выглядит для новых заказчиков он как продукт из начала 2000ых, вот почему все и идет в этом направлении.

Так нет проблем - берешь SLDS и вуаля - стандартная VF страница привращается в Lightning - вот тебе и lightning ready (только под копотом крутится на нормальном движке).

billy
Я наверное старомоден - но мне гораздо проще работать с css фреймворком типа bootstrap и тем-же jquery, больше мне ничего не надо.

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

billy
Про iframe можно вообще забыть, это костыль который можно поставить только временно.

Скажи это разработчикам Salesforce Console & Salesforce Lightning Experience :)

Maxim Elets
Скажи это разработчикам Salesforce Console & Salesforce Lightning Experience :)

Ты что! Разрабы из SF боги! Они не могут плохого написать

уж поверь мне - на месте не сижу, просто не вижу никакой выводы (простота и время) в том, чтобы реализовывать это на angular. С таким же успехом можно сказать про тебя и lightning.

Dmitry Shnyrev
Это не старомодность. Это лень пробовать новые технологии. Я тоже когда-то бил себя пяткой в грудь что jQuery и больше ничего не надо. Однако, один раз попробовал и понял что jQuery это не просто прошлый век, а позапрошлый.

billy
С таким же успехом можно сказать про тебя и lightning.

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

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

Вообще я не говорил что он бесполезен или то что он плох, вот моя цитата

просто не вижу никакой выводы (простота и время) в том, чтобы реализовывать это на angular.

но в salesforce я бы его не тянул, он отлично подойдет для приложений на heroku и пр.

Dmitry Shnyrev
Ну хорошо, сколько ты уже реализовал приложений на ангуляр чтобы говорить что он бесполезен?
Я уже на Lightning сделал несколько и на ангуляре дохрена. Я не просто так беру выводы с потолка. Все чисто из практики.

Я понял
Скажу так. В те проекты куда пришел ангуляр культура разработки улучшилась в разы.
Страницы стали на голову сложнее а скорость их разработки уменьшилась.
Еще ни разу не слышал ни от клиентов ни от разработчиков что решение принятое в пользу ангуляра было неверным.
Сейчас уже практически во всех командах которые я знаю ангуляр 1 стал минимальными стандартом. Но многие не стоят на месте и уже внедряют Ангуляр2/React/Vue. И никто не заикается о том чтобы вернуться обратно на VF+JQuery.

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

А на счет специалистов - я думаю на рынке спецов по ангуляру на порядок больше чем спецов по Visualforce. Плюс ангуляра - можно спокойно привлекать специалистов и целые комманды фронтенд разработчиков которые понятия не имеют о SF.

Интересная информация? Помогите сайту, разместите ссылку в социальных сетях..