node package manager

ajs

Asynchronous templating in Node.js

$ ajs

Asynchronous templating in Node.js

  • Control flow with <% %>
  • Escaped output with <%= %> (escape function configurable)
  • Unescaped raw output with <%- %>
  • Newline-trim mode ('newline slurping') with -%> ending tag
  • Custom delimiters (e.g., use <? ?> instead of <% %>)
  • Includes
  • Static caching of intermediate JavaScript
  • Static caching of templates
  • Complies with the Express view system

You can install the package globally and use it as command line tool:

$ npm i -g ajs

Then, run ajs --help and see what the CLI tool can do.

$ ajs --help
Usage: ajs [options]
 
Asynchronous templating in Node.js
 
Options:
  -t, --tree             Output the abstract syntax tree
  -s, --source           Output the raw VM source
  -l, --locals <locals>  The template data as JSON.
  -v, --version          Displays version information.
  -h, --help             Displays this help.
 
Examples:
  $ ajs template.ajs
  $ ajs -t template.ajs
  $ ajs -s template.ajs
 
Documentation can be found at https://github.com/IonicaBizau/ajs#readme.

Here is an example how to use this package as library. To install it locally, as library, you can do that using npm:

$ npm i --save ajs
const ajs = require("ajs");
 
ajs.render(
`<% fruits.forEach(function (c) { -%>
<%= c %>s are great
<% }) %>`, {
    locals: {
        fruits: ["Apple", "Pear", "Orange"]
    }
}, (err, data) => {
    console.log(err || data);
    // => 
    // Apples are great 
    // Pears are great 
    // Oranges are great 
});
 
// Do some async stuff 
ajs.render(
`<% fetchData(function (err, msg) {
   if (err) { %>
     Error: <%= err.message %>
   <% } else {
    <%= msg %>
   <% } %>
<% }) %>`, {
    locals: {
        fetchData: cb => setTimeout(
            () => cb(null, "Hey there!")
          , 1000
        )
    }
}, (err, data) => {
    console.log(err || data);
    // => 
    // Hey there! 
});

For full API reference, see the DOCUMENTATION.md file.

Have an idea? Found a bug? See how to contribute.

Big thanks to Evan Owen who created the initial versions of the project! Amazing stuff! 🍰

If you are using this library in one of your projects, add it in this list. ✨

  • ajs-xgettext (by Duane Griffin)—Extract localised text from AJS templates

MIT © Ionică Bizău