Capisco che sia una buona pratica in angolare usare $log
anziché console.log
. Tuttavia, non riesco a trovare una buona documentazione che spieghi le ragioni. Perché uno sviluppatore dovrebbe usare $log
?
risposta
$log
primi controlli se il browser supporta console.log
(IE 8, ad esempio, non). Ciò impedisce di visualizzare gli errori su IE 8. Nota: questo non significa che registrerà alcunché su IE 8, significa semplicemente che non genererà l'errore.
Accanto a questo, consente anche di decorate e simulare $log
per l'estensione e testare gli scopi, se siete così inclini. Ad esempio, è possibile decorarlo per accedere a un array per il supporto di IE 8.
Una caratteristica di bonus: se si passa un'istanza di JavaScript Error
, tenterà di formattarlo correttamente. Questo può essere scoperto leggendo il source code.
EDIT: "Non è che IE 8 non supporta console.log. Semplicemente non crea l'oggetto console finché non vengono aperti gli strumenti di sviluppo." Vedi i commenti sotto per maggiori dettagli.
Giusto per completare @Steve's answer (che è corretto), $log
ha anche il vantaggio di essere spento. L'utilizzo di questo codice è possibile disabilitare la registrazione da $log
:
app.config(function($logProvider) {
$logProvider.debugEnabled(true);
});
Questo è molto utile se si desidera disattivare tutti i registri in una volta, piuttosto che eliminarli riga per riga manualmente.
- 1. Perché utilizzare Function.prototype.bind anziché Function.prototype.call?
- 2. Perché utilizzare Celery anziché RabbitMQ?
- 3. Perché utilizzare AsQueryable() anziché List()?
- 4. Perché utilizzare typedef anziché #defines?
- 5. Perché utilizzare GWT.create() anziché nuovo?
- 6. Perché utilizzare singleton anziché statico?
- 7. Perché utilizzare enum anziché costanti?
- 8. Perché utilizzare il nome "op_Addition" per l'operatore "+" anziché il nome "+"?
- 9. Perché/Quando utilizzare (!! p) anziché (p! = NULL)
- 10. Perché utilizzare registerDefaults: anziché setValue: forKey :?
- 11. Perché utilizzare TimeSpan.CompareTo() anziché < > o =
- 12. Android: perché utilizzare getBaseContext() anziché questo
- 13. Perché utilizzare rbegin() anziché end() - 1?
- 14. Perché dovrei utilizzare il modello di threading "Both" anziché "Free"?
- 15. Perché utilizzare un metodo Create anziché utilizzare "nuovo"?
- 16. Perché console.log() non stampa nulla?
- 17. Perché il blocco anziché il ciclo?
- 18. Perché utilizzare il plug-in sonar per Jenkins anziché utilizzare semplicemente l'obiettivo Maven "sonar: sonar"?
- 19. Perché Angular 2 utilizza decoratori?
- 20. Come utilizzare il rendering lato server Angular 2
- 21. Perché utilizzare una classe astratta vuota anziché un'interfaccia?
- 22. Perché utilizzare eventi personalizzati anziché chiamate dirette ai metodi?
- 23. Perché utilizzare lambda anziché la corrispondenza del modello?
- 24. MySQL: Perché utilizzare VARCHAR (20) anziché VARCHAR (255)?
- 25. Perché utilizzare un CardView anziché un RelativeLayout o LinearLayout?
- 26. Perché utilizzare sys.path.append (percorso) anziché sys.path.insert (1, percorso)?
- 27. Perché utilizzare NuSOAP anziché PHP SOAP? Qualche vantaggio?
- 28. Perché Firefox 3 rottura con console.log
- 29. Perché utilizzare una funzione anziché un riferimento al membro?
- 30. Perché console.log (true, '\ t') stampa true "\t"?
Grazie. Soprattutto per avermi indirizzato al codice sorgente. Sto imparando che spesso è il posto dove andare. – user3141592
Ho pensato che ci deve essere qualcosa di più che evitare la console mancante. Non c'è molto, ma la punta del decoratore e la funzione bonus che menzioni sono utili da sapere. – user3141592
+1 Penso che sia importante notare che non è che IE 8 non supporti 'console.log'. Semplicemente non crea l'oggetto 'console' finché non vengono aperti gli strumenti di sviluppo. 'console.log' è supportato in IE 8 fino a quando gli strumenti dev sono aperti. Vedi [questo] (http://stackoverflow.com/questions/690251/what-happened-to-console-log-in-ie8) domanda come riferimento ... – War10ck