node从8版本开始支持async语法了
这些node开源工具你值得拥有(下)
linux node 版本升级 用n模块
nodejs中 spawn 、fork、exec、execFile的区别
总结nodejs的优缺点
node,express
Node的整体架构图
Node Standard Library: 是我们每天都在用的标准库,如Http, Buffer 模块
Node Bindings: 是沟通JS 和 C++的桥梁,封装V8和Libuv的细节,向上层提供基础API服务
第三层是支撑 Node.js 运行的关键,由 C/C++ 实现:
1. V8 是Google开发的JavaScript引擎,提供JavaScript运行环境,可以说它就是 Node.js 的发动机
2. Libuv 是专门为Node.js开发的一个封装库,提供跨平台的异步I/O能力
3. C-ares:提供了异步处理 DNS 相关的能力
4. http_parser、OpenSSL、zlib 等:提供包括 http 解析、SSL、数据压缩等其他的能力
v8只是node的js执行引擎。
node优势
Nodejs区别于传统应用的特点:
1. 异步事件驱动
2. 非堵塞I/O
3. 单线程(这里指主线程)
4. 性能出众
V8 架构优势总结
内联代码:
隐藏类:
内联缓存:
编译为机器码:
垃圾回收:
koa express koa1 koa2对比
Koa
洋葱的中间件模型
koa的中间件模式与express的是不一样的,koa是洋葱型,express是直线型
核心的四个文件
Application,context, request, response
把所有的属性挂到context上边,contest挂到response上,request上。
app.listen
app.handleRequest
app.compose
const logger = ()=>{
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log('logger');
resolve();
}, 1000);
})
}
app.use(async (ctx,next)=>{ // 上下文
await logger();
return next();
});
// Koa路由 routes
app.use(index.routes(), index.allowedMethods())
app.use(users.routes(), users.allowedMethods())
koa 常用 api
app.listen
app.on
app.use
koa 常用的 工具
koa-router
koa-bodyparser
koa-views
koa-static
koa-session
koa-jwt
koa-helmet
koa-compress
koa-logger
koa/cors 跨域处理
exporess 常用的中间件
express 应用
const express = require('./express');
const path = require('path');
// 模板引擎 koa-views
const app = express();
app.set('views','view'); // 将默认的存放路径更改
app.set('view engine','.html');// 默认使用可以使用html文件
app.engine('.html',require('ejs').__express);//如果遇到.html用ejs来渲染
app.get('/',function(req,res){
console.log(req.a)
res.sendFile(path.resolve(__dirname,'package.json'))
// res.send(301);
})
app.listen(3000);