Costruire un'applicazione web che è quasi completamente renderizzata da Javascript, mentre il back-end fornisce solo Json. Fare o no?

7

Come programmatore, e tenendo conto della "funness" complessiva del processo, sono tentato di avviare un progetto in Sinatra, in cui l'unica preoccupazione del back-end è la logica, e la restituzione di un'API JSON, e quindi la scrittura di un applicazione javascript che interagirebbe con quell'API per rendere il contenuto reale all'utente.

Sono abbastanza nuovo nella programmazione e non ho mai fatto nulla di simile in remoto prima d'ora. Quali sarebbero le insidie, i vantaggi e gli svantaggi di separare completamente la logica dalla presentazione in questo modo? Qualche esempio di questo fatto in natura?

Una delle preoccupazioni principali è come i motori di ricerca rispondono a un sito il cui contenuto è quasi interamente servito da Json ...

    
posta o_o_o-- 18.06.2013 - 00:25
fonte

4 risposte

5

La maggior parte delle app Web che ho scritto per la mia azienda funzionano in questo modo: un'applicazione singola basata su javascript che effettua chiamate ajax a un servizio di back-end.

Quindi, quando ho avviato il mio sito web , la mia prima implementazione è stata fatta allo stesso modo. Tuttavia, più della metà dello sviluppo, mi sono reso conto che ho fatto un grosso errore.

Il mio sito web offre contenuti ai miei utenti e questi contenuti devono essere disponibili tramite i motori di ricerca. Devo anche monetizzare il mio sito web tramite annunci. Il problema è che entrambi questi requisiti dipendono dal contenuto statico disponibile dal sito web .

Il contenuto statico è necessario per indicizzare le parole chiave per la ricerca e per visualizzare annunci pertinenti. Queste parole chiave vengono recuperate dal testo trovato nell'HTML sottostante. Se il tuo contenuto viene recuperato da una fonte remota e visualizzato tramite javascript, è probabile che il codice HTML sottostante sia per lo più vuoto.

Poiché offrono un'esperienza ricca di client, le pagine dinamiche sono ideali per le applicazioni basate sul Web. Tuttavia, se intendi pubblicare contenuti, è meglio evitare le pagine dinamiche.

    
risposta data 18.06.2013 - 09:59
fonte
3

Con tutti i mezzi, vale la pena provarlo, ma sappi che la curva di apprendimento può essere un po 'ripida a volte (Javascript è un linguaggio facile da odiare). Le web app di Javascript hanno alcune caratteristiche davvero interessanti. Ad esempio, puoi trasferire la tua app su vari dispositivi mobili come app native avvolgendo l'applicazione con PhoneGap.

Ci sono una manciata di opzioni per quanto riguarda i framework. Ho letto questo articolo per ottenere una panoramica di alto livello di alcune delle opzioni più popolari: link

Per quanto riguarda la capacità di scansione del motore di ricerca, penso (anche se non ne sono al 100%) che puoi eseguire la scansione di alcune delle diverse "pagine" della tua app utilizzando quello che viene definito un "router" (che potrebbe essere comunque, e potrei sbagliarmi, penso che sia così.) Puoi sicuramente usare il "router" di Backbone per rendere le diverse "pagine" segnalabili e collegabili, quindi ha senso che siano anche individuabili.

    
risposta data 18.06.2013 - 10:42
fonte
2

Provalo. Ho fatto alcuni progetti (principalmente con angular e web api), ed è stata una buona esperienza nel complesso.

Vantaggi: hai un'esperienza utente molto fluida e puoi creare facilmente app a pagina singola; avere una netta separazione tra business e UI; puoi utilizzare il servizio web per diverse app (ad es. per alimentare un'app mobile, ecc. - i dati sono dati, puoi riutilizzarli).

Svantaggi - probabilmente finirai con più chiamate al server, a meno che non combinerai più chiamate in un blocco (ad esempio per estrarre dati per 5 diversi elenchi a discesa in una singola chiamata). Può anche essere un po 'più lento da caricare - prima si carica una pagina vuota con JS, e poi si fanno chiamate ai servizi web - questo ovviamente richiede più tempo di una semplice pagina. Generalmente non un po 'di differenza.

Il SEO può essere un problema, sì. Immagino che tu possa servire una semplice pagina statica per i robot, se hai bisogno di indicizzare i tuoi dati.

    
risposta data 18.06.2013 - 01:00
fonte
1

L'approccio migliore sarebbe quello di avere un framework, cms o simili in cui si memorizzano e si accede allo stesso contenuto sia con ajax che con l'intero caricamento della pagina. Avvia la stessa funzione quando vai nella prima pagina del sito e naviga in javascript da davanti.

Usando in modo intelligente .pushState () , sovrascrivendo onclick attraverso jQuery sui collegamenti, puoi avere un sito che ha i collegamenti giusti, ma spesso usa ajax per caricare nuove pagine. Il fallback nel caso in cui lo stato push non è supportato è anche lì; l'utente semplice naviga verso la pagina invece di jQuery e ajax sovrascrivendo l'effetto onclick .

Questo approccio sarà anche apprezzato dalla SEO poiché può navigare liberamente anche nei tuoi contenuti. Per citare un esempio, considera la mia galleria personale . Puoi passare all'immagine precedente premendo sul lato sinistro dell'immagine. Ciò eseguirà un .pushState() e caricherà il contenuto tramite ajax. Comunque puoi prendere la "nuova" pagina, collegarla a me e mi dà l'immagine precedente. Anche SEO vede solo il link corretto e non deve preoccuparsi di Ajax e così.

    
risposta data 18.06.2013 - 10:46
fonte

Leggi altre domande sui tag