Strategia per il ripristino dello stato tramite URL nelle app Web

7

Questa è una domanda riguardante le moderne app Web, in cui viene caricata una singola pagina e tutte le successive operazioni di navigazione vengono effettuate tramite chiamate XHR e modifica del DOM.

Possiamo utilizzare librerie che manipolano l'hash stringa, che ci consente di navigare per URL e supporta i pulsanti Indietro / Avanti.

Ma per usare quelle librerie, dobbiamo essere in grado di spostare l'interfaccia utente da uno stato all'altro. Esiste una buona strategia per spostarsi tra gli stati dell'interfaccia utente, che consente anche di ripristinarli da zero quando si carica un nuovo URL?

In un'app complessa, potresti avere molti stati diversi. Non si desidera ricaricare l'intera interfaccia utente ogni volta che si cambia stato. Ma non vuoi nemmeno richiedere metodi separati per spostarti da ogni stato a ogni stato.

In genere dobbiamo:

  • Ripristina uno stato da zero, quando inserisci un nuovo URL o premi Ricarica.
  • Spostarsi da uno stato all'altro quando si utilizzano i pulsanti Indietro / Avanti.
  • Spostati da uno stato a un altro, quando esegui un'azione all'interno della tua app (ad esempio facendo clic su un link).
  • Sposta in determinati stati che non devono essere aggiunti alla cronologia, come quelli che appaiono dopo l'invio dei moduli.
  • Passa ad alcuni stati costruiti sullo stato precedente, come un elenco di drill-down .

Quando esegui azioni all'interno della tua app, c'è la domanda aggiuntiva su quale viene prima:

  • Modifica l'URL, ascolti la modifica dell'URL e modifichi il tuo stato in risposta ad esso?
  • O cambi il tuo stato, quindi cambi l'URL, ma non fare nulla in risposta?

Qualcuno ha qualche esperienza da condividere su questo argomento?

    
posta JW01 24.03.2012 - 22:52
fonte

1 risposta

2

Dovrai modificare l'URL, ascoltare le modifiche all'URL e modificare lo stato della pagina in risposta alle modifiche dell'URL. In questo modo quando l'utente si ricarica, colpisce il pulsante Indietro o esegue un'azione sulla pagina, lo stesso codice gestirà le modifiche di stato della pagina.

Il codice che gestisce le modifiche di stato può guardare lo stato corrente della pagina, confrontarlo con il nuovo stato richiesto della pagina ed eseguire solo le azioni necessarie per le parti della pagina che sono state modificate.

    
risposta data 25.03.2012 - 03:23
fonte

Leggi altre domande sui tag