為什麼要用nodejs做中間層
阿新 • • 發佈:2018-11-12
為什麼要用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個部分:資料(模型)、展現層(檢視)和使用者互動(控制器)。換句話說,一個事件的發生是這樣的過程:
使用者和應用產生互動。
控制器的事件處理器被觸發。
控制器從模型中請求資料,並將其交給檢視。
檢視將資料呈現給使用者。
我們不用類庫或框架就可以實現這種MVC架構模式。關鍵是要將MVC的每部分按照職責進行劃分,將程式碼清晰地分割為若干部分,並保持良好的解耦。這樣可以對每個部分進行獨立開發、測試和維護。
原文地址: https://blog.csdn.net/baidu_31333625/article/details/66970196