ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

epress proxy+ nodeesi 实现简单微前端

2022-01-03 13:32:30  阅读:181  来源: 互联网

标签:www http https app epress proxy nodeesi esi


实际上我以前也写过类似的(ssi+client esi 的)以下是一个服务器端的esi 参考玩法(内容来自youtube)

参考图

 

 

环境准备

  • http proxy 部分代码
const app = require("express")()
const proxy = require("express-http-proxy")
const ESI = require('nodesi');
const esi = new ESI({
});
app.use('/', proxy('http://localhost:8000', {
    userResDecorator: function (proxyRes, proxyResData) {
        console.log( proxyRes.headers["content-type"])
        return proxyRes.headers["content-type"] === "text/html" || proxyRes.headers["content-type"] === "text/html; charset=utf-8" ?
            esi.process(proxyResData.toString()): proxyResData
    }
}));
 
app.listen(3000)
  • origin 部分
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>demo app</title>
</head>
<body>
    demo page
    <esi:include src="http://localhost:9090/app.html"></esi:include>
</body>
</html>
  • esi 部分
<div class="demoapp">rong demo</div>
  • 项目结构

 

 

启动&&效果

  • 启动

    使用独立的终端

cd proxy 
node app.js
cd esi 
live-server --port=9090
cd server
live-server --port=8000
  • 效果

 

 

说明

以上是一种基于服务器端渲染的实现,而且是基于代码处理的,实际上我们可以基于现有的esi 中间件(esigate,varnish,nginx 可以方便的解决类似问题)
而且基于组件渲染模式也是一种很不错的微前端实践,业界开源类似的也不少

参考资料

https://www.npmjs.com/package/express-http-proxy
https://github.com/taf2/nginx-esi
http://www.squid-cache.org/Doc/config/esi_parser/
https://varnish-cache.org/docs/6.0/users-guide/esi.html
https://www.npmjs.com/package/nodesi
https://www.youtube.com/watch?v=4PoNBZl4t0Y
http://www.esigate.org/

标签:www,http,https,app,epress,proxy,nodeesi,esi
来源: https://www.cnblogs.com/rongfengliang/p/15759331.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有