成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

簡(jiǎn)易Node中間層【只作為中間層】

CntChen / 2118人閱讀

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

初衷:我并不想改變團(tuán)隊(duì)原有開(kāi)發(fā)模式,前端負(fù)責(zé)展現(xiàn)和界面路由,后端單純負(fù)責(zé)API;
要解決的問(wèn)題:
1.服務(wù)端渲染(部分界面【商品界面】需要使用服務(wù)器端渲染,但是管理類型界面并不需要服務(wù)器端渲染);
2.由于問(wèn)題1的出現(xiàn),所以我們需要服務(wù)器端渲染,需要控制路由,需要部分界面使用后端模板引擎。
3.當(dāng)然我不想寫(xiě)兩套api請(qǐng)求方式,Node.js可以搞定使用一套方案;
4.后臺(tái)服務(wù)請(qǐng)求當(dāng)然走代理服務(wù)。
方案選擇:
1.koa2基礎(chǔ)框架
2.axios--api請(qǐng)求服務(wù)
3.http-proxy--代理轉(zhuǎn)發(fā)
其余日志處理,路由,后端模板引擎,異步語(yǔ)法自己選擇了。
具體實(shí)現(xiàn)【僅供參考】:
1.代理轉(zhuǎn)發(fā)【寫(xiě)koa2中間件】:匹配請(qǐng)求路由代理轉(zhuǎn)發(fā)目標(biāo)服務(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 {
            //通過(guò)正則的url進(jìn)行格式化處理
            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ù):當(dāng)然ajax請(qǐng)求也是用這個(gè)js

import axios from "axios";
//沒(méi)有權(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;

最后項(xiàng)目DEMO地址,基于很多位前輩代碼,僅僅加入代理轉(zhuǎn)發(fā)
https://github.com/HereSincer...

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/81389.html

相關(guān)文章

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

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

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

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

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

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

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

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

    liangzai_cool 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<