È una cattiva pratica compilare l'app NodeJS TypeScript in un singolo file JS?

2

Al momento sto esplorando TypeScript e mi chiedevo perché non compilare l'intera app su un singolo file JS invece di compilare ogni .ts file al suo .js corrispondente.

Un esempio di app di questo tipo è TypeDoc , che fondamentalmente compila in un singolo file bin/typedoc.js .

Il concetto comune è di compilare ogni file .ts in un file .js con --module commonjs come argomento per il compilatore typescript.

C'è qualcosa di cui devo preoccuparmi se costruisco un'applicazione web scalabile (grande) che compili in un singolo file?

    
posta drinchev 18.05.2015 - 23:18
fonte

1 risposta

2

Ci sono alcuni vantaggi che puoi trarre dall'avere un file javascript combinato su molti file più piccoli. Tuttavia, presenta alcuni inconvenienti.

Pro :

  • Migliore manutenzione del tuo markup : il mantenimento dei riferimenti al file .js è più semplice. Inserisci solo uno / alcuni riferimenti sui tuoi principali disegni di wrapper e non devi preoccuparti di aggiungere qualcosa di nuovo più tardi.
  • Vantaggi della cache : se le intestazioni HTTP sono configurate correttamente durante la pubblicazione dei file JS, i browser verranno automaticamente memorizzati nella cache di javascript. Ciò significa che tutta la logica lato client verrà scaricata inizialmente una volta e sarà trasferita alle altre <<>> gratuitamente ".
  • Tagliando round trip - Ogni file javascript che carichi su se stesso è un altro round trip sul server, quindi stai tagliando potenziali round trip se hai bisogno di più file per una determinata pagina.

Contro :

  • I primi / tutti i carichi di pagina sono più lunghi : tutta la tua logica deve essere presentata in una sola volta, quindi sarà un file più grande di una frazione di quello che avresti potuto avere in precedenza. Se hai una strategia di caching, prendi questo colpo solo una volta sul caricamento della prima pagina.
  • Problemi con JS memorizzato nella cache : se stai memorizzando nella cache, quale probabilmente sei, se quel file cambia in modo importante che deve essere immediatamente riflesso nell'applicazione aggiornata, potresti incorrere in problemi. In questo caso, assicurati di utilizzare stringhe di query cache buster . Prendi in considerazione la lettura della data "Tempo creato" dal file system per fare in modo che questo processo sia automatico.
  • Fai attenzione con alcuni concetti di JS : probabilmente non vuoi inserire alcuna logica nella libreria che verrebbe effettivamente eseguita al caricamento. Pensa Funzionalità 'Document Ready' di JQuery . Ciò funzionerà in modo efficace su ogni pagina e probabilmente non lo vorrai nella maggior parte degli scenari. Personalmente utilizzo un pattern MVC in cui ho un modulo 'controller' per pagina che ho una funzione Init () per le pagine che richiedono una gestione speciale al caricamento della pagina. Basta chiamarlo dalla tua pagina in un piccolo tag script e il gioco è fatto.

Non ho notato una particolare difficoltà nel debugging di cui sembri preoccupato. Il mio consiglio sarebbe quello di creare una versione minificata e non miniata del tuo file .js combinato. Quindi potresti volere che la tua applicazione indichi abilmente il tempo in cui ti trovi in un ambiente di sviluppo o meno, e aggiungi ". Min.js" o semplicemente ".js" alla fine del tuo file. Ci saranno alcune volte in cui dovrai eseguire il debug di qualcosa specifico nella produzione, e questo dovrebbe coprire il 95% dei casi di debug o più.

    
risposta data 14.08.2015 - 23:12
fonte

Leggi altre domande sui tag