摘要:方案選擇基礎框架請求服務代理轉發其余日志處理,路由,后端模板引擎,異步語法自己選擇了。
初衷:我并不想改變團隊原有開發模式,前端負責展現和界面路由,后端單純負責API;
要解決的問題:
1.服務端渲染(部分界面【商品界面】需要使用服務器端渲染,但是管理類型界面并不需要服務器端渲染);
2.由于問題1的出現,所以我們需要服務器端渲染,需要控制路由,需要部分界面使用后端模板引擎。
3.當然我不想寫兩套api請求方式,Node.js可以搞定使用一套方案;
4.后臺服務請求當然走代理服務。
方案選擇:
1.koa2基礎框架
2.axios--api請求服務
3.http-proxy--代理轉發
其余日志處理,路由,后端模板引擎,異步語法自己選擇了。
具體實現【僅供參考】:
1.代理轉發【寫koa2中間件】:匹配請求路由代理轉發目標服務器
//中間件request_proxy.js var httpProxy = require("http-proxy"); //EG:http://localhost:3001/rs-server-api/v1/goods/list var proxy = new httpProxy.createProxyServer({ target: "https://stage.recovery-server.jiahuyunyi.com/", changeOrigin: true // for vhosted sites, changes host header to match to target"s host }); var response_formatter = (ctx) => { proxy.web(ctx.req, ctx.res); ctx.body = ctx.res; } var url_filter = (pattern) => { return async (ctx, next) => { var reg = new RegExp(pattern); try { //通過正則的url進行格式化處理 if (reg.test(ctx.originalUrl)) { response_formatter(ctx); } await next(); } catch (error) { //繼續拋,讓外層中間件處理日志 throw error; } } } module.exports = url_filter;
const request_proxy = require("./middlewares/request_proxy"); //匹配路由/rs-server-api/v1/ app.use(request_proxy("^/rs-server-api/v1/"));
2.后端服務:當然ajax請求也是用這個js
import axios from "axios"; //沒有權限直接跳轉到登錄界面 function fetchGoodsList() { return axios.get("http://localhost:3001/rs-server-api/v1/goods/list"); } export default { fetchGoodsList: fetchGoodsList }
在controller中調用服務
var router = require("koa-router")(); var Service = require("../services/index.js"); router.get("/", async function (ctx, next) { ctx.state = { title: await Service.fetchGoodsList().then((response) => { return JSON.stringify(response.data); }) }; await ctx.render("index", { }); }) module.exports = router;
最后項目DEMO地址,基于很多位前輩代碼,僅僅加入代理轉發
https://github.com/HereSincer...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/81389.html
摘要:洋蔥圈處理模型?;诘撵`活強大的中間件機制。參考官網提供的基本,不在贅述部分實現,參考源碼分析常用服務端口監聽返回適用于方法的回調函數來處理請求。 本文 github 地址: https://github.com/HCThink/h-blog/blob/master/source/koa2/readme.md github 首頁(star+watch,一手動態直達): https:...
摘要:但是這篇文章除去科普基本概念外,更重要的就是介紹中間件思想,并自己來實現一個服務端緩存中間件。 showImg(https://segmentfault.com/img/remote/1460000011043576); Express 作為 Node.js 的框架,如今發展可謂如日中天。我很喜歡其靈活、易擴展的設計理念。尤其是該框架的中間件架構設計:使得在應用中加入新特性更加標準化、...
摘要:實現的四大模塊上文簡述了源碼的大體框架結構,接下來我們來實現一個的框架,筆者認為理解和實現一個框架需要實現四個大模塊,分別是封裝創建類構造函數構造對象中間件機制和剝洋蔥模型的實現錯誤捕獲和錯誤處理下面我們就逐一分析和實現。 什么是koa框架? ? ? ? ?koa是一個基于node實現的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優雅、簡潔、表達力強、自由度...
摘要:實現的四大模塊上文簡述了源碼的大體框架結構,接下來我們來實現一個的框架,筆者認為理解和實現一個框架需要實現四個大模塊,分別是封裝創建類構造函數構造對象中間件機制和剝洋蔥模型的實現錯誤捕獲和錯誤處理下面我們就逐一分析和實現。 什么是koa框架? ? ? ? ?koa是一個基于node實現的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優雅、簡潔、表達力強、自由度...
閱讀 853·2021-11-24 09:38
閱讀 1085·2021-10-08 10:05
閱讀 2577·2021-09-10 11:21
閱讀 2800·2019-08-30 15:53
閱讀 1827·2019-08-30 15:52
閱讀 1964·2019-08-29 12:17
閱讀 3418·2019-08-29 11:21
閱讀 1609·2019-08-26 12:17