之前在知道創(chuàng)宇的項(xiàng)目中有用到過nodejs作中間層,當(dāng)時(shí)還不太理解其背后真正的原因;后來在和一位學(xué)長(zhǎng)交談的過程中,也了解到螞蟻金服也在使用類似的方法,使用nodejs作為中間層去請(qǐng)求真實(shí)后臺(tái)的數(shù)據(jù);之后人到北京,也見到現(xiàn)在的公司也在往nodejs后端方向靠攏。隨著知識(shí)的增加,加之自己查閱資料,慢慢總結(jié)出了一些原理。
為什么要前后端分離
1、開發(fā)效率高
前端開發(fā)人員不用苦苦地配置各種后端環(huán)境,安裝各種莫名的插件,擺脫對(duì)后端開發(fā)環(huán)境的依賴,一門心思寫前端代碼就好,后端開發(fā)人員也不用時(shí)不時(shí)的跑去幫著前端配環(huán)境。
2、職責(zé)清晰,找bug方便
以前有了bug,前端推后端,后端推前端,不知道該誰去該,前后端分離,是誰的問題就該誰去處理,處理問題方便很多,后期代碼重構(gòu)方便,做到了高可維護(hù)性。
從做微信小程序引發(fā)的思考
最近出于愛好,寫了個(gè)音樂播放器的微信小程序(原本想用vue寫的,后來因?yàn)楣緲I(yè)務(wù)原因,年后可能去做微信小程序,所以就換了前端技術(shù)棧),源碼在我的GitHub上: wx-audio 。
思考:后端出于性能和別的原因,提供的接口所返回的數(shù)據(jù)格式也許不太適合前端直接使用,前端所需的排序功能、篩選功能,以及到了視圖層的頁面展現(xiàn),也許都需要對(duì)接口所提供的數(shù)據(jù)進(jìn)行二次處理。這些處理雖可以放在前端來進(jìn)行,但也許數(shù)據(jù)量一大便會(huì)浪費(fèi)瀏覽器性能。因而現(xiàn)今,增加node端便是一種良好的解決方案。
在我的微信小程序demo的server端代碼中,我通過http模塊對(duì)真實(shí)后臺(tái)(網(wǎng)易云音樂API)發(fā)起http請(qǐng)求,然后通過express模塊搭建后端服務(wù)。
發(fā)起請(qǐng)求:
// http.js var formatURL = require('./formatURL.js'); var http = require('http'); const POSThttp = function(request){ return new Promise((resolve, reject) => { let body = ''; // http模塊拿到真實(shí)后臺(tái)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;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。