Come si evita la duplicazione della convalida sul server e sul lato client? Esiste una piattaforma di programmazione web che genera l'una dall'altra, quindi non devo tenere i due sincronizzati?Come si evita la duplicazione della convalida sul server e sul lato client?
risposta
La maggior parte degli script di gestione del lato client si abbandonano e al giorno d'oggi fanno solo lato server. È possibile utilizzare ajax quando si invia il post, in modo che la risposta sia leggermente più leggera rispetto al ricaricamento dell'intera pagina.
La convalida lato server è richiesta semplicemente perché la convalida lato client può essere disabilitata.
validazione lato client non è richiesto, ma rende l'applicazione più reattiva durante la gestione degli errori, come non avete più bisogno di fare un modulo di inviare al server e attendere che la pagina risultante di tornare.
Un'applicazione ben progettata utilizza entrambi.
Come nota a margine, Ajax può essere utilizzato per determinati tipi di convalida, come il controllo di nomi utente duplicati su un modulo di registrazione utente. Tuttavia, la convalida di base, come controllare se un campo contiene solo numeri, dovrebbe essere fatta senza di essa.
Nella maggior parte dei casi è consigliabile eseguire la convalida sul lato server. Hai molte opzioni diverse per renderlo più facile come Ajax o usare moduli appiccicosi in PHP. Personalmente tendo a convalidare sul lato server perché l'utente ha la possibilità di disattivare JavaScript e non può disattivare la convalida sul server .....
Ci sono framework che possono generare il lato client validazione dalla configurazione di validazione serveride.
Ora non so che lingua o quadri che si sta utilizzando, ma forse questo articolo può essere di aiuto: http://www.emadibrahim.com/2008/09/08/client-server-side-validation-in-aspnet-mvc/
Sta usando Castello Validator Component con JQuery e aggiunge un po 'di colla per generare la validazione lato client basato sugli attributi di convalida del server. È per asp.net mvc.
/Asger
Sto cercando qualcosa che non sia MS, e l'esempio non sembra davvero che semplificherebbe le cose nel complesso. – josh
Bene, il principio dovrebbe poter essere trasferito anche su altre piattaforme ... quale lingua/quadro/piattaforma preferisci? – asgerhallas
Come altri hanno detto, si dovrebbe tenere la duplicazione, come la validazione lato client è quello di aiutare l'applicazione reagire presto per aiutare l'utente, ma, la vera convalida è sul lato server, come non dovresti mai fidarti di qualcosa che è passato fino a quando non è stato convalidato. Probabilmente eseguirai una validazione più ampia sul lato server, specialmente se è necessario verificare contro un'origine dati, ad esempio, il nome utente unico sarebbe sul lato server, ma il nome utente è abbastanza lungo, oppure indirizzo di posta elettronica, potrebbe essere fatto sul lato client e sul lato server.
Tendo a mettere commenti quando c'è una duplicazione, specialmente se sto usando un'espressione regolare, per accertarmi che ciò che cambia in uno sia cambiato in un altro.
I buoni test di unità aiuteranno a garantire che questi due rimangano sempre sincronizzati.
Come si scrive un test unitario che testerà sia il validatore lato server che il validatore lato client? Sembra che, nel caso normale, si finirebbe con un set duplicato di test unitari (uno per ogni lingua), e quei test unitari potrebbero andare fuori sincrono. –
Avrete due test, ma il lato server eseguirà più controlli più probabilmente del lato client, poiché il client sta solo cercando di vedere se i dati sono approssimativamente corretti, ma la correzione assoluta è un lavoro per il server. –
Ciò che si può fare è avere la logica di convalida lato server gestita dai servizi Web che la convalida lato client può chiamare tramite AJAX e anche quando si invia nuovamente al server.
Questo non è per rispondere alla tua domanda, ma potresti voler modificare il titolo in modo da non confondere il lettore, a qualcosa di simile a "Come mantenere la convalida sul server e sul lato client sincronizzati?"
L'idea del titolo è a uno a) dare al lettore un'idea approssimativa di ciò che si sta chiedendo o b) rendere il lettore rendersi conto che lui/lei deve leggere il contenuto per capire la tua domanda.
penso il modo migliore è utilizzare un componente che offra entrambi: il loro codice è stato testato e non è necessario mantenerlo. Ho usato i controlli Peter Blum's in passato con grande successo. due basi di codice se si desidera offrire entrambe le versioni. C'è uno strumento chiamato Script# che può aiutare a compilare C# in Javascript (fa una traduzione, non una vera compilation), ma non sono sicuro di quanto sarebbe bello per questa situazione
Asp.net Versione 1 ha avuto i controlli di convalida di fare quello che stai chiedendo
- 1. RegisterOnSubmitStatement dopo la convalida sul lato client
- 2. Reagire sul lato server e sul lato client non trasparente
- 3. La convalida JSF è sul lato client o sul lato server?
- 4. Come utilizzare le regole di convalida sia sul lato client che sul lato server?
- 5. Come si sincronizzano il codice lato server e lato client?
- 6. Evita la duplicazione della formattazione tra la vista Razor lato server e il modello jQuery lato client
- 7. Come si usa require.js sul lato server?
- 8. CSS sul lato server?
- 9. Node.js: Templating sul lato client Modellazione lato server v/s
- 10. GWT I18N sul lato server
- 11. Utilizzo del nodo-ncurses sul lato client tramite script sul lato server?
- 12. React-Redux token sul lato client
- 13. Come verificare Page.Validate() sul lato client (JavaScript) in ASP.Net?
- 14. Come emettere l'evento SocketIO sul lato server
- 15. Convalida del bean JSR 303 + Convalida lato client JavaScript
- 16. Convalida lato server Backbone.js e altri errori lato server
- 17. ASP.Net MVC 3 Modello JSON Convalida del modello lato server e binding con convalida lato client
- 18. Come rilevare l'eccezione di timeout del client sul lato server?
- 19. jQuery modelli sul lato server
- 20. Verifica cross-browser delle dimensioni del file sul lato client prima di caricarlo sul server?
- 21. Come mantenere la posizione di scorrimento dopo che la convalida sul lato client non riesce?
- 22. Rendere l'applicazione Backbone.js sul server E sul client
- 23. Ricevimento acquisti in-app Apple - convalida sul lato server
- 24. Come aspettare sul lato client fino a quando la connessione a mongo sul lato server è pronta?
- 25. Come convalidare il modulo Symfony 2 sul lato client (javascript)
- 26. Gestione del timeout della sessione sul lato client
- 27. Intercettazione di azioni GSP Grails sul lato client o server
- 28. GWT: utilizzare DateTimeFormat sul client e SimpleDateFormat sul server
- 29. Posso usare webpack sul lato client senza server nodejs?
- 30. JavaScript sul lato server come PHP
Questo in realtà non rispondere alla domanda. È solo una definizione di entrambi, mentre chiede come evitare la duplicazione della logica per entrambi. –