Client Side Rendering (CSR) Web components

Posted by : on

Category : Client Side Rendering, CSR, Web Component, HTML Web Component, Javascript Web Component


Web components:

Web Components are a set of web platform APIs that allow you to create reusable custom elements with encapsulated functionality. They are a collection of technologies that can be used together to create reusable, encapsulated, and interoperable HTML elements. These components can be used in web applications without the need for any additional frameworks or libraries.

Client Side Rendering:

Client Side Rendering (CSR) is a web development approach where the bulk of the page rendering process is handled by the client’s browser using JavaScript. In CSR, the server typically sends a minimal HTML document, and then JavaScript code is executed in the browser to dynamically generate and render the content.

Express JS:

Fast, unopinionated, minimalist web framework for Node.js

Sample Web component

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Web Components | CSR (Client side rendering Webcomponents, Needs Javascript)</title>
</head>
<body>
<custom-paragraph text="Custom Paragraph"></custom-paragraph>
</body>
<script>
class CustomParagraph extends HTMLElement {
template = document.createElement("template");
constructor() {
super();
const text = this.getAttribute('text');
this.attachShadow({ mode: "open" });
this.template.innerHTML = `
<style>
p {
font-size: 65px;
font-weight: 400;
font-style: italic;
background-image: linear-gradient(to left, #007f4c, #53e3a7);
color: black;
}
</style>
<p>${text}</p>
`;
this.render();
}
render() {
this.shadowRoot.appendChild(this.template.content.cloneNode(true));
}
}
customElements.define("custom-paragraph", CustomParagraph);
</script>
</html> (https://github.com/pradeepin2/web-components-client-side-rendering/blob/main/csr.html)[https://github.com/pradeepin2/web-components-client-side-rendering/blob/main/csr.html]

Rendering Webcomponents in Client served via Express JS:

const express = require("express");
const fs = require('fs');
const app = express();
const port = 3000;
const content = fs.readFileSync("./csr.html","utf-8").toString();
app.get("/csr", async(req,res) => {
res.send(content);
});
app.listen(port, ()=>{
console.log(`Example Client side rendering Webcomponents running on ${port}`);
});
app.listen(port, ()=>{
console.log(`Example Server side app running on: ${port}`);
});

https://github.com/pradeepin2/web-components-client-side-rendering/blob/main/csr.js

### Code Reference:

https://github.com/pradeepin2/web-components-client-side-rendering

This post can be read along with Server side rendering web components post. To get a good picture of difference between client side rendering and server side rendering https://spradeep.com/blog/server-side-rendering-ssr-technique-github-page/#/


About Pradeep Kumar Saraswathi
Pradeep Kumar Saraswathi

PMTS UI at Salesforce, based in California, United States

Email : pradeepin2@gmail.com

Website : https://spradeep.com

About Pradeep Kumar Saraswathi

Hi, I am Pradeep Kumar Saraswathi, globally renowned expert in Building Advanced Digital Platforms and Artificial Integration into Digital platforms with over 18 years of experience across B2B (Business-to-Business), B2C (Business-to-Consumer) and SaaS (Software as a Service) Industries and Technology. I have in-depth knowledge in architecting, developing, and implementing web-based user interfaces and advanced digital platforms, including Digital Experience Platforms, Content Management Platforms, and Analytics Platforms. my expertise drives digital transformation by revolutionizing how businesses interact with customers, ultimately creating significant competitive advantages in todays digital landscape. Currently, I serve as Principal Member of Technical Staff (PMTS) in Software Engineering at Salesforce. In this principal role, I am responsible for development of advanced digital platforms, specifically the Digital Experience Platform at Salesforce, enabling businesses to build digital experiences with clicks, not code. My work impacts millions of users monthly and supports billions of registered users, driving over a billion page views each month, showcasing my pivotal role in shaping the future of digital interactions at scale. Before joining Salesforce, I was an User Interface Architect at Gainsight, where I was responsible for the UI Architecture of Gainsight's Digital Analytics and Data Processing platforms, where my contributions were instrumental in shaping Gainsight’s platform, significantly improving functionality and impact on customer engagement and satisfaction. I have been an integral and played crucial role as part of a successful start-up to unicorn (valued at over $1 billion), from inception to acquisition. Alongside my corporate commitments, I am passionate about sharing my knowledge and experience in Digital experiences technology and AI Integration. I hold a patent for my innovation at work in Creating a Platform-agnostic WYSIWYG (what you see is what you get) Canvas. Which is an innovative methodology to enable customers to create their Digital experiences like Email, Website, Apps using Digital experience platform with clicks. I am member of W3C representing Salesforce in driving web standards. I have applied for patent for my novel methodoloy on Integration of AI into Digital experience platform, which enables customers to create Digital experiences like Email, SMS, Forms using Artificial Intelligence in Digital experience platform.

Star