安裝及環境設定
首先要安裝 Node.js,由於 Node.js 是一個快速發展中的網頁框架,Ubuntu 內建的 Node.js 版本當然就很容易老舊過時,還好官方準備了 Debian/Ubuntu 的套件庫可以直接使用。
curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs
建立專案
接下來是使用 npm 手動建立一個 Node.js 的專案,照著指示做就可以了。
$ mkdir myapp $ cd myapp $ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields and exactly what they do. Use `npm install--save` afterwards to install a package and save it as a dependency in the package.json file. Press ^C at any time to quit. name: (myapp) version: (1.0.0) description: entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /home/sylee/myapp/package.json: { "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes)
接下來照著 Node.js 官方網站上的第一個範例建立一個簡單的 HTTP Server。
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');
將以上的內容寫入 server.js 然後修改 package.json 在 "scripts" 裡面加入 "start": "node server.js"。
{ "name": "myapp", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node server.js", "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" }
然後就可以使用 npm start 來啟動 Server 啦。
> myapp@0.0.0 start /home/sylee/myapp > node server.js Server running at http://127.0.0.1:1337/
使用模組
如果說要整個重頭寫 HTTP Server 提供所有的內容一定是很吃力的,所以當然就是要使用別人寫好的 node module 來做快速開發。
接下來要來使用 Express.js 首先是安裝它。
$ npm install --save express
然後就可以將先前的 server.js 改寫。
var express = require('express'); var app = express(); app.get('/hello.txt', function(req, res){ var body = 'Hello World'; res.setHeader('Content-Type', 'text/plain'); res.setHeader('Content-Length', body.length); res.end(body); }); app.listen(3000); console.log('Listening on port 3000');
然後重新執行 npm start 啟動 Server 就可以在 http://localhost:3000/hello.txt 看到結果了。
這個例子與先前的例子之間的差別是: http://127.0.0.1:1337 底下無論任何的路徑 http://127.0.0.1:1337/foo http://127.0.0.1:1337/bar 都是看到一樣的結果,而 http://localhost:3000 就只有 http://localhost:3000/hello.txt 可以看到 Hello World 其它的路徑就只能看到 Cannot GET balabala