暫無描述

Matheus Giovani b34035f18e added style pre-processor and scoped styles 3 年之前
examples 2fd15c8dc1 added support for comments to virtual-dom 3 年之前
packages b34035f18e added style pre-processor and scoped styles 3 年之前
test b34035f18e added style pre-processor and scoped styles 3 年之前
.gitignore b508f2f301 fixes gitignore 3 年之前
.gitmodules bfa4cc8e1f added virtual-dom submodule 3 年之前
.npmignore 43d0b5515e fixes reactivity 3 年之前
LICENSE d873f3a526 first commit 3 年之前
README.md e5f79a8374 added implementation tag and one new example 3 年之前
jest.config.js 57dbd2e0b8 general refactor 3 年之前
nodemon.json 5daa55e05f fixed text and HTML related things 3 年之前
package.json ec3855642f added build configuration 3 年之前
tsconfig.json dd48e19f34 reformulated component declaration 3 年之前
webpack.config.js 2fd15c8dc1 added support for comments to virtual-dom 3 年之前

README.md

pupper.js icon

pupper.js

pupper.js is a reactive template engine based in pugjs.

This is a BETA project, it can change drastically over time, so use it with caution for now and stay updated! :D


Basic syntax

pupper.js is based in pugjs, you can learn about pugjs's syntax here.

There's some new syntax added to use the reactivity:

  • {{ variable }} Renders the contents of variable as text, replacing HTML entities with escaped entities.
  • {- variable -} Renders the literal content of variable as-is

How to use

You can integrate pupper.js to your application by using one of the given loaders that compiles .pupper files into Javascript:


Or, you can integrate using the API:

const pupper = require("@pupperjs/core");
const Renderer = pupper.Renderer;

// Compiles the template to a string
const template = pupper.compileToStringSync(/*pupper*/`
template
    .test
        span.hello-world(id={{ id }})
            ={- content -}
`);

// Create a renderer (view) with some starting data
const renderer = new Renderer(template, {
    id: "the-id",
    content: "Hello, beautiful world!"
});

/**
 * <div class="test">
 *      <span class="hello-world" id="the-id">
 *          Hello, beautiful world!
 *      </span>
 * </div> 
 */
renderer.renderToString();