为什么要用nodejs做中间层
為什么要用nodejs做中間層
后端出于 性能 和別的原因,提供的接口所返回的 數(shù)據(jù)格式也許不太適合前端 直接使用。
前端所需的 排序功能、 篩選功能 ,以及到了視圖層的 頁面展現(xiàn) ,也許都需要 對接口 所提供的 數(shù)據(jù)進行二次處理 。這些處理雖可以放在前端來進行,但也許數(shù)據(jù)量一大便會浪費瀏覽器性能。因而現(xiàn)今,增加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的數(shù)據(jù)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請求的參數(shù),如果沒有,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!') });這幾十行代碼也就實現(xiàn)了一個簡單的中間層的demo,并做到了在中間層格式化參數(shù),便于前端進行使用的過程。
現(xiàn)今網(wǎng)站存在問題
現(xiàn)今大公司的老項目(包括百度、搜狐等公司所采用的后端渲染等),或多或少都會存在這樣的一些 問題 :
- 前端代碼越來越復雜
- 前后端依舊高度耦合
- 無法良好的支持跨終端
前輩們提出的解決方案
-
前端代碼越來越復雜,我們希望盡可能地減少工作量,開始使用類似MV*的分層結構,使前端后分離成為必要;
-
前端需要處理更多的工作,希望有權操控View,Router(如:SPA的嘗試);
-
各種終端設備的興起,需要我們把頁面適配到更多的地方。
客戶端的MVC
關于MVC的定義:
MVC是一種設計模式,它將應用劃分為3個部分:數(shù)據(jù)(模型)、展現(xiàn)層(視圖)和用戶交互(控制器)。換句話說,一個事件的發(fā)生是這樣的過程:
我們不用類庫或框架就可以實現(xiàn)這種MVC架構模式。關鍵是要將MVC的每部分按照職責進行劃分,將代碼清晰地分割為若干部分,并保持良好的解耦。這樣可以對每個部分進行獨立開發(fā)、測試和維護。
原文地址: https://blog.csdn.net/baidu_31333625/article/details/66970196
總結
以上是生活随笔為你收集整理的为什么要用nodejs做中间层的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 王者荣耀夺宝多久更新一次
- 下一篇: 妲己的cp是哪个英雄