Open2

Karte Blocks

tomokitomoki

https://tech.plaid.co.jp/karte-blocks-architecture
https://tech.plaid.co.jp/karte-blocks-builder-js

WebサイトにScript一行埋め込むだけ。

<script src="https://cdn-blocks.karte.io/{PROJECT_ID}/builder.js"></script>

ウェブサイト本来のDOMが表示される前に同期的に割り込んで、それを置換している

// DOMの変更設定
const DOM_REWRITES = [{ selector: 'body > div', html: '<div>hello</div>' }];

// DOMがロードされたときに、DOMを変更する
document.addEventListener('DOMContentLoaded', () => {
  DOM_REWRITES.forEach(({ selector, html }) => {
    const element = document.querySelector(selector);
    if (!element) return;
    element.outerHTML = html;
  });
});

  1. Blocksの管理画面で変更DOMの設定を保存
  2. 保存のHook によって、Builder Server へサードパーティスクリプトの生成と配信のリクエストを送信
  3. Builder Serverは、webpackを用い サードパーティスクリプトを生成し、Stroage にアップロード
  4. CDNがStorageからスクリプトを取得して配信
tomokitomoki

KARTE BlocksではChrome Extensionとiframe を使い、管理画面上に外部のウェブサイトをシームレスに組み込む方法を採用しています。