2015-03-23 19 views
23

vorrei valutareCome scrivere più righe di codice nel Nodo REPL

var foo = "foo"; 
console.log(foo); 

come un blocco, anziché la linea di valutazione per riga

var foo = "foo"; 
undefined 
console.log(foo); 
foo 
undefined 

C'è un modo semplice per spostare il richiedere la riga successiva?

+0

no. repl automaticamente avvia "modalità multilinea" se c'è un errore di sintassi (e lo chiude quando l'espressione è valida). Perché linea per linea non è abbastanza buono per te? Puoi ancora incollare input multilinea e tutte le righe da testo incollato saranno valutate –

+0

Trovo che la valutazione linea per riga distrae quando sto scrivendo un piccolo blocco di codice nel REPL. – user3812377

+0

In alternativa, è possibile utilizzare le funzionalità di debug del nodo in Chrome. Suppongo che tu possa inserire più righe nella console degli sviluppatori, che servirebbe da sostituto del nodo. – Rolf

risposta

32

Il nodo v6.4 ha una modalità editor. Al prompt repl digitare .editor ed è possibile immettere più righe.

esempio

$ node                         
> .editor 
// Entering editor mode (^D to finish, ^C to cancel) 
const fn = there => `why hello ${there}`; 
fn('multiline'); 
// hit ^D 
'why hello multiline' 
> // 'block' gets evaluated and back in single line mode. 

Ecco la documentazione su tutto il repl speciale comandi https://nodejs.org/api/repl.html#repl_commands_and_special_keys

14

È possibile utilizzare if(1){ per avviare un blocco che non verrà terminato finché non si immette }. Stampa il valore dell'ultima riga del blocco.

> { 
... var foo = "foo"; 
... console.log(foo); 
... } 
foo 
undefined 

In modalità multilinea si perde su un sacco di sottigliezze REPL, come il completamento automatico e la notifica immediata di errori di sintassi. Se si rimane bloccati in modalità multilinea a causa di un errore di sintassi all'interno del blocco, utilizzare ^C per tornare al prompt normale.

+0

non funzionano per me (presumo che "{" sia interpretato come inizio dell'oggetto). Funziona se la prima riga è 'if (1) {' –

+0

Buona cattura. Non ho idea del perché sia ​​così impossibile recuperare da altri punti di partenza come '(' – Phssthpok

+0

Una nota di cautela: se si copia/incolla un blocco come sopra che include un carattere di tabulazione, il carattere di tabulazione attiverà il completamento automatico del nodo (probabilmente non è ciò che si desidera) e molto probabilmente causerà la chiusura del nodo. – Jthorpe