中间层的node

在很多大公司的架构里,node都是作为中间层,主要负责下面几种任务:

1.中转一些请求,串接服务;同时也过滤一些基本的io请求

2.前端项目路由的相关业务处理

3.渲染前端模板(vue\react首屏)

3负责架构中部分专门的功能(以前公司将视频转码放node服务器上进行。。)

目前我看到的最常见的是前三种。作为一个服务端程序,除了路由、IO和中转请求,当然还可以做到其他服务器能做的事情。但是上层js单线程的异步结构实现,node的优势注定是面向高并发(或者说IO密集的场景),复杂逻辑和计算方面并不占优势。

从前端的角度,node虽然让我们可以接触后台的东西,只用js就可以捣鼓一些后台的功能,但是当我们项目需要一个稳定稳健的后台时,还是会把目光放到java、python等技术栈上。

[所以node程序一般会用forever或pm2这类进程管理工具,在服务崩了之后自动重启]

以前在公司时,node部分是老大写的,自己一直没写过中转请求,今天试了下,还是蛮简单的:

//中转前端请求,获取第三方服务的天气数据
var https = require('https');
module.exports = function(app) {
  app.get('/realtimeWeather', function(req, res) {
    let { cid } = req.query;
    let body = '';
    https.get(
      `https://free-api.heweather.com/s6/weather/now?key=xxx&location=${cid}`,
      function(weatherInfoRes) {
        weatherInfoRes
          .on('data', function(data) {
            body += data;
          })
          .on('end', function() {
            let { HeWeather6 } = JSON.parse(body);
            let { basic, now, update, status } = HeWeather6[0];
            if (status !== 'ok') {
              res.send(JSON.stringify({ success: false, status }));
            } else {
              let { location } = basic;
              let { cond_txt, tmp, wind_dir } = now;
              let { loc } = update;
              res.send(
                JSON.stringify({
                  location,
                  cond_txt,
                  tmp,
                  wind_dir,
                  updateTime: loc,
                  success: true
                })
              );
            }
          });
      }
    ).on('error', function(e) {
        console.log('log weather error:');  //假如https.get抛出错误
        console.error(e);
        res.send(JSON.stringify({ success: false, status:"请求天气信息时发生错误" }));
      });
  });
};

我这里用的是和风天气的免费api,要先注册后使用。get请求中的key是用户私有的key,location是接口必须传送的城市编码。

另外,和风天气的城市编码文档是一份excel文件,而且有些字段不是我们必须的,只能自己转json,然后发现了一个在线excel转json的工具蛮好用:https://www.bejson.com/json/col2json/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值