node中轉層的意義:
1.能解決前後端**部署在不同伺服器下時的跨域問題。(實現)
2.合併請求,業務邏輯處理。(實現)
3.單頁應用的首屏服務端渲染。(暫未實現)
環境準備:
node: ^8.11.2
koa: ^2.6.1
koa-router: ^7.4.0
koa-bodyparser: ^4.2.1
const koa = require('koa');const bodyparser = require('koa-bodyparser');
const apicontroler = require('./apicontroler');
global.hostname = "172.16.16.113";
global.port = 8070;
await next();
console.log(`process $ $...`);
});//使用路由處理中介軟體
在server目錄下新建業務介面目錄,本例目錄名為apicontrolers,拿登入模組為例,新建乙個login.js,裡面包含登入模組所需要的所有介面。(獲取驗證碼、登入、獲取選單許可權)
/*獲取圖形驗證碼*/
let getauthcoedfn = async (ctx, next) => ;
function asyncgetauthcode() ,(res)=> );
res.on('end', ()=> )
});req.on("error", (e)=> );
req.end();
})}/*登入*/
let loginfn = async (ctx, next) => ;
let logindata = await asyncpostlogin(authcodekey, json.stringify(postdata));
ctx.set("connection", "keep-alive");
ctx.body = json.parse(logindata);
next()
};function asyncpostlogin(authcodekey, postdata)
},(res)=> ).on('end', ()=> )
});req.on('error', (e)=> );
req.write(postdata);
req.end();
})}/*獲取選單及許可權列表*/
let getpowerlistfn = async (ctx, next) => ;
function asyncgetpowerlist()
},(res)=> ).on('end', ()=> )
});req.on("error", (e)=> );
req.end()
})}module.exports =
以介面功能宣告乙個函式,在此函式中通過node的http模組傳送請求。需要注意的是http.request請求獲取響應頭cookie的方式是tokenstr = res.headers['set-cookie']。
每乙個業務功能js最後暴露出內部所有以介面請求方式+介面位址為key,以對應功能函式為value的物件。
在server目錄下新建乙個apicontroler.js中介軟體(有返回值的函式)。此中介軟體的功能一是讀取apicontrolers目錄下的所有業務js,並引入;二是設定介面請求方式與執行函式的對映關係。
最後暴露出乙個函式返回所有請求介面路徑的集合。
apicontroler.js
const fs = require("fs");function readapifiles(router, dir = '/apicontrolers') ).foreach(f => ...`);
});} if(url.startswith('get')) else if(url.startswith('post')) else`);}}}
module.exports = function (dir) ;
後續此例目前只能用作介面**、合併請求和解決跨域問題,終極目標是能解決spa(單頁應用的)首屏服務端渲染問題。
持續折騰中...
SpringBoot Angular開發實戰一
歪棗網採用前後臺分離設計模式,前端web採用開源的angular框架,後端採用springboot框架 redis快取。資料介面主要用到了 資料 歷史資料等介面。web整體設計介面如下,對技術有興趣的可以一起 交流。左側為選單樹,主要分為兩大類。右側主要為api介面資訊,介面資訊包括請求入參 返回引...
Android遊戲開發之旅(十四) 遊戲開發實戰一
從今天開始android123將開始帶領大家進入android遊戲開發實戰篇,本次我們首個遊戲為2d的基於su ceview的類似橫版卷軸遊戲。第一天我們說下需要做哪些準備 一 遊戲地圖編輯器,在j2me時代我們可能都是用gif分割多幀或bmp上放置多個通過減少檔案頭來壓縮體積,但是在android...
HAL層開發框架介紹
android hal 層即硬體抽象層是google響應廠家 希望不公開原始碼 的要求推出的概念 1,源 和目標位置 源 hardware libhardware目錄,該目錄的目錄結構如下 hardware libhardware hardware.c編譯成libhardware.so,目標位置為 ...