大家好,我是yma16,本文介绍node的一个web框架koa。
往期文章
node_windows环境变量配置
node_npm发布包
linux_配置node
node_nvm安装配置
node笔记_http服务搭建(渲染html、json)
node笔记_读文件
node笔记_写文件
node笔记_连接mysql实现crud
node笔记_formidable实现前后端联调的文件上传
关于node
Node.js于2009年写成,原始作者是瑞安·达尔( Ryan Dahl)。
Ryan 的本职工作是用 C++ 写服务器
大佬总结出一个经验,一个高性能服务器应该是满足“事件驱动,非阻塞 I/O”模型的。
C++ 开发起来比较麻烦,于是 Ryan就想找一种更高级的语言,以便快速开发,写出node.js。
关于express
Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP
工具。使用 Express 可以快速地搭建一个完整功能的网站。
Express 框架核心特性:
可以设置中间件来响应 HTTP 请求。
定义了路由表用于执行不同的 HTTP 请求动作。
可以通过向模板传递参数来动态渲染 HTML 页面。
关于Koa
Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。
koa利用 async 函数 Koa 帮用户丢弃回调函数,并有力地增强错误处理。
Koa并没有捆绑任何中间件, 而是提供了一套优雅的方法帮助用户快速而愉快地编写服务端应用程序。
koa专注于异步流程改进
$ npm i koa
搭建一个hello csdn
const Koa = require('koa');
const app = new Koa();
// response
app.use(ctx => {
ctx.body = 'Hello csdn';
});
app.listen(3000);
ip默认localhost,访问localhost:3000成功返回hello csdn!
koa有以下两种不同的函数作为中间件
async
app.use(async (ctx, next) => {
const start = Date.now();
await next();
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
app.use((ctx, next) => {
const start = Date.now();
return next().then(() => {
const ms = Date.now() - start;
console.log(`${ctx.method} ${ctx.url} - ${ms}ms`);
});
});
这个时间差要比浏览器的响应时间小很多,浏览器的请求需要考虑到延迟等因素
定义一个名为designXml的xml文件
<message>
<warning>
Hello csdn,I'm YMA16 and focus on front-end development.
warning>
message>
请求的body返回该xml文件
app.use(async (ctx, next) => {
await next();
ctx.response.type = 'xml';
ctx.response.body = fs.createReadStream('designXml.xml');
});