美文网首页
node中间件实践-资料记录

node中间件实践-资料记录

作者: YellowPoint | 来源:发表于2019-12-11 15:02 被阅读0次
  1. node-middleware

  2. nodejs中间层实践(express)

    • 有一步步的详细代码
  3. 为什么互联网公司开始用node.js做web服务的中间件?有什么好处吗? - 天猪的回答 - 知乎

    • 乍一看,似乎这一层一直都存在,只不过是由后端同学维护而已。
    • 我们知道,前端贴近用户侧,需求的变化太快了,后端同学来维护会很累。
    • 在 BFF 理念中,最重要的一点是:服务自治,谁使用谁开发,即它应该由前端同学去维护
  4. Serverless For Frontend 前世今生

    • 服务端接口,究竟是面向 UI 还是通用服务?
    • 一句话阐述:让纯前端开发者,只需写几个 Function 即可使用到后端相关的能力。
  5. (node去请求数据再拼接再输出,会不会慢?node的请求是服务器内部的,会很快?)

  6. 爱奇艺 PC Web Node.js 中间层实践

    • (有代码片段,比较详细丰富)
    • 由nginx做接口转发、负载,varnish做数据缓存层,node是业务处理层,在4核服务器上启动4个node进程(跟cpu核数对应),通过nginx的ip_hash做负载均衡,将请求均分给各个node进程,充分利用cpu的性能;node进程在收到请求后会通过内网调用发送http请求获取后端接口数据;varnish是一款高性能、开源的反向代理服务器和缓存服务器,我们在nginx跟node之间加了一层varnish缓存系统,通过配置在varnish缓存整条接口请求,减少相同请求的透传提高中间层服务性能。
9gse77o4gk.jpg
  • 上图可学习的;对象结构的写法、object().keys()是啥、throw new ApiError、async是否就是return的promise
  • (去看看优秀代码,不用纠结全部看懂,就是去看看类似的需求的写法,如其他项目http是如何封装的,async的错误处理)
  • (中间层还能来做错误搜集和数据监控)
  1. 中间层接口由使用接口的前端工程师开发,对展现和接口的功能更加熟悉,避免了以前的工作模式中接口方跟各方的需求对接、沟通、联调时间,这样使得项目的推进更加顺利,项目迭代会更快;

  2. 【原创】NodeJS中间件机制学习

  • koa2框架的中间件机制实现得非常简洁和优雅,这里学习一下框架中组合多个中间件的核心代码。
clipboard.png
// async函数自动返回Promise对象
const middleware2 = async (req, res, next) => {
  console.log('middleware2 start')
  await new Promise(resolve => {
    setTimeout(() => resolve(), 1000)
  })
  await next()
  console.log('middleware2 end')
} 

(延时的写法)

  1. nodeJs搭建中间层的一次实践

    • 有github仓库代码
    • 使用 koa 搭建 node 中间层服务器

使用 koa-bodyparser 中间件解析请求参数

使用 koa-router 中间件配置路由

自定义 restful api 中间件

使用 axios 来转发封装请求

完善路由、控制器

  1. 如何选择正确的Node框架:Express,Koa还是Hapi?
  2. 貌似koa和中间件相关的插件多一些,且async的写法更清晰,就用这个试试吧
  3. Koa的基本使用
  • 这个有代码,可以参考着写写
  1. Koa 系列 — 如何编写属于自己的 Koa 中间件
  • 下面代码很清晰的看出了洋葱模型
const Koa = require('Koa');
const app = new Koa();

// 最外层的中间件
app.use(async (ctx, next) => {
    await console.log(`第 1 个执行`);
    await next();
    await console.log(`第 8 个执行`);
});

// 第二层中间件
app.use(async (ctx, next) => {
    await console.log(`第 2 个执行`);
    await console.log(`第 3 个执行`);
    await next();
    await console.log(`第 6 个执行`);
    await console.log(`第 7 个执行`);
});

// 最里层的中间件
app.use(async (ctx, next) => {
    await console.log(`第 4 个执行`);
    ctx.body = "Hello world.";
    await console.log(`第 5 个执行`);
});

app.listen(3000, () => {
    console.log(`Server port is 3000.`);
}) 
  1. APIJSON 后端接口和文档自动化,前端(客户端) 定制返回JSON的数据和结构!
  • 7.3k star
  • 对前后端接口调试的痛点分析很在理,就是不知道用起来怎么样

相关文章

网友评论

      本文标题:node中间件实践-资料记录

      本文链接:https://www.haomeiwen.com/subject/kywogctx.html