Wie rsp sagte, gesegnet ist ein großes Werkzeug für diesen Kandidaten. Hier ist eine Beispielimplementierung, die Sie verwenden können.
Ich habe gesegnet, um eine Textbox in der unteren Zeile auf dem Bildschirm zu erstellen. Der Rest des Bildschirms ist der "Körper", in dem Ihre Code-Ausgabe hinzugefügt wird. Auf diese Weise wird Ihr Programm bei der Eingabe keinen Einfluss auf die Ausgabe haben, wie Sie es erlebt haben.
Um dies zu versuchen, führen npm install blessed --save
, dann diesen Code in Knoten ausgeführt:
const blessed = require('blessed');
var screen = blessed.screen();
var body = blessed.box({
top: 0,
left: 0,
height: '100%-1',
width: '100%',
keys: true,
mouse: true,
alwaysScroll: true,
scrollable: true,
scrollbar: {
ch: ' ',
bg: 'red'
}
});
var inputBar = blessed.textbox({
bottom: 0,
left: 0,
height: 1,
width: '100%',
keys: true,
mouse: true,
inputOnFocus: true,
style: {
fg: 'white',
bg: 'blue' // Blue background so you see this is different from body
}
});
// Add body to blessed screen
screen.append(body);
screen.append(inputBar);
// Close the example on Escape, Q, or Ctrl+C
screen.key(['escape', 'q', 'C-c'], (ch, key) => (process.exit(0)));
// Handle submitting data
inputBar.on('submit', (text) => {
log(text);
inputBar.clearValue();
});
// Add text to body (replacement for console.log)
function log(text) {
body.pushLine(text);
screen.render();
}
/*
* Demonstration purposes
*/
// Listen for enter key and focus input then
screen.key('enter', (ch, key) => {
inputBar.focus();
});
// Log example output
setInterval(() => {
log("just displaying some stuff");
}, 1000);
Wichtige Punkte sind hier:
- Ihr Code-Ausgabe mit der
log
Funktion zeigen. Betrachten Sie dies als console.log
Drop-in-Ersatz. Benutze keine console.*
Funktionen mehr, sie werden den Bildschirm von gesegnet machen.
- Sie müssen das Element
inputBar
"fokussieren", damit es Eingaben empfängt. Sie können sie jedoch immer fokussieren lassen, aber meine Demonstration zeigt, dass Sie auf eine Enter-Taste drücken oder auf die blaue Leiste klicken, um sie zu fokussieren. Wenn Sie Code schreiben, der den Bildschirm manipuliert, denken Sie daran, screen.render()
auszuführen, um Ihre Änderungen zu rendern.
Sie senden die Eingabe von stdin sofort an die Konsole. Was hast du sonst noch erwartet? – Flimzy