podium podlets 说明
2024-09-03 13:39:14
podlets 提供了一个页面片段服务,podlets 包含了一些元数据信息,通过json 暴露,
主要包含以下内容
- 一个 http endpoint 提供主要内容
- 一个 http endpoint 提供fallback 功能,方便在主要内容不可读的时候提供访问
- 一些客户端js文件 的http endpoint 集合
- 一些客户端css 文件的http endpoint 集合
- http endpoint 需要是公共可访问的
podlets 开发
可以通过@podium/podlet 开发podlets
- podlets 简单代码
@podium/podlet 提供了好几种框架的支持
一个简单express 的demo
const express = require('express');
const Podlet = require('@podium/podlet');
const app = express();
const podlet = new Podlet({
name: 'myPodlet',
version: '1.0.0',
pathname: '/',
content: '/',
fallback: '/fallback',
development: true,
});
app.use(podlet.middleware());
app.get(podlet.content(), (req, res) => {
res.status(200).podiumSend(`
<div>
This is the podlet's HTML content
</div>
`);
});
app.get(podlet.manifest(), (req, res) => {
res.status(200).send(podlet);
});
app.listen(7100);
- fallback
参考格式
const podlet = new Podlet(/*...*/);
const app = express();
app.get(podlet.fallback(), (req, res) => {
res.status(200).podiumSend("<div>It didn't work :(</div>");
});
- context 配置
context 暴露的对象,可以方便用来进行不同语言不同设备以及不同开发模式的处理(进行渲染处理)
比如获取区域
app.use((req, res, next) => {
// res.locals.podium.context.locale
next();
});
获取不同设备
app.get('/', (req, res, next) => {
// res.locals.podium.context.deviceType
});
同时我们也可以设置默认的值
// Set default locale to Norwegian
podlet.defaults({
locale: 'nb-NO',
});
- proxy
因为podlets 并不强制大家运行podlet 以及layout 服务,我们也可以处理其他api 的地址
参考配置:
podlet.proxy({ target: '/api', name: 'api' });
app.get('/api/cats', (req, res) => {
res.json([{ name: 'fluffy' }]);
});
// http://localhost:1337/myLayout/podium-resource/myPodlet/api/cats
app.get('/api/dogs', (req, res) => {
res.json([{ name: 'rover' }]);
});
// http://localhost:1337/myLayout/podium-resource/myPodlet/api/dogs
- 本地开发环境配置以及问题解决
reload 问题:
通过nodemon 解决
npx nodemon server.js
开发模式:
development: true,
context 默认值处理
podlet.defaults({
mountOrigin: 'http://localhost:7100',
});
css&&js
podlet.js({ value: 'http://cdn.mysite.com/scripts.js' });
podlet.css({ value: 'http://cdn.mysite.com/styles.css' });
代理绝对路径
podlet.proxy({ target: 'http://google.com', name: 'google' });
参考资料
https://podium-lib.io/docs/podlet/getting_started
https://github.com/rongfengliang/podium-docker-compose
最新文章
- 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”
- Node.js Express 框架学习
- box-shadow 的一些使用
- css3 3d效果及动画学习
- Tomcat内存溢出的原因
- 《JavaScript 闯关记》之初探
- TinyMCE实现简单的本地上传
- 基础篇系列,JAVA的并发包 - 锁
- 给Linux系统/网络管理员准备的Nmap命令的29个实用范例
- Linux 磁盘和文件管理系统 文件打包解压备份 VIM、VI编辑器
- 在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合
- Flink--基于mysql的sink和source
- easyui改变tab标题
- 反编译微信小程序
- ios技术篇:导航栏push遵循的三个规则
- P1373 小a和uim之大逃离(动态规划)
- WAVE文件格式解析
- zw版【转发&#183;台湾nvp系列Delphi例程】HALCON MaxImage2
- WCF 客户端调用服务操作的两种方法
- PHP:第三章——PHP中表达式函数和匿名函数
热门文章
- django开发_七牛云CNAME解析
- FusionInsight大数据开发---SparkStreaming概述
- Java四种权限修饰符 在创建类中的使用
- 程序员不装x能行?先给登录来一个图形验证码!(canvas实现)
- mysql给某个用户单个表权限
- Java自学-数字与字符串 字符串转换
- 巧记 In/hasOwnProperty/for…in/for…of/forEach区别
- JavaScript 之 Array 对象
- Springboot2 jpa druid多数据源
- 解决selenium.common.exceptions.WebDriverException: Message: &#39;chromedriver&#39; executable needs to be in P