2014-06-12 12 views
60

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

74

$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.

+2

Grazie. Soprattutto per avermi indirizzato al codice sorgente. Sto imparando che spesso è il posto dove andare. – user3141592

+0

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

+8

+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

6

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.

Problemi correlati