npm

npm’s 2019 JavaScript ecosystem survey analysis is now available!Get your copy here »

nightink

0.1.3 • Public • Published

NightInk

A teeny-tiny templating engine.

NightInk is a teeny-tiny Javascript templating engine, written as an ES6 module. While there are loads of existing templating engines out there, I couldn't find one I liked (anyone know of a comparison site? :P) - so I wrote my own (it's adding to the problem, I know!).

Also available in PHP: NightInk.php

Installation

Installation is done through npm:

npm install --save nightink

Usage

Here's a basic example:

import { NightInk } from '../NightInk.mjs';
 
// .....
 
let html = NightInk(template_string, {
    // options here
})

The contents of the options object is substituted into the template string. Consider the following template:

<p>Next launch in {{seconds}}!</p>
<p>Rocket info: {{model}} carrying {{payload.summary}} for {{payload.owner.name}}, totalling {{totals.weight}} tons</p>

...with this options object:

{
    seconds: 10,
    model: "Ariane 6",
    payload: {
        summary: "Sentinel-4",
        owner: {
            name: "Dr. Sean",
            company: "Sean's Satellites Inc."
        }
    },
    totals: {
        weight: 450,
        tomatoes: 56
    }
}

All the appropriate values will get extracted from the options object and substituted into the template string automagically. Under normal circumstances, values are escaped with HTML-entities before substitution (if appropriate), for security purposes (no script-injection attacks here, thank you!). If you'd like to disable this (make sure you know what you're doing!), simply use a single set of curly braces:

<p>The rocket escaped: {{escape_me}}</p>
<p>The launchpad did not escape {no_escaping_here}</p>

NightInk also has support for arrays (multiple levelled nested arrays are ok too :D). This is done like so:

<p>To go to {{place_name}}, you will need:</p> 
<ul>
    {#each list}
    <li>{{quantity}} x {{name}}</li>
    {#endeach}
</ul>
{
    plane_name: "space"
    list: [
        { name: "Rocket", quantity: 1 },
        { name: "Astronaut", quantity: 3 },
        { name: "Fuel Cells", quantity: 55 },
        { name: "Launchpad", quantity: 1 }
    ]
}

License

NightInk is licensed under the Mozilla Public Licence 2.0. A copy of this license can be found in the LICENSE file in this repository.

Alternatively, tldr-legal has a summarythat you may find useful.

install

npm i nightink

Downloadsweekly downloads

20

version

0.1.3

license

MPL-2.0

homepage

gitlab.com

repository

Gitgitlab

last publish

collaborators

  • avatar
Report a vulnerability