od Podstaw
6 godz. 34 min · Bubble · Full-stack i Programowanie
Krzysiek PiekarzAutomation Specialist / No-code DeveloperZapomnij o ręcznym pisaniu kodu i żmudnym tworzeniu stron www lub aplikacji! Wykorzystując przejrzysty edytor Bubble będziemy w stanie rozpocząć naszą pracę od czystej kartki i wyklikać cały układ bezpośrednio w interfejsie. Dodatkowo pokażę Ci w jaki sposób można wdrożyć do projektu w pełni funkcjonalną logikę obsługi użytkowników nawet wtedy, gdy nie posiadasz żadnej wiedzy programistycznej. A to wszystko w niemal ekspresowym tempie i bez zbędnych konfiguracji, które bywają zmorą programistów.
Edytor zapewnia spójny i intuicyjny interfejs, dzięki któremu stworzenie nawet skomplikowanej aplikacji staje się wyjątkowo proste. Dodatkowo wbudowana baza danych sprawia, że nie musimy korzystać z żadnych zewnętrznych rozwiązań a zarządzanie nią jest na tyle intuicyjne, że poradzi sobie z tym nawet niedoświadczony użytkownik. Kolejną zaletą jest dostęp do ogromnej biblioteki pluginów, dzięki którym będziemy mogli wzbogacić naszą aplikację o obsługę płatności, analitykę, SEO i wiele więcej.
Niemal wszystko, z wykorzystaniem Bubble bezproblemowo stworzymy klony takich serwisów jak: Twitter, Asana, Todoist, AirBnB, Trip Advisor lub Yelp. Edytor pozwala stworzyć w pełni funkcjonalną aplikację w ciągu nawet kilku dni! Dzięki temu nie będziemy musieli przepalać naszego budżetu na zewnętrzne software house, którym wdrożenie podobnych rozwiązań może zająć tygodnie pracy.
W tym kursie skupimy się na podstawach pracy z edytorem, tak aby korzystanie z niego stało się dla Ciebie naturalne. Wykorzystamy w praktyce zakładkę Design, która jest odpowiedzialna za front-end naszej strony oraz zapoznamy się z działaniem workflows, które "tchną życie" w nasz projekt. Efektem naszej pracy będzie nowoczesny landing page oraz w pełni funkcjonalna strona logowania/rejestracji. Dodatkowo zadbamy również o to, by całość była w pełni responsywna i dobrze prezentowała się zarówno na ekranach desktopowych, jak i urządzeniach mobilnych.
Jedną z zalet edytora Bubble jest to, że nie stanowi on hermetycznego środowiska, w którym jesteśmy skazani na korzystanie jedynie z rozwiązań zaprojektowanych przez jego twórców. To niesamowicie funkcjonalna platforma, którą w prosty sposób możemy połączyć również z zewnętrznymi usługami wykorzystując gotowe pluginy. Pokażę Ci w jaki sposób możemy zaimplementować do naszego projektu opcję logowania i rejestracji z wykorzystaniem Google, tak, aby użytkownik mógł utworzyć konto w naszym serwisie za pomocą jednego kliknięcia. A kolejnym bonusem będzie przesyłanie adresów e-mail z formularza zapisu na newsletter bezpośrednio do bazy w Airtable!
Ten kurs powstał z myślą o osobach, które chcą poznać edytor Bubble i nowy kierunek rozwoju aplikacji no-code. Będzie również doskonałym punktem startowym dla tych wszystkich, którzy nie posiadają żadnej wiedzy programistycznej ale nadal chcą tworzyć w pełni funkcjonalne serwisy i strony internetowe. Poziom kursu został dopasowany zarówno do osób, które do tej pory nie korzystały z Bubble, jak i tych, którzy posiadają już przynajmniej podstawowe doświadczenie w tym zakresie. Dzięki zdobytej w nim wiedzy będziesz mógł postawić pierwszy krok na drodze, która pozwoli Ci przekuć Twój pomysł w działający startup.
W poprzedniej lekcji wyjaśniliśmy sobie czym
są custom states, jakie definiować dla danych elementów oraz jak dzięki nim
wpływać na elementy z wykorzystaniem zakładki conditional.
Natomiast w tej lekcji chciałbym się skupić na tym, w jaki sposób możemy
dynamicznie zmieniać wartości przypisane do custom states.
Zanim jednak do tego przejdziemy,
zastanówmy się w jaki sposób my u nas chcemy zmienić na stronie te wartości.
Przede wszystkim jeżeli wrócę tutaj do projektu wzorcowego,
to chcę zmieniać wartość custom states w zależności od tego jaki przycisk kliknie
użytkownik, czyli ustawić go na wartość logowania albo na wartość rejestracji
w zależności, który ten przycisk tutaj zostanie kliknięty.
Dodatkowo jeżeli przejdę na samą stronę.
To chcę custom states zmieniać również z tego miejsca.
Teraz jestem w widoku logowania, jeżeli
kliknę tutaj na register, to states został odpowiednio zaktualizowany
i tym razem wyświetlamy tutaj formularz rejestracji.
Skoro już wiemy co mamy robić, to przejdźmy do edytora.
Przystąpimy do działania.
My w pierwszej kolejności skupimy się na
tej części, czyli będziemy zmieniać custom states.
Po kliknięciu tutaj w ten tekst.
Wróćmy więc do edytora.
Skoro w tym przypadku mamy do czynienia z jakąś akcją, którą będzie kliknięcie w
ten tekst, a ona z kolei, aby wywołać jakąś reakcję, czyli zmianę custom state
to jak się domyślasz, będziemy musieli wykorzystać tutaj workflow.
Natomiast zanim przejdziemy do jego
zdefiniowania, zastanówmy się nad tym, jaką wartość będziemy tam chcieli ustawić.
Przeanalizujmy więc, jak na chwilę obecną to wszystko u nas działa.
Jak już Ci mówiłem wcześniej, przy
załadowaniu strony domyślnie ładowane są te wszystkie wartości, które tutaj
ustawiliśmy, a zakładka conditional zadziała nam tylko i
wyłącznie wtedy, kiedy ten custom state tutaj dla view, będzie równy wartości login.
Jeżeli będzie tam jakakolwiek inna wartość np.
pusta, pokazywałem Ci to, kiedy tutaj zyzerowaliśmy sobie to default value.
Jeżeli nie przekazaliśmy tutaj żadnej wartości, to oczywiście ten warunek tutaj
nam się nie spełnił ani na tym, ani na tym elemencie, ani na żadnym innym.
Dla którego go ustaliliśmy i wtedy oczywiście ładowała nam się strona z rejestracją.
Natomiast co by się stało, gdybym tutaj przekazał cokolwiek innego niż login?
Np. zamiast pustej wartości wpisał tutaj register?
To jak się pewnie już domyślasz,
znów zastosowanie będą miały te domyślne wartości.
Warunek nam się nie wykona to register nie jest równe login, a więc
wyświetlają nam się te wszystkie treści, to pole będzie widoczne itd.
Oczywiście możemy to sobie jeszcze sprawdzić.
Odświeżam stronę.
Jak widzisz wyświetla się poprawnie formularz rejestracji.
Tak więc nasz custome state możemy w tym przypadku chyba zmienić po prostu na pustą
wartość albo wpisać tam cokolwiek innego jak np.
ja teraz zrobiłem to wpisując tutaj wartość register.
Efekt będzie taki sam.
Przywróćmy więc tutaj tą domyślną,
login i teraz odpowiednio zdefiniujmy sobie custom state.
W tym celu oczywiście zaznaczam ten tekst.
Wybieram start edit workflow.
I z listy gotowych operacji.
Przechodzę do sekcji element actions.
Wybieram set state.
Muszę wskazać element, który taki state
posiada, u nas oczywiście jest to strona autentykacji.
Wybieram custom state.
U nas mamy tylko jeden, czyli jest to view
i przekazuję tutaj wartość jaką chcę ustawić.
Po prostu ustawię sobie na register.
Sprawdźmy teraz, czy to rzeczywiście zadziała.
Jak pamiętasz, przywróciliśmy tutaj
custom state
na wartość login, a więc po odświeżeniu strony ta powinna mieć zastosowanie.
Sprawdzamy.
Wszystko jest tak jak trzeba.
Wyświetla nam się formularz logowania, klikamy w tekst.
Custom state się zmienił odpowiednio i teraz mamy formularz rejestracji.
Natomiast co się stanie, jeżeli ponownie kliknę w ten tekst?
To jak się domyślasz znowu wykonamy to samo workflow.
Znowu zmieniliśmy ten stan na register, ale ponieważ był już tutaj wcześniej
ustawiony register, to nic się w zasadzie nie stało.
W jaki więc sposób teraz uzyskać tą opcję toggle?
A więc jeżeli klikamy tutaj na ten tekst mając wyświetlony formularz
logowania to chcemy zmienić state tak aby wyświetlać formularz rejestracji.
I oczywiście tą samą operację chcemy wykonać na odwrót.
Czyli jeżeli mamy wyświetlony formularz
rejestracji to chcemy custom state zmienić z powrotem
na login.
Wracamy do edytora.
Kolejno wracamy do zakładki workflow
i teraz zastanówmy się w jaki sposób osiągnąć efekt na jakim nam zależy.
Otóż w obu przypadkach trigger będzie dokładnie ten sam.
Będzie to po prostu ten sam tekst.
Natomiast my w momencie kliknięcia w taki tekst chcemy sprawdzić, jaka jest aktualna
wartość custom state ustawionego dla naszej całej strony.
Jak więc to zdefiniować?
Wystarczy, że zaznaczę tutaj nasz trigger,
przejdę do sekcji only when i tutaj zdefiniuje określony warunek.
W tym przypadku chcę powiedzieć, że jeżeli
state o nazwie view dla elementu authentication, jest równy login.
To, co chcemy zrobić?
Chcemy wtedy wykonać tą operację, czyli zamienić go na register.
Natomiast w jaki sposób osiągnąć efekt odwrotny?
Otóż bardzo prosto. Wystarczy, że skopiuję sobie.
Cały ten workflow czyli klikam tutaj prawym przyciskiem myszy,
wybieram copy, klikam w to miejsce i klikam paste.
Na chwilę obecną mamy dokładnie dwa identyczne workflow.
Rozróżnimy więc je sobie można kolorami.
Powiedzmy, że ten będzie tutaj niebieski, a ten z kolei powiedzmy, że zielony.
I teraz zastanówmy się jak osiągnąć właśnie ten drugi efekt.
Tutaj, jeżeli view jest równe login.
Chcemy to zmienić na register.
Natomiast w tym przypadku
chcę powiedzieć, że jeżeli custom state o nazwie view nie jest równy login, czyli
może być jakakolwiek inna wartość albo wartość pusta, albo text register albo
cokolwiek innego, to wtedy chcę przywrócić ją i ustawić na login.
Czyli tutaj zamiast is wybieramy is not,
a tu z kolei w samej operacji zamiast register wpisuje login.
W ten sposób mamy jeden element, który odpala nam dwa różne workflow w
zależności od tego, który z tych warunków zostanie spełniony.
Przejdźmy więc do podglądu.
Odśwież naszą stronę.
Na chwilę obecną mamy ustawione custom state na wartościach login.
Wyświetla nam się formularz logowania.
Klikamy tutaj.
Zmienia nam się to teraz na register, więc jeżeli kliknę tutaj
ponownie w nasz tekst to jak się domyślasz tym razem custom states zostanie zmieniony
na wartość loginu, w ten sposób definiując tutaj workflows,
możemy ograniczyć ich działanie w
zależności od tego, który z tych warunków zostanie spełniony.
Za trigger służy nam dokładnie ten sam element,
natomiast jeżeli spełni się ten warunek, to wykonają się tylko te operacje.
Natomiast jeżeli spełni się ten, to
oczywiście cała ta seria tutaj zdefiniowana.
A skoro tą część pracy mamy już za sobą,
to w kolejnej lekcji zastanowimy się w jaki sposób zmieniać workflow w zależności
od tego, w który przycisk kliknął użytkownik na naszej stronie indeksowej.