JSP in file Javascript o più richieste AJAX

1

Ho pensato a come voglio caricare i miei dati per alcune checkbox in un'app AngularJS. Sto generando più checkbox in base a 2 oggetti JSON che sono attualmente codificati nel file Javascript (al momento è un prototipo, ma in produzione i valori per le caselle possono cambiare da un giorno all'altro).

Ora ho provato a usare JSP nel mio file Javascript (IDE è Eclipse) - mentre funzionerebbe, sembra solo brutto (oltre al fatto che il controllo della sintassi JSP non funziona in un file .js ). Ho pensato di creare un servlet che generasse quegli oggetti JSON e quindi li caricasse tramite AJAX, ma non sono sicuro che questo potrebbe essere un "cattivo comportamento" dal momento che genererei più chiamate AJAX solo per mantenere il mio codice "pulito".

Esiste qualche tipo di convenzione o best practice per i Javascript creati dinamicamente o dovrei di solito preferire AJAX rispetto a JSP in Javascript?

    
posta Ahatius 12.05.2015 - 21:52
fonte

1 risposta

1

Quello che vuoi fare è possibile e sono disponibili in molti framework che possono aiutarti. Guarda AJAX come una callback implementata in JS e non qualcosa di diverso - questo ti aiuterà a semplificare il tuo problema. Non esiste la migliore pratica IMO, ma ci sono alcune opzioni disponibili che ho usato in passato. Ecco alcune opzioni,

  1. Componenti UI tag JSP: hai alcuni widget che richiedono un input aziendale per il rendering ma sono principalmente JavaScript. Sebbene AJAX sia un'opzione, può non essere necessario se i dati sono disponibili al momento del rendering della JSP. Un approccio consiste nel creare un tag Lib JSP che rende internamente HTML e JS. Il vantaggio è che meno persone stanno toccando e lavorando con JS, che è più soggetto a errori e relativamente difficile da testare l'unità. In passato si trattava di un'opzione disordinata poiché dovevi utilizzare più istruzioni out.println per eseguire il rendering di Dynamic JS dal gestore tag, ma ora con l'introduzione di Tag file questo può essere molto più pulito.

  2. JS Endpoint: JS Endpoint sono servlet speciali che servono JS dinamico. Pensa a questo invece se imposti un file statico nell'attributo src del tag script hai l'URL che punta a un URL che punta a un servlet che risponde con tipo di contenuto per JavaScript o JSON secondo il caso.

    <script src="/myapp/abc.jsx"></script>
    

    Nel web.xml,

    <servlet-mapping>
    <servlet-name>myServletThatServesDynamicJS</servlet-name>
    <url-pattern>*.jsx</url-pattern>
    </servlet-mapping>
    
  3. Frameworks sul lato client: ci sono molti framework JS che valgono il tuo investimento in termini di tempo che può minimizzare la quantità di JS che scrivi generando in modo dichiarativo un sacco di JS (e CSS) qualcosa che Gli sviluppatori Java preferirebbero. AngularJS e Bootstrap sono esempi. Quindi in pratica aggiungi alcuni attributi aggiuntivi ai normali tag HTML e c'è qualcosa di magico in background che genera componenti, effettua chiamate AJAX, ecc. Angular richiama i "moduli" JS richiesti dal server come se necessario tramite chiamate AJAX e supporta anche funzionalità avanzate come DI che possono rendere il test del codice JS un gioco da ragazzi e anche molto più pulito.

Personalmente preferisco usare i framework JS per risolvere i problemi JS. Quindi sarei favorevole all'opzione 3 per la maggior parte dei problemi. I framework JS hanno fatto molta strada e hanno un ampio supporto del settore, specialmente quando si parla di framework come AngularJS o anche jQuery. Affrontano anche molte altre preoccupazioni, alcune delle quali non sono state sollevate come una compatibilità cross-browser, il che può essere un enorme problema anche se stai supportando un solo browser tra le varie versioni.

    
risposta data 12.05.2015 - 23:42
fonte

Leggi altre domande sui tag