Postman delivers the assets of a webpage
Find a file
2024-07-12 03:26:32 -03:00
share/postman/examples/progressbar Try to follow accessibility best practices 2024-07-12 03:26:32 -03:00
src Reorder args 2024-07-12 01:54:50 -03:00
.eslintrc.js Add eslint, prettier, ts-standard 2024-07-12 01:00:04 -03:00
.gitignore Update package-lock.json 2024-07-10 17:08:10 -03:00
.projectile First commit 2024-07-10 11:21:15 -03:00
LICENSE First commit 2024-07-10 11:21:15 -03:00
package.json Add improvements 2024-07-12 01:51:20 -03:00
README.md Try to follow accessibility best practices 2024-07-12 03:26:32 -03:00
tsconfig.json First commit 2024-07-10 11:21:15 -03:00

About

Postman delivers the assets of a web page.
The library is typically paired with a progress bar that reports progress to the client.

Examples

Progress bar

The following example delivers fonts, scripts, images and stylesheets with the help of a progress bar. The progress bar is removed once the delivery is complete:

index.html

<!DOCTYPE html>
<html>
<head>
  <title>Postman</title>
  <script type="module" src="delivery.js"></script>
  <style>
    html, html body { height: 100%; }
    main.postman {
      height: 100%;
      display: flex;
      flex-direction: column;
      justify-content: center;
      align-items: center;
    }
    main.postman progress {
      max-width: 200px;
    }
    main.postman .percent {
      font-family: courier;
      font-size: smaller;
    }
  </style>
</head>
<body>
  <main class="postman">
    <label>
      <progress id="progress" value="0" max="100"></progress>
    </label>
  </main>
</body>
</html>

delivery.js

import postman, { item } from "postman";
document.addEventListener("DOMContentLoaded", () => {
  const postman = document.querySelector("main.postman");
  const bar = postman.querySelector("progress");
  const span = postman.querySelector(".percent");
  const delivery = postman(
    item.font("Kanit Regular", "url(/fonts/kanit-regular.ttf)"),
    item.script("/js/app.js"),
    item.image("/images/app.png"),
    item.css("/css/app.css"),
    item.progress((percent) => {
      bar.value = percent;
      bar.innerText = span.innerText = `${percent}%`;
    })
  ).deliver();

  delivery.then((package) => {
    /* Add page assets */
    package.fonts.forEach((font) => documents.fonts.add(font));
    package.scripts.forEach((script) => document.body.appendChild(script));
    package.css.forEach((css) => document.head.appendChild(css));
    /* Replace loading screen */
    postman.remove();
  });
});

See also

Sources

License

BSD Zero Clause
See LICENSE