Skip to content
This repository has been archived by the owner on Dec 5, 2023. It is now read-only.
/ node-amy Public archive

A HTML Template Framework with pure build time rendering for NodeJS

License

Notifications You must be signed in to change notification settings

stfsy/node-amy

Repository files navigation

amy

Build Status Dependency Status DevDependency Status Npm downloads Npm Version Git tag Github issues License

What is it?

A HTML template framework without client-side dependencies. amy allows you to split up your web app in small components. amy will merge these components at runtime and replace variables.

Who is using it?

blauspecht.io uses node-html-light to render their whole page server-side. blauspecht.io enables you to provide rich content to your followers, schedule tweets and threads and will add AI-powered features soon.

How can I use it?

In the example below you can see, that the file index.html contains various import commands. At runtime these commands will add

  • Meta Tags,
  • CSS,
  • JavaScript,
  • and of course the content of the page

index.html

<!DOCTYPE html>
<html>

<head>
    <!-- @amy import amy/views/base/meta.html-->
    <!-- @amy import amy/views/base/css.html-->
</head>

<body>
    ...
    <!-- @amy import amy/views/body/main.html -->
    ...
</body>
<!-- @amy import amy/views/base/scripts.html -->
</html>

Commands

import

<head>
    <!-- @amy import amy/views/base/meta.html-->
</head>
  • Description: Will import a compo nent into the current html page
  • Syntax: <!-- @amy import path/to/file.html [with contextName [as contextAlias]]-->
  • Requirements:
    • path/to/file.html must be a valid relative path to a file
    • contextName is a property in the current rendering context

forEach

<div>
    <div>
        <h2>Work Experience</h2>
    </div>
    <div>
    <!-- @amy import amy/views/experience/blocks/listItem.html forEach experience as experience -->
    </div>
</div>
  • Description: Will import a component multiple times into the current html page
  • Syntax: <!-- @amy import path/to/file.html forEach context [as contextAlias]-->
  • Requirements:
    • path/to/file.html must be a valid relative path to a file
    • contextName is a property in the current rendering context
    • the value of context[contextName] must be of type Array

add

  • Description: Will import a component into another component
  • Syntax: <!-- @amy import path/to/file.html [with contextName [as contextAlias]] and add path/to/another/file.html [with contextName [as contextAlias]] -->

interpolation

<li>
    <span>{{ experience.label }}</span>
</li>
  • Description: Will declare variables in a component that will be replaced at runtime
  • Syntax: {{ variableName }}

How can I install it?

npm install node-amy --save

Where can I view the docs?

node-amy JSDoc

License

This project is distributed under the MIT license.