2013-12-08 16 views
1

我來自Python 3的Node.js,並想知道Node.js是否有我可以使用的東西,基本上與Python的input相同,例如讓我們說這個代碼:輸入()爲Node.js

def newUser(user = None, password = None): 
    if not user: user = input("New user name: ") 
    if not password: password = input("Password: ") 
    return "Welcome, your user name is %s and your password is %s" % (user, password) 

# Option one 
>>> newUser(user = "someone", password = "myPassword") 
'Welcome your user name is someone and your password is myPassword' 

# Option Two 
>>> newUser() 
New User name: someone 
Password: myPassword 
'Welcome your user name is someone and your password is myPassword' 

node.js可以做同樣的事嗎?如果是這樣如何?如果你有任何有用的文檔,那麼我可以回頭看看他們是否還有其他問題。我的主要問題是node.js不等我提交我的回覆/答案像python這樣的問題。

回答

3

的ReadLine模塊:http://nodejs.org/api/readline.html

這裏就是你們的榜樣改寫爲Node.js的:

var readline = require('readline'); 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.question("New user name:", function(user) { 
    rl.question("New password:", function(password) { 
     var newUser = new User(user, password); 
     // do something... 
     rl.close(); 
    } 
}); 

它看起來有點不同,因爲控制檯使用非阻塞IO(如Node其餘.js和Python不同)。

3

您可以使用prompt來讀取來自用戶的輸入。

示例代碼:

var util = require('util'); 
var prompt = require('prompt'); 

// start the prompt 
prompt.start(); 

// text that appears on each prompt 
// prompt.message = 'Enter'; 
// prompt.delimiter = ' → '; 

// schema to take user input 
var schema = { 
    properties: { 
    username: { 
     message: 'Username', 
     required: true 
    }, 

    password: { 
     name: "Password", 
     required: true 
    } 
    } 
}; 

function newUser(username, password, callback) { 
    if (typeof username === 'function') { 
    callback = username; 
    username = null; 
    password = null; 
    } 

    var respond = function (err, newuser) { 
    callback(null, util.format('Welcome, your user name is %s and your password is %s', newuser.username, newuser.password)); 
    } 
    if (!username && !password) { 
    prompt.get(schema, respond); 
    } else { 
    var newuser = { 
     username: username, 
     password: password 
    }; 

    respond(null, newuser); 
    } 
} 

/** Test Code --------------------------------------------------------------- */ 
if (require.main === module) { 
    (function() { 
    var logcb = function (err, res) { 
     console.log(err || res); 
    } 

    // new user with username and password 
    newUser('hello', 'password', function (err, res) { 
     logcb(err, res); 

     // new user with prompt 
     newUser(logcb); 
    }); 
    })(); 
} 

希望這有助於你可以做一個庫程序出這一點,用的時候需要時間。

-1

我認爲你需要的是kbd模塊(https://npmjs.org/package/kbd)。

這是一個小小的C++附加模塊,可以在鍵盤上進行同步讀取。

+0

你必須解釋那個鏈接包含什麼以及如何幫助。在解釋之後可以給出參考 –