1. 程式人生 > >為什麼要用nodejs做中間層

為什麼要用nodejs做中間層

為什麼要用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為undefinedvar 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. 使用者和應用產生互動。

  2. 控制器的事件處理器被觸發。

  3. 控制器從模型中請求資料,並將其交給檢視。

  4. 檢視將資料呈現給使用者。

我們不用類庫或框架就可以實現這種MVC架構模式。關鍵是要將MVC的每部分按照職責進行劃分,將程式碼清晰地分割為若干部分,並保持良好的解耦。這樣可以對每個部分進行獨立開發、測試和維護。

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