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

podium podlets 说明的更多相关文章

  1. podium layout 说明

    layout 主要是进行podlets 的组合,同时也提供了context ,fallback,以及传递参数的处理 基本代码 const express = require('express'); c ...

  2. podium micro-frontends 简单试用

    以下是一个简单的podium 试用,包含了layout 以及podlets,使用docker 运行 podium 主要包含了两大部分 podlets 片段服务 layouts 片段组合服务 环境准备 ...

  3. podium服务器端的微前端开发框架

    podium 是一个比较全的微前端开发框架. 具有以下特性 自治开发 强大的组合能力 基于约定的开发模式 podium 包含的组件 podlets 页面片段,是一个独立的http 服务,独立运行的,实 ...

  4. 关于Advertising Campaign

    Advertise Campaigns 是指为了传播企业创意或者宣传主题而采取的一些列的整合营销(IMC)活动,也称为广告战役.广告战役主要在一段明确的时间内,通过不同的媒体渠道投放广告,现在经常会整 ...

  5. 用javascript 面向对象制作坦克大战(二)

    2.   完善地图 我们的地图中有空地,墙,钢,草丛,水,总部等障碍物. 我们可以把这些全部设计为对象. 2.1  创建障碍物对象群       对象群保存各种地图上的对象,我们通过对象的属性来判断对 ...

  6. November 11th, 2017 Week 45th Saturday

    Happiness is a direction, not a place. 快乐是一个方向,不是一个目的. Do you remember those moments in your life wh ...

  7. 每日英语:Auto Makers Accelerate Efforts to Develop Self-Driving Cars

    Big auto makers are steering their efforts to develop cars that drive themselves out of the labs and ...

  8. SharePoint 使用ECMAscript对象模型来操作Goup与User

    这里总结了关于使用ECMAscript对象模型来操作Goup与User的常用情况,内容如下:     1.取得当前Sharepoint网站所有的Groups     2.获取当前登录用户的Title与 ...

  9. Randy Pausch’s Last Lecture

          he University of Virginia American Studies Program 2002-2003.                     Randy Pausch ...

随机推荐

  1. 运行带有Activiti modeler时,出现这样的报错: java.rmi.AccessException: Cannot modify this registry

    最近在做整合Activiti Modeler工作流在线设计器的工作,运行IDEA时,出现了这样一个错误信息: 原因及解决办法:   Activiti默认打开了jmx功能,默认端口为1099,idea中 ...

  2. 使用GitHub搜索技巧

    in:name example 名字中有"example"in:readme example readme中有"example"in:description e ...

  3. OpenResty下载安装教程

    原文链接:http://www.studyshare.cn/software/details/1174/0 一.OpenResty简介 OpenResty是一个全功能的 Web 应用服务器.它打包了标 ...

  4. HDU2577 How to Type

    题目链接 一道DP问题 定义dp[i][j]为敲完第i个字母的最小花费,j=1代表Caps Lock打开,j=0代表Caps Lock关闭,则有: 如果第i个字母为大写: dp[i][1]=min(d ...

  5. Java自学-异常处理 自定义异常

    Java 自定义异常 示例 1 : 创建自定义异常 一个英雄攻击另一个英雄的时候,如果发现另一个英雄已经挂了,就会抛出EnemyHeroIsDeadException 创建一个类EnemyHeroIs ...

  6. 【Mysql技术内幕InnoDB存储引擎】读书笔记

    一.存储引擎 1.InnoDB引擎 设计目标是面向在线事务(OLTP)处理的应用. 支持事务.行级锁.通过多版本并发控制(MVCC)支持高并发.提供一致性非锁定读.next-key locking避免 ...

  7. 编写可维护的JavaScript-随笔(六)

    避免空比较 If(item !== null){ item.sort(); Item.forEach(function(item){ //执行代码 } } } 以上判断中item期待的是数组类型的,但 ...

  8. JavaScript 之 Math对象

    Math对象 Math 对象不是构造函数,它具有数学常数和函数的属性和方法,都是以静态成员的方式提供. 常用方法: Math.PI // 圆周率 Math.random() // 生成随机数,生成0~ ...

  9. JavaScript 获取页面元素

    一.根据 id 获取元素 语法格式: document.getElementById(id); Demo: var main = document.getElementById('main'); co ...

  10. elasticsearch 分词后聚合

    es 对于text类型其实是分词存储的,但是有时候在聚合的时候,会发现这种情况下,会把字段分词后进行聚合.例如(1)A,B  (2)B,C   然后聚合后B就是2个,A和C各一个. 这需要看业务需求了 ...