Easyblocks
Live demoGithubOfficial website
  • Introduction
  • Getting started
  • Essentials
    • Editor page
    • Configuration
    • Rendering content
    • No-Code Components
      • Schema
      • styles function
      • editing function
    • Custom types
    • External data
    • Templates
    • Backend
Powered by GitBook
On this page
  • Building the document
  • Rendering content
  • External data
  • Can I render in non-React environment? Like Vue.js or pure HTML?
  1. Essentials

Rendering content

Building the document

In order to render the Easyblocks document it must first go through a so-called "build phase", which is done by buildDocument function from our SDK. This function prepares the document for rendering:

import { buildDocument } from "@easyblocks/core";

const { renderableDocument } = await buildDocument({
  documentId: "<your_document_id>",
  config: easyblockConfig,
  locale: "<your_desired_locale>",
});

buildDocument parameters

  • documentId - identifier of the document you want to build

  • config - your Easyblocks config

  • locale - locale's code for which you want to build content

The result of buildDocument is an object with a property renderableDocument which is of type RenderableDocument and it represents content optimised and prepared for rendering.

Rendering content

Rendering content is dona via Easyblocks component:

import { Easyblocks } from "@easyblocks/core";

<Easyblocks
  renderableDocument={renderableDocument}
  components={yourNoCodeComponentInstancesObject}
/>;

External data

The document you build and render might be dependent on external data. If this is the case, you must use externalData property returned from buildDocument function, fetch the requested data and then pass it to Easyblocks via externalData property. Like this:

const { renderableDocument, externalData } = await buildDocument({
  documentId: "<your_document_id>",
  config: easyblockConfig,
  locale: "<your_desired_locale>",
});

// custom fetching external data
const externalDataValues = await customFetch(externalData);

<Easyblocks
  renderableDocument={renderableDocument}
  components={yourNoCodeComponentInstancesObject}
  externalData={externalDataValues} // passing external data for render
/>;

Can I render in non-React environment? Like Vue.js or pure HTML?

If adding React to your bundle is problematic, there are two available options:

  1. Use Preact. Easyblocks relies heavily on React, but there's nothing that prevents you from using Preact in the runtime (when real page is rendered). It will heavily decrease the bundle size.

  2. Pure HTML/CSS. If the code of your No-Code Components doesn't use any useEffect, useState, etc, then you can pre-render content on the server-side and just sent the generated HTML+CSS to the browser. The rendered document is static so you don't need a rehydration phase or virtual DOM tree living in the front-end (it's kind of similar to what Astro or server components do).

PreviousConfigurationNextNo-Code Components

Last updated 1 year ago

Please read guide to understand this process better.

External Data