But that also means I would have to put the business logic in the
front end, in the Angular2 web app, right?
Sì. Fondamentalmente la tua Angular 2 SPA è l'intera app da sola. Senza un'app lato server, la business (logica) dovrebbe essere collocata da qualche altra parte. In questo caso nella SPA.
Firebase è stato disgustato per permettere agli sviluppatori di app di creare app senza doversi preoccupare dell'infrastruttura di back-end (app server, server http, TLS, RDMS, ecc.
Firebase non esclude necessariamente i backend ma per quelle app che utilizzano backend come mere repository (CRUD). Tuttavia, fornisce Funzioni cloud per le procedure lato server. Quindi potresti ancora implementare alcune logiche di business sul lato server.
So if I some day in the future would like to make a mobile app front
end, I would have to duplicate the business logic code?
Non necessariamente. Se la tua app Web è costruita in Angular 2, piattaforme incrociate come Native Script potrebbero permetterti di riutilizzare componenti web, librerie, utility, modelli di dati , ecc. Non ho approfondito l'argomento, quindi non posso assicurarti una compatibilità totale.
La chiave qui è TypeScript , sia Angular che NativeScript ci richiedono di codificare in TS.
Il problema è quindi dove ospitare il codice Javascript compilato e il controllo delle versioni. Una parola CDN .
I guess the alternative would be to create a backend that contains the
business logic and uses Firebase for its data storage, but that seems
a bit weird (couldn't I just use an ORM or something directly in my
backend to achieve the same result without a lot more work?)
Avere qui un back-end potrebbe essere utile per un singolo motivo e molto semplice. Disaccoppiamento. Le tue app sarebbero legate a una singola interfaccia web. Se il tuo SPA sta per consumare diverse API REST, avere una singola interfaccia web (facciata) "governandoli tutti" renderà il modo SPA più semplice. Ma non mentirò, sposteremo semplicemente la complessità da un lato (client) a un altro (server).
Tuttavia, se la tua app non è un mashup non trarrai vantaggio da tale astrazione.
How do people usually structure these kinds of apps, if they want to
make use of Firebase for example?
Varia molto tra i progetti. Ad esempio, utilizziamo Firebase + backend.
-
DB Firebase per condividere i dati tra le sessioni e i dispositivi dell'account e come registro delle modifiche quando il nostro back-end è temporaneamente non disponibile.
-
I messaggi cloud di Firebase forniscono notifiche push e argomenti di upstream / downstream, quindi utilizziamo il servizio come broker di pubblicazione / sottotitoli.