亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

簡易Node中間層【只作為中間層】

CntChen / 2146人閱讀

摘要:方案選擇基礎(chǔ)框架請求服務(wù)代理轉(zhuǎn)發(fā)其余日志處理,路由,后端模板引擎,異步語法自己選擇了。

初衷:我并不想改變團隊原有開發(fā)模式,前端負責展現(xiàn)和界面路由,后端單純負責API;
要解決的問題:
1.服務(wù)端渲染(部分界面【商品界面】需要使用服務(wù)器端渲染,但是管理類型界面并不需要服務(wù)器端渲染);
2.由于問題1的出現(xiàn),所以我們需要服務(wù)器端渲染,需要控制路由,需要部分界面使用后端模板引擎。
3.當然我不想寫兩套api請求方式,Node.js可以搞定使用一套方案;
4.后臺服務(wù)請求當然走代理服務(wù)。
方案選擇:
1.koa2基礎(chǔ)框架
2.axios--api請求服務(wù)
3.http-proxy--代理轉(zhuǎn)發(fā)
其余日志處理,路由,后端模板引擎,異步語法自己選擇了。
具體實現(xiàn)【僅供參考】:
1.代理轉(zhuǎn)發(fā)【寫koa2中間件】:匹配請求路由代理轉(zhuǎn)發(fā)目標服務(wù)器

//中間件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) { 
            //繼續(xù)拋,讓外層中間件處理日志
            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.后端服務(wù):當然ajax請求也是用這個js

import axios from "axios";
//沒有權(quán)限直接跳轉(zhuǎn)到登錄界面
function fetchGoodsList() {
    return axios.get("http://localhost:3001/rs-server-api/v1/goods/list");
}
export default {
    fetchGoodsList: fetchGoodsList
}

在controller中調(diào)用服務(wù)

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地址,基于很多位前輩代碼,僅僅加入代理轉(zhuǎn)發(fā)
https://github.com/HereSincer...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/81389.html

相關(guān)文章

  • koa2 一網(wǎng)打盡(基本使用,洋蔥圈,中間件機制和模擬,源碼分析(工程,核心模塊,特殊處理),核心點

    摘要:洋蔥圈處理模型?;诘撵`活強大的中間件機制。參考官網(wǎng)提供的基本,不在贅述部分實現(xiàn),參考源碼分析常用服務(wù)端口監(jiān)聽返回適用于方法的回調(diào)函數(shù)來處理請求。 本文 github 地址: https://github.com/HCThink/h-blog/blob/master/source/koa2/readme.md github 首頁(star+watch,一手動態(tài)直達): https:...

    william 評論0 收藏0
  • 教你編寫 Node.js 中間件,實現(xiàn)服務(wù)端緩存(附demo源碼)

    摘要:但是這篇文章除去科普基本概念外,更重要的就是介紹中間件思想,并自己來實現(xiàn)一個服務(wù)端緩存中間件。 showImg(https://segmentfault.com/img/remote/1460000011043576); Express 作為 Node.js 的框架,如今發(fā)展可謂如日中天。我很喜歡其靈活、易擴展的設(shè)計理念。尤其是該框架的中間件架構(gòu)設(shè)計:使得在應(yīng)用中加入新特性更加標準化、...

    jerryloveemily 評論0 收藏0
  • KOA2框架原理解析和實現(xiàn)

    摘要:實現(xiàn)的四大模塊上文簡述了源碼的大體框架結(jié)構(gòu),接下來我們來實現(xiàn)一個的框架,筆者認為理解和實現(xiàn)一個框架需要實現(xiàn)四個大模塊,分別是封裝創(chuàng)建類構(gòu)造函數(shù)構(gòu)造對象中間件機制和剝洋蔥模型的實現(xiàn)錯誤捕獲和錯誤處理下面我們就逐一分析和實現(xiàn)。 什么是koa框架? ? ? ? ?koa是一個基于node實現(xiàn)的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優(yōu)雅、簡潔、表達力強、自由度...

    tracymac7 評論0 收藏0
  • KOA2框架原理解析和實現(xiàn)

    摘要:實現(xiàn)的四大模塊上文簡述了源碼的大體框架結(jié)構(gòu),接下來我們來實現(xiàn)一個的框架,筆者認為理解和實現(xiàn)一個框架需要實現(xiàn)四個大模塊,分別是封裝創(chuàng)建類構(gòu)造函數(shù)構(gòu)造對象中間件機制和剝洋蔥模型的實現(xiàn)錯誤捕獲和錯誤處理下面我們就逐一分析和實現(xiàn)。 什么是koa框架? ? ? ? ?koa是一個基于node實現(xiàn)的一個新的web框架,它是由express框架的原班人馬打造的。它的特點是優(yōu)雅、簡潔、表達力強、自由度...

    liangzai_cool 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<