最近在深入學習並爭取儘快掌握Node.js
的技術細節,考慮開一篇文章用於記錄需要記錄下來的概念、方法以及程式碼例項,方便在實際專案中進行查詢。此篇會持續更新,或另開文章討論更核心、關鍵的技術問題。
這是一個透過http
模組進行客戶端和伺服器端通訊的基礎例子,個人覺得很不錯,雖然有些地方需要重構一下,先記錄下來。
//Client
var http = require('http');
var qs = require('querystring');
function send(theName) {
http.request({
host: '127.0.0.1',
port: 3000,
url: '/',
method: 'POST'
}, function (res) {
res.setEncoding('utf8');
res.on('end', function () {
console.log('\nRequest completed!');
process.stdout.write('\nyour name:')
})
}).end(qs.stringify({name: theName}));
}
process.stdout.write('\nyour name: ');
process.stdin.resume();
process.stdin.setEncoding('utf8');
process.stdin.on('data', function (name) {
send(name.replace('\n', ''))
});
//Server
var http = require('http');
var qs = require('querystring');
http.createServer(function (req, res) {
var body = '';
req.on('data', function (chunk) {
body += chunk;
});
req.on('end', function () {
res.writeHead(200);
res.end('Done');
console.log('\ngot name: ' + qs.parse(body).name + '\n');
})
}).listen(3000);
console.log('Server is running on the port:3000');
var http = require('http');
var qs = require('querystring');
http.createServer(function (req, res) {
if ('/' === req.url) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end([
`<form method="POST" action="/url">
<h1>My form</h1>
<fieldset>
<label>Personal information</label>
<p>What is your name?</p>
<input type="text" name="name" placeholder="input your name">
<p><button>Submit</button></p>
</fieldset>
</form>`
].join(''));
} else if ('/url' === req.url && 'POST' === req.method) {
var body = '';
req.on('data', function (chunk) {
body += chunk;
});
req.on('end', function () {
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<b>Your name is <b>' + qs.parse(body).name + '</b></p>')
})
} else {
res.writeHead(404);
res.end('Not Found');
}
}).listen(3000);
console.log('Server is running on the port:3000');