对不起,我是一个前端,一些同窗说我是作前台的,对,我以前就是写页面的。之因此要再学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 和 使用中间件来开发功能。 下一章待续....架构