Construire / Stilizare Front-end

circle-info

Interfața aplicației poate fi construită cu orice tehnologie cunoașteți (ReactJS, Angular, Vue, chiar plain HTML). For the sake of example și pentru a nu ne pierde în detalii, în această secțiune voi folosi componente vizuale preluate din surse publice (librării de componente deja stilizate cu ajutorul TailwindCSS) și le voi modifica sumar. În înregistrarile video voi descrie procesul de dezvoltare într-un mod mai detaliat.

1. Definirea scopului aplicației

Vom crea o aplicație web care va trimite mail-uri care conțin mesaje traduse în una sau mai multe limbi straine. De asemenea, aplicația va stoca mesajele inițiale și le va afișa într-o listă.

Mesajele sunt stocate într-o baza de date în Cloud gestionată de Google Cloud Platform, mesajele sunt traduse din back-end cu ajutorul serviciului Cloud Translation API, iar mail-urile sunt trimise cu prin intermediului serviciului cloud pus la dispoziție de Sendgrid.

2. Definirea componentelor React principale

Pentru a păstra aplicația cât mai simplă, aceasta va avea doar 3 componente principale: o componenta pentru Antet (Header.jsx), o componenta care gestionează afișare listei de mesaje (MessagesList.jsx) și o componentă care gestionează trimiterea de mesaje (MessagesSubmit.jsx)

  • ÃŽn folderul "components" vom crea 3 fiÈ™iere .jsx pentru cele 3 componente

2.1. Header.jsx

  • Creăm un Antet simplu (Header.jsx)

2.2. MessagesList.jsx

  • Creăm componenta MessagesList.jsx cu date hardcoded în constanta "messages"

  • Observăm că folosim o componentă importată din pachetul "heroicons/react" (UserIcon). AÈ™adar, npm install @heroicons/react

  • Mesajele pe care ne dorim să le afișăm sunt stocate într-o bază de date externă È™i le putem accesa prin intermediul Back-end-ului. Pentru a putea actualiza interfaÈ›a aplicaÈ›iei în momentul sosirii datelor, vom folosi funcÈ›iile useEffect È™i useState puse la dispoziÈ›ie de React Hooks.

  • Astfel, în interiorul componentei MessagesList() definim un state È™i îl modificăm cu datele cerute la momentul creării componentei de către browser.

  • Observăm că am stocat calea către serverul Back-end în fisierul .env

circle-info

În momentul publicării aplicațiilor (Front și Back), calea către serverul back-end se va schimba. Având în vedere că fișierul .env nu este urmărit de git, vom putea cu ușurință să specificăm noua cale creând un fișier env personalizat pentru aplicația aflată în producție.

triangle-exclamation
  • Codul complet al componentei MessagesList.jsx

2.3. MessagesSubmit.jsx

  • Componenta MessagesSubmit.jsx constă într-un formular È™i mai multe butoane care vor trimite câte un apel către Back-end pentru a traduce mesajul introdus È™i a trimite un mail.

  • Limbile disponibile le-am stocat într-un array în fiÈ™ierul de constante. De asemenea, am stocat adresa de pe care se vor trimite mail-urile tot în fiÈ™ierul de constante

circle-exclamation
circle-info

Pentru ușurință, limbile introduse în LANGUAGES_ARRAY au același format cu cele cerute de Back-end Translate API

  • Codul complet al componentei MessagesSubmit.jsx

2.4. Wrapping up in MainPage.jsx

Acum că avem cele 3 componente principale, le putem atașa în MainPage.jsx cu un minim de stilizare

3. Rezultat

circle-info

După ce am introdus un nume, un mail și un mesaj, putem apăsa pe unul dintre butoanele de trimitere pentru a expedia un mail. Date despre mesajul original vor apărea în lista din stânga după un refresh, iar mesajul tradus va apărea printr-un window alert. (pentru a păstra exemplele cât mai simple și compacte)

Suntem acum pregătiți să publicăm aplicațiile

Last updated