This is a mini template engine which can generate HTML dynamically by parsing templates on
server-side. It is a bit like Django.
1. Templates
A template is a text file which contains
variables, tags.
1.1 Variable
There are two types of template variables, one is common variable, the other is conditional variable.
| Type | Decription | Usage |
| Common | Variable name is put inside {{ }} | <h1>Hello {{ firstname }}, how are you?</h1> |
| Conditional | Variable name is put inside tags | {%if isLogin %} or {% for menu in menus %} |
1.2 Tags
Tags control the logic of the template. they are surrounded in {% %}. Some create text in the output, some control flow by performing loops or logic, and some load external information into the template to be used by later variables.
| Tag | Decription | Usage |
| block | Define a section in a master template that should be replaced by a section in a child template | {% block content %}{% endblock %} |
if
[ else | elseif ]
endif | An if statement evaluates a boolean variable and executes a block of code if the value is true. | {%if isLogin %}
<li class="nav-item"><a href="/logout" class="nav-link">LOGOUT</a></li>
{% else %}
<li class="nav-item"><a href="/login" class="nav-link">LOGIN</a></li>
{% endif %} |
| for in | A for loop is used for iterating over a list. | {% for menu in menus %}
<li class="nav-item"><a href={{menu.href}} class="nav-link {{ menu.active }}">{{menu.item}}</a></li>
{% endfor %} |
| extends | The extends tag allows you to add a parent template for the current template.This means that you can have one master page that acts like a parent for all other pages | {%extends base %}
{% block content %}<h2>Page-{{uri}} {{username}}
</h2>{% endblock %} |
| include | The include tag allows you to include a template inside the current template. This is useful when you have a block of content that is the same for many pages. | {% include partial/header %}
body is content what you would like to do
{% include partial/footer %} |
2. Use templates in B4J
The template parsing library b4jtpl.0.11.0 is attached.
2.1 Pass variables to templates
In B4J, template variables will are put into a map,each key of the map corresponds to a template variable name
2.2 initialize
HtmlTplParser is a class which generates HTML.
To use the class you need to set templatefile's basepath and extension
2.3 Render
A method render which returns html string by template file and map variale
For a hands-on example of creating HTML pages with templates, please see stplExample.
It's only a creation or a practice not a product, I did it just for learning b4x .