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. 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询

    mybatis实现 主从表 left join  1:n 一对多 分页查询   主表从表都有查询条件+count 需求: ======================================= ...

  2. Linux学习笔记之Linux系统的swap分区

    0x00 什么是swap分区 Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用.那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空 ...

  3. asp.net core 系列之Performance的 Response compression(响应压缩)

    本文,帮助了解响应压缩的一些知识及用法(大部分翻译于官网,英文水平有限,不准确之处,欢迎指正). 什么是响应压缩?响应压缩简单的说就是为了减少网络带宽,而把返回的响应压缩,使之体积缩小,从而加快响应的 ...

  4. vmare-Tools重启后也不生效的问题

    这也是一个关于 Tools的问题,如题,既不能互相拷贝文件,也不能调节分辨率,好像是因为 Tools 的版本问题 需要进行的操作: 1:sudo apt-get install open-vm-too ...

  5. Nginx反向代理其他使用方式

    Nginx反向代理在生产环境中使用很多的. 场景1: 域名没有备案,可以把域名解析到香港一台云主机上,在香港云主机做个代理,而网站数据是在大陆的服务器上. 示例1: server { listen 8 ...

  6. jquery获取元素各种宽高及页面宽高

    如何使用jquery来获取网页里各种高度? 示例如下: $(document).ready(function(){  var divWidth = $("#div").width( ...

  7. 33、vue中的事件修饰符.stop、.prevent、.self、.capture、.once

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. xenserver 备份和还原

    1. 备份和还原xenserver host系统 //备份 # xe host-backup file-name=[name.xbk] -s [ip] -u [username] -pw [passw ...

  9. springboot2.1.3 配置前后端跨域问题

    很简单,创建一个配置类即可,如下: package com.app.gateway.common.config; import org.springframework.context.annotati ...

  10. 浅谈Python设计模式 - 原型模式

    声明,本系列文章主要参考<精通Python设计模式>一书,并且参考一些资料,结合自己的一些看法来总结而来. 在<精通Python设计模式>中把设计模式分为三种类型: 创建型模式 ...