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.
Kontynuujemy od miejsca, w którym skończyliśmy w poprzedniej lekcji.
Jesteśmy na stronie dashboard.
Tą stronę pozostawimy na chwilę obecną w takiej formie.
Nie będziemy tutaj nic więcej zmieniać, ponieważ jej budową, czyli budową pełnej
aplikacji zajmiemy się dopiero w kursie praktycznym.
Wróćmy więc do strony
autentyfikacji.
Przejdźmy do podglądu i zastanówmy się teraz w jaki sposób dać
naszym użytkownikom możliwość logowania się do naszej strony, czyli naszej
aplikacji po tym jak już utworzą tutaj konto.
Zerknijmy więc jak rozwiązaliśmy to w projekcie wzorcowym.
Jeżeli teraz klikne przycisk sign in,
to zostanę jak się domyślasz przekierowany do strony logowania.
Jak widzisz różnice pomiędzy tymi stronami są minimalne.
Tak naprawdę mamy to tylko nieco inne teksty na przyciskach.
W tym miejscu, na tym przycisku oraz w tej
części, dodatkowo na stronie logowania nie wyświetlamy pola full name,
jest ono nam niepotrzebne.
Do zalogowania użytkownika wystarczy tylko e-mail oraz jego hasło.
W jaki więc sposób osiągnąć efekt, o który nam chodzi?
Otóż mamy w tej kwestii dwa wyjścia.
Możemy przygotować dwie osobne strony,
czyli osobno stronę z logowaniem i osobno stronę z rejestracją.
W zależności od tego, który przycisk użytkownik kliknie na
stronie, czyli jeżeli kliknie w przycisk sign in, to przekieruje go na stronę logowania.
Natomiast jeżeli klikniesz przycisk sign up, get started lub to przycisk w sekcji
pricing zostanie przekierowany na stronę rejestracji.
Jest to oczywiście jak najbardziej poprawne rozwiązanie.
Ja natomiast chciałbym Ci zaproponować nieco inne wyjście.
Otóż jak wiesz, ponieważ te strony
różnią się od siebie w zasadzie tylko drobnymi szczegółami,
my wykorzystamy tutaj tylko i wyłącznie jedną stronę.
Ale w jaki sposób sprawić, aby wyświetlała
ona tylko te informacje, których akurat potrzebujemy?
Otóż w tym celu wykorzystamy tzw.
custom states.
Jeżeli korzystałeś z framework'ów takich
jak np. React, to pojęcie custom states jest już Ci doskonale znane.
Jeżeli nie, to już Ci tłumaczę na czym to polega.
Otóż custom states to dynamiczne wartości
przypisane do elementu, przechowywane w przeglądarce użytkownika.
Takie wartości możemy odczytywać, możemy je aktualizować bądź zerować.
A ponieważ egzystują one tylko w przeglądarce użytkownika,
to będą przypisane po pierwsze tylko i wyłącznie do niego,
a po drugie zostaną utracone, czyli przywrócone do wartości domyślnych
za każdym razem, kiedy użytkownik przeładuje stronę lub ją zamknie.
Ja wiem, że takie wyjaśnienie może na chwilę obecną niewiele Ci mówi,
ale nie przejmuj się, zaraz zademonstruje Ci w praktyce jak to działa.
W tym celu wróćmy do edytora
i utwórzmy custom states dla naszej strony autentyfikacji.
Aby dodać custom states przechodzę do danego elementu.
W moim przypadku będzie to po prostu cała strona.
Klikam tutaj w ikonkę i.
I w tym miejscu mogę zdefiniować nowy custom state.
Klikam więc add a new custom state.
W pierwszej kolejności muszę zdefiniować nazwy.
W moim przypadku będzie to nazwa view, czyli widok.
Ponieważ nasz custom state dotyczy widoku jaki chcemy wyświetlać na stronie autentyfikacji,
czyli albo będzie to widok logowania albo widok rejestracji.
Kolejno wskazujemy tutaj typ takiego state'u.
Jeżeli kliknę w tym miejscu jak widzisz mam całą listę dostępnych opcji.
O nich porozmawiamy sobie bardzo dokładnie w kursie praktycznym.
My natomiast skorzystamy tutaj z tej opcji text.
Proszę wybierz ją
w tym miejscu, czyli jako pierwszy element z listy, klikamy create
i nasz custom state został już utworzony i dodany do danego elementu, czyli w naszym
przypadku do całej strony czy elementu page.
Kolejno musimy zdefiniować czy taki custom
state ma posiadać domyślną wartość, czy ma być pusty.
Definiujemy ją w tym miejscu.
Tu mamy default value.
Ponieważ przekazaliśmy to jako typ text
to możemy w tym miejscu pisać tylko i wyłącznie,
jak się domyślasz sam tekst, w moim przypadku
chcę, żeby taka default value była równa login.
Dlaczego akurat taka, to porozmawiamy sobie nieco później.
Na chwilę obecną po prostu zdefiniuje ją tutaj o takiej wartości.
Zamykamy to i teraz możemy przystąpić do pracy.
Skoro nasz custom state jest już zdefiniowany,
to to co możemy zrobić teraz to odnieść się do niego tutaj w sekcji conditional.
Przejdźmy więc do zdefiniowania nowego warunku.
Jak już doskonale wiesz, w tym miejscu
możemy odnosić się zarówno do elementu, w którym teraz jesteśmy, czyli po prostu
do tego tekstu możemy się też odnosić do innych elementów.
O tym z resztą już wcześniej mówiłem, kiedy pokazywałem Ci, że po najechaniu na
przycisk możemy zmienić np. kolor karty, ale dodatkowo zakładka
conditional pozwoli nam również odnieść się do state'u danego elementu.
W tym celu muszę tutaj wskazać
authentication, czyli po prostu całą naszą stronę.
I kolejno jak widzisz tutaj mam utworzony custom states, czyli view.
I teraz muszę wskazać określony warunek.
Ja chcę powiedzieć, że jeżeli ten custom state jest równy i tutaj muszę
wpisać wartość tekstową, ponieważ taką ustawiliśmy, czyli jak się domyślasz login.
To teraz chcę tutaj zdefiniować jakąś określoną właściwość.
A więc jeżeli authentication view
is login, to tym razem mogę się odnieść tutaj do wartości text.
I w tym polu zmienić po prostu tekst, który będziecie wyświetlał na tym przycisku.
W moim przypadku jedyna zmiana to będzie sign up zamienione na sign in.
I to w zasadzie wszystko.
Tutaj na chwilę obecną nie widzimy żadnych
zmian, ale zobaczę co się stanie, jeżeli przejdziemy do podglądu naszej strony.
Tak zmienił się na sign in mój Google.
Dlaczego tak się stało?
Otóż jak doskonale zdajesz sobie sprawę.
Wybraliśmy tutaj customs state
i ustawiliśmy wartość domyślną równą login, a więc przy załadowaniu naszej
strony właśnie taka wartość zostanie przypisana do całego tego custom state'u,
i dzięki czemu ten warunek będzie miał tutaj zastosowanie.
Jeżeli teraz usunął bym tylko wartość domyślną.
Wrócił do podglądu i przeładował naszą
stronę, to znów wrócimy do poprzedniego tekstu.
Dlaczego?
Ponieważ oczywiście
strona po załadowaniu sprawdza sobie po kolei wszystkie warunki, a więc w
pierwszej kolejności wygeneruje nam tekst, który mamy tutaj, a następnie przejdzie do
zakładki conditional i sprawdzi, czy ten warunek tutaj ma miejsce.
W naszym przypadku authentication view
nie jest równe login, ponieważ go wyzerowaliśmy.
Ten warunek się nie spełni, a więc treść nie zostanie zmieniona.
Mam nadzieję, że teraz rozumiesz już jak to działa i w jaki sposób
poprzez zakładkę conditional możemy się odnosić do state'u danych elementów.
Przywróćmy więc te
domyślne, czyli przechodzę do całego
page'a, klikam ikonkę i, i jako default value ustawiam login.
To co musimy teraz zrobić to zadbać
oczywiście o te teksty, o te pola i całą tą resztę.
Przejdźmy więc po kolei.
Zaznaczam ten tekst.
Znów definiuję nowy kwarunek, odnoszę się
do całej naszej strony, kolejno do custom state o nazwię view
i mówię, że ma być równy login.
Jak się domyślasz znów właściwość, którą będziemy zmieniać.
To oczywiście tekst.
I standardowo zamiast sign up będzie sign in.
O tym, jak ukrywać elementy też już rozmawialiśmy wcześniej.
Przejdźmy sobie do drzewka elementów.
Zaznaczmy całą tą grupę fullname-wrapper
i oczywiście zdefiniujmy warunek, czyli cała nasza strona.
Custom state ma być równy login.
Jeżeli tak się stanie, to oczywiście nie chcemy pokazywać takiego elementu, czyli
this element is visible i nie zaznaczamy tego checkbox'a.
Przy okazji musimy zadbać tutaj o jego odpowiednie ukrywanie,
czyli collapse when hidden. Te pola tutaj pozostają bez zmian.
Oczywiście musimy zmienić tekst na tym przycisku.
Znów zakładka conditional, znów cała nasza strona.
Custom state równy login.
Jeżeli taki warunek będzie spełniony to oczywiście zmieniamy tekst na sign in.
Możemy sobie skopiować ten warunek.
Przejść tutaj do tego tekstu, wkleić go w to miejsce i skopiujmy sobie wartość,
która się tutaj pojawia na stronie logowania.
Wklejam w to miejsce.
Pozostaje mi jeszcze zmiana tutaj.
Wklejam warunek jeżeli view jest równe login to ja chcę tu wyświetlić tekst register.
Przejdźmy do podglądu i zerknijmy, czy rzeczywiście wszystko się zgadza.
Teksty na przyciskach są prawidłowe.
W tym miejscu też.
Tutaj dodatkowo ukryliśmy to niepotrzebne pole.
Tutaj wszystko jest w porządku.
Zerknijmy jeszcze tutaj na ten odstęp wydaje mi się jakiś taki bardzo duży.
Dlaczego tak się dzieje?
Zaraz sprawdzimy.
Aha, już wiem.
Ustawiliśmy margines
tutaj, więc go w tym miejscu wyzerujmy.
Dodajmy go tutaj po prostu na całą grupę
fullname-wrapper.
Teraz jeżeli ją ukryjemy, to po prostu ukryjemy również ten margines,
który ona tutaj dawała, ponieważ kolejna pod nią również ma 40 pixeli
od góry, to teraz wszystko będzie wyglądało już tak jak trzeba,
nie będziemy mieć tutaj takiego dużego odstępu.
Przejdźmy do podglądu.
No jak widzisz teraz nasza strona logowania wygląda już tak jak powinna.
A my w kolejnej lekcji skupimy się na tym,
w jaki sposób możemy zmieniać wartość custom state.