为什么要用nodejs做中间层

后端出于 性能 和别的原因,提供的接口所返回的 数据格式也许不太适合前端 直接使用。
前端所需的 排序功能筛选功能 ,以及到了视图层的 页面展现 ,也许都需要 对接口 所提供的 数据进行二次处理 。这些处理虽可以放在前端来进行,但也许数据量一大便会浪费浏览器性能。因而现今,增加node端便是一种良好的解决方案。

前后端分离demo

http.js (node中间层 )

var formatURL = require('./formatURL.js');
var http = require('http');
const POSThttp = function(request){return new Promise((resolve, reject) => {let body = '';// http模块拿到真实后台api的数据http.get(formatURL(request.body.musicname), function(res){res.on('data', (data) => {body += data;}).on('end', () => {// 格式化const {name,audio: musicUrl,page,album: {name: musicName,picUrl,},artists: [{name: singer,}],} = JSON.parse(body).result.songs[0];const reply = {name,picUrl,musicUrl,page,singer,};resolve(reply);});});});
};
module.exports = POSThttp;

index.js(前端页面)

var express = require('express');
var POSThttp = require('./POSThttp.js');
var bodyParser = require('body-parser');
// 使用body-parser解析post请求的参数,如果没有,req.body为undefined。
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true
}));
app.post('/', (req, res) => {POSThttp(req).then((data) => {res.send(data);}).catch((err) => {res.send(err);});
});
app.listen(3000, () => {console.log('open wx-audio server successful!')
});

这几十行代码也就实现了一个简单的中间层的demo,并做到了在中间层格式化参数,便于前端进行使用的过程。


现今网站存在问题

现今大公司的老项目(包括百度、搜狐等公司所采用的后端渲染等),或多或少都会存在这样的一些 问题 :

  • 前端代码越来越复杂
  • 前后端依旧高度耦合
  • 无法良好的支持跨终端

前辈们提出的解决方案

  • 前端代码越来越复杂,我们希望尽可能地减少工作量,开始使用类似MV*的分层结构,使前端后分离成为必要;

  • 前端需要处理更多的工作,希望有权操控View,Router(如:SPA的尝试);

  • 各种终端设备的兴起,需要我们把页面适配到更多的地方。

客户端的MVC

关于MVC的定义:

MVC是一种设计模式,它将应用划分为3个部分:数据(模型)、展现层(视图)和用户交互(控制器)。换句话说,一个事件的发生是这样的过程:

  1. 用户和应用产生交互。
  1. 控制器的事件处理器被触发。
  1. 控制器从模型中请求数据,并将其交给视图。
  1. 视图将数据呈现给用户。

我们不用类库或框架就可以实现这种MVC架构模式。关键是要将MVC的每部分按照职责进行划分,将代码清晰地分割为若干部分,并保持良好的解耦。这样可以对每个部分进行独立开发、测试和维护。

原文地址: https://blog.csdn.net/baidu_31333625/article/details/66970196

为什么要用nodejs做中间层相关推荐

  1. nodejs做中间层_nodejs做中间层,向后端取数据

    router.get('/', function(req, res, next) { var post_data={username:'yuzhou001',password:'123456'};// ...

  2. 教程: nodejs 做微信公众号开发,回复 xml 消息

    教程: nodejs 做微信公众号开发,回复 xml 消息 首先需要你的后台跟服务器已经可以建立连接,这个不再冗述看官方教程就好 接入指南 .此篇介绍的是如何获取用户发来的信息,并回复它. 一.接收 ...

  3. nodejs php做平台,用nodejs做一套康养管理系统(1)--基础框架搭建

    用nodejs做一套康养管理系统(1)--基础框架搭建 这两天准备开始一个康养项目管理系统的开发,闲来无事想将整个流程写下来,并将本项目开发代码开源.首先本次先梳理下结构,画一个拓扑结构图,再根据结构 ...

  4. 如何做一个国产数据库(六) 网络传输 nodejs做测试客户端

    如何做一个国产数据库一 如何做一个国产数据库二 如何做一个国产数据库三 如何做一个国产数据库四 如何做一个国产数据库五 网络实战服务器 我们再四中说过使用tcp进行协议的链接,对我们所定义的协议如果有 ...

  5. 用 nodejs 做反向代理服务器

    时下不少场景,都是申请一个 VPS 主机来托管运行 Web 项目的,小弟我也不例外--购买了一个小型的 CentOS VPS 使用着.在使用的过程中,面临一个问题,就是同一类型的服务端环境还好--但如 ...

  6. Nodejs做后端,实现文件压缩下载的几种方案(archiver、compressing、linux的zip命令):

    一. Archiver 1. 安装 npm install archiver 2. 使用 由于需要做文件操作,所以我们需要将fs库也引进来 先创建一个可写流,用于传入压缩包数据 再创建一个archiv ...

  7. 用NodeJs做一个小爬虫

    作者:北京起步科技前端研究员,专注分享HTML5 App快速开发工具 WeX5 的黑魔法以及相应的前端技术. 前言 利用爬虫可以做很多事情,单身汉子们可以用爬虫来收集各种妹子情报,撩妹族们可以用爬虫收 ...

  8. 用nodejs做一个svn密码修改页面

    linux上配置好svn服务后,管理修改密码还得去手工修改passwd这个文件,略麻烦,其实网上应该有配套的web管理修改界面程序.但我想自己用nodejs写一个,因为用node不用配置复杂的服务器. ...

  9. [electron 工具] 使用 electron、vue 和 nodejs 做一个网件路由器 SOAP API 测试工具之一 ( 简介 )...

    (简介直接将主页的介绍复制过来好了) Soap-Sender 主页 1.0.1 更新记录 优化基本设置页面判断 IP 和密码的响应时间 保存基本设置页面的设置 历史记录添加 Response Time ...

最新文章

  1. jvm性能调优实战 -56没有WHERE条件的SQL语句引发的OOM MAT 排查步骤
  2. 领域驱动设计,盒马技术团队这么做
  3. python爬虫小工具——editplus
  4. js判断字符串中某个字母出现次数最多
  5. android svg指纹录取动画_你知道几种前端动画的实现方式?
  6. DAY04 WINDOWS 文件的共享以及FTP服务器的搭建
  7. ajax上传 java_使用Ajax进行文件与其他参数的上传功能(java开发)
  8. Linux系统编程——vfork() 函数详解
  9. poj Washing Clothes挺好的一道01背包
  10. java冒险岛_JAVA开发类似冒险岛的游戏Part1
  11. 用MediaCreationTool做纯净版Windows 10系统U盘
  12. 中国网络游戏未来发展方向
  13. 计算机二级vbf资源百度云,2018年计算机二级考试考前冲刺卷
  14. L3级自动驾驶接管实验测试平台及其应用研究
  15. python 制作电子相册 视频,如何将多张图片制作成电子相册呢
  16. 全面提高影像科图像质量(二)——CT板块
  17. 判断一个数是否为两个素数乘积_如何高效筛选素数?
  18. 提高晚上学习效率的10个方法
  19. condex i7p php q_十大最流行PHP框架排名
  20. 如何为 Exchange 用户添加联系人头像

热门文章

  1. spark.mllib:bagging方法
  2. 聊聊高并发(二十)解析java.util.concurrent各个组件(二) 12个原子变量相关类
  3. Spine 2D animation for games
  4. spring4.0之二:@Configuration的使用
  5. Nubiers to follow
  6. ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)
  7. #!(sha-bang)--脚本的开始
  8. RedHat Linux AS4 LAMP经典网站搭建实例
  9. Delphi中的时间操作技术(1)
  10. Table还是CSS,请您说说您的见解