Node.js
1.Node来历
2009年,正是推出基于Javascript语言和V8引擎的开源Web服务项目,命名为Node.js,Node.js是第一次把Javascript带到后端开发。全很很多开发人员都熟悉Javascript,所以Node.js一下子就火了。
Javascript语言本身是完善的函数式语言,在前端开发时,开发人员往往写的比较随意,让人感觉javascript就是个”玩具语言”。但Node环境下,通过模块化Javascript代码,加上函数式编程,并且无需考虑浏览器兼容问题,直接使用最新的ES6标准,可以完全满足工程上的需求。
2.Web开发常用框架
a.http框架
1).Express:是第一代最流行的Web框架,它对node.js的http进行封装,用起来如下:
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); });
它基于ES5的语法,要异步实现代码,只有一个方法:回调。如果异步嵌套层次过多,代码写起来就非常的难看。
2).koa 1.0: 随着新版Node.js支持ES6,Express团队又基于ES6的generator重新编写了下一代Web框架koa。和express比较, 使用generator代码看起来像同步:
var koa = require('koa'); var app = koa(); app.use('/test', function *() { yield doReadFile1(); var data = yield doReadFile2(); this.body = data; }); app.listen(3000);
为了计划异步操作,ES7引入了关键字async和await,可以轻松的把一个function变为异步模式:
async function () { var data = await fs.read('/file1'); }
3).koa 2.0: koa团队非常超前的基于ES7开发了koa2,完全使用Promise并配合aysnc实现异步。
app.use(async (ctx, next) => { await next(); var data = await doReadFile(); ctx.response.type = 'text/plain'; ctx.response.body = data; });