DEV Community

Cover image for ❄️Introducing the HMPL Template Language
Anthony Max
Anthony Max Subscriber

Posted on

❄️Introducing the HMPL Template Language

Hello everyone! I once wrote a lot of articles, but in fact I never told what this HMPL is. Today I will correct myself and will show in full examples how it works and how it can be useful in your projects. Well then, let's go!

gif

What is this?

How would I describe it? Probably the easiest way to describe it is: Server-side rendering (SSR) for any web application, but without robot viewing. That is, this tool will allow you to load components to the client directly from the server, and with full customization. And, most importantly, it is all like a template language, that is, everything is super convenient and practical.

?

????

Okay, that's what I tried to say in a few words, but in general it's worth looking at the example and then we can learn a little more.

eXaMpLe

As one example, let's take a simple clicker:

import hmpl from "hmpl-js";

const templateFn = hmpl.compile(
  `<div>
      <button data-action="increment" id="btn">Click!</button>
      <div>Clicks: {{ src: "/api/clicks", after: "click:#btn" }}</div>
  </div>`
);

const clicker = templateFn(({ request: { event } }) => ({
  body: JSON.stringify({ action: event.target.getAttribute("data-action") }),
})).response;

document.querySelector("#app").append(clicker);
Enter fullscreen mode Exit fullscreen mode

The result will be as follows:

Ultra hd

And, in fact, there can be a lot of examples of use. From a gallery to loading simple text.

How can HMPL help in your project?

In the project, in fact, you can come up with a huge number of situations when you might need this module. First of all, this is, of course, sharing components between sites.

If you have components like a sidebar that are repeated on several of your sites, it would be a good idea to move them to the server and get them from there via a request. By changing the template once, you will get the same result on dozens, if not hundreds of sites.

like

Also, such a practice of working with the server will allow to reduce the code on the client. Thus, users of the site will load the site for the first time much faster, because, in fact, the size of the bundle will be smaller.

spin

Illusion

In this section, from a million similar articles, they write something like the summary of the article. I think that the article has one summary. We need to learn to program on paper and you can create a really cool application.

clap

Top comments (2)

Collapse
 
anthonymax profile image
Anthony Max • Edited

In winter, the Ant simply has a vacation. He went for the New Year.

Collapse
 
anthonymax profile image
Anthony Max

Now he relaxes with a cup of hot tea, watching New Year's films.