小弟的規劃表 - http://blog.kerkerj.in/blog/2014/11/01/planning/
好讀版 - http://blog.kerkerj.in/blog/2014/10/08/api-d8/
一樣先開虛擬機哦~
並且開啟終端機連進 server 裡面~
以下是 Node.js 官方網站的 web server 程式範例,我稍作小修改:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, '0.0.0.0');
console.log('Server running at http://0.0.0.0:1337/');
我們先在虛擬機的資料夾建立一個子資料夾 『HelloWorld'
在 HelloWorld 資料夾裡面建立一個 app.js
內容如上,存檔。
使用終端機進入 server :
$ vagrant ssh
$ cd /vagrant/HelloWorld
$ node server.js
到瀏覽器輸入 http://192.168.33.10:1337/
(或者是你的 Vagrantfile 裡面設定的 private IP)
即可看到 Hello World 了!
要關掉 Server 也非常簡單,回到下指令的地方,按下 ctrl + c 即可中斷程式
簡單分析一下此段程式:
var http = require('http');
將 http 這個模組引入,並指定給物件 http
http.createServer(
...
).listen(1337, '0.0.0.0');
先略過中間的 function 不看,
這段 code 的用意即是讓呼叫 http 物件中的 createServer 的方法, .listen() 則是設定該 server 要跑在哪個 port、hostname
function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}
上面的 code 則是原本在 .createServer() 裡的, 我們可以看一下 Node.js 的 API doc 關於此方法的部分
.createServer() 要帶入的東西其實是一個 requestListener,
也就是當 Server 跑起來時,我們開啟瀏覽器,輸入 127.0.0.1:1337 時,
Node.js Server 要回丟的東西,因此觀察一下此 listener:
function (req, res) {
...
}
function 中帶入參數的是 req, res,意即 request, response,
request 即是 server 接收到 client 端的訊息,
response 則是 server 要回丟給 client 的訊息,
由於在此範例中,我們只是要回丟給 client 端一個 hello world 的訊息, 因此,我們不處理 client 送給 server 的 request, 我們只需處理要回丟給 client 的訊息,
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
寫網頁的開發者應該對一些關鍵字例如 Content-type, text/plain 不陌生,
第一行代表回傳給使用者的訊息中,HTTP HEAD 的設定是 http status code 200, 並且 Content-type 設定為 text/plain
res.writeHead(200, {'Content-Type': 'text/plain'});
那麼,以下這行 code 的意思即是,此次要回送給使用者的訊息到這裡結束,以 「Hello World」 作結尾
res.end('Hello World\n');
因此整段 code 看下來,就是一個非常簡單的 http server,
http://192.168.33.10:1337/ 總是會回傳 Hello World
今天就完成了我們的 Hello World 了!