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

最新文章

  1. 【记录】VS2012新建MVC3/MVC4项目时,报:此模板尝试加载组件程序集“NuGet.VisualStudio.Interop...”
  2. Node.js Express 框架学习
  3. box-shadow 的一些使用
  4. css3 3d效果及动画学习
  5. Tomcat内存溢出的原因
  6. 《JavaScript 闯关记》之初探
  7. TinyMCE实现简单的本地上传
  8. 基础篇系列,JAVA的并发包 - 锁
  9. 给Linux系统/网络管理员准备的Nmap命令的29个实用范例
  10. Linux 磁盘和文件管理系统 文件打包解压备份 VIM、VI编辑器
  11. 在WinForm应用程序中快速实现多语言的处理(2)--开发框架模块的整合
  12. Flink--基于mysql的sink和source
  13. easyui改变tab标题
  14. 反编译微信小程序
  15. ios技术篇:导航栏push遵循的三个规则
  16. P1373 小a和uim之大逃离(动态规划)
  17. WAVE文件格式解析
  18. zw版【转发&#183;台湾nvp系列Delphi例程】HALCON MaxImage2
  19. WCF 客户端调用服务操作的两种方法
  20. PHP:第三章——PHP中表达式函数和匿名函数

热门文章

  1. django开发_七牛云CNAME解析
  2. FusionInsight大数据开发---SparkStreaming概述
  3. Java四种权限修饰符 在创建类中的使用
  4. 程序员不装x能行?先给登录来一个图形验证码!(canvas实现)
  5. mysql给某个用户单个表权限
  6. Java自学-数字与字符串 字符串转换
  7. 巧记 In/hasOwnProperty/for…in/for…of/forEach区别
  8. JavaScript 之 Array 对象
  9. Springboot2 jpa druid多数据源
  10. 解决selenium.common.exceptions.WebDriverException: Message: &#39;chromedriver&#39; executable needs to be in P