對不起,我是一個前端,一些同窗說我是作前臺的,對,我以前就是寫頁面的。之因此要再學Node,一方面是工做須要,有時(純)後端不配合優化性能問題;另外一方面是後端知識可以促進前端發展(你們說),固然頁面重構技術除外。html
最近又看了一遍《node深刻淺出》,但願樸大能再寫其餘書籍,或者再版。Node的書籍主要包括 node基礎知識、connect && middlewar、Express、線上部署等內容,《node實戰》也是這個佈局(layout)。說一些概念的時候,你們也能說一個大概,如下內容主要以demo爲主。前端
請注意:如下內容包說,不包對 node
Node 提供的相對底層的架構,能夠輕鬆的實現一個server。如:git
var http = require('http'); var server = http.createServer(function(req, res) { var url = 'http://baidu.com'; var body = '點擊<a href="' + url + '" target="_blank">百度</a>'; // https://baike.baidu.com/item/ContentType/1938445?fr=aladdin res.setHeader('content-type', 'text/html;charset=utf-8'); // http://nodejs.cn/api/buffer.html#buffer_class_method_buffer_bytelength_string_encoding res.setHeader('content-length', Buffer.byteLength(body, 'utf-8')); res.end(body); }) // nodemon to watch server.listen(3000);
content-type 指定返回內容類型,content-length 指定返回字節長度,可以提供傳輸效率。你們也能夠將text/html
改爲text/plain
,也能夠將 Buffer.byteLength(body, 'utf-8')
改爲 body.length
看下效果,想一想爲何不對,書中都有講。github
它引入中間件概念,並封裝了一些經常使用的中間件,方便你們可以更方便搭建服務。express
var http = require('http'); var connect = require('connect'), morgan = require('morgan'); var app = connect(); // logger app.use(morgan(':method :url :status :res[content-length] - :response-time ms')); // respond to all requests app.use(function(req, res){ res.end('Hello from Connect!\n'); }); //create node.js http server and listen on port http.createServer(app).listen(3000);
morgan 用來記錄日誌,代碼看起來很是清爽。後端
var express = require('express'); var app = express(), user = express(); user.get('/show/:id', function(req, res) { res.end('get user detail'); }) user.get('/list', function(req, res) { res.end('get user list'); }) app.use('/user', user); app.listen(3000);
及api
var express = require('express'); var app = express(), user = express(); user.get('/user', function(req, res) { res.end('user page'); }) // 這裏直接寫路由應該不常見 app.get('/home', function(req, res) { res.end('home page'); }) app.use(user); app.listen(3000);
以上內容介紹瞭如何創建server 和 使用中間件來開發功能。 下一章待續....架構