The jstc Python package compiles and packages JavaScript templates for delivery to browsers for client-side evaluation.
Currently, only Handlebars and Mustache template formats are supported natively, however this is easily extended via jstc’s plugin mechanism.
Project
Installation
$ pip install jstc
Optionally, the handlebars pre-compiler can be installed to pre-compile JavaScript templates for faster client-side rendering:
# OPTIONAL: install handlebars pre-compiler
$ npm install handlebars
$ export PATH="`pwd`/node_modules/.bin:$PATH"
Usage
The typical usage is to have something similar to the following in your HTML generation template (here, using Mako syntax):
<%! import jstc %>
<html>
<!-- ... -->
<body>
<div id="Main">Loading...</div>
<!-- load all the *.hbs templates -->
<div id="Templates" style="display:none">
${jstc.render_assets('myapp:static/scripts/**.hbs')|n}
</div>
<script type="text/javascript">
// your javascript that makes use of the templates
</script>
</body>
</html>
Example
Given that the following files exist in the Python package myapp:
File myapp/static/templates/common/hello.hbs:
Hello, {{name}}!
File myapp/static/templates/common/inputs.hbs (a “multi-template” file):
##! text
<input type="text" name="{{name}}" value="{{value}}"/>
##! checkbox
<input type="checkbox" name="{{name}}" value="1" {{#if value}}checked="checked"{{/if}}/>
Then, the Python code (inline and precompile attributes used for output simplicity):
import jstc
jstc.render_assets(
'myapp:static/templates/common/**.hbs', 'static/templates',
force_inline=True, force_precompile=False)
Outputs the following HTML (whitespace and newlines added for clarity):
<script type="text/x-handlebars" data-template-name="common/hello">
Hello, {{name}}!
</script>
<script type="text/x-handlebars" data-template-name="common/inputs/text">
<input type="text" name="{{name}}" value="{{value}}"/>
</script>
<script type="text/x-handlebars" data-template-name="common/inputs/checkbox">
<input type="checkbox" name="{{name}}" value="1" {{#if value}}checked="checked"{{/if}}/>
</script>
See https://github.com/canaryhealth/jstc/blob/master/doc/manual.rst for more documentation.
Release files for jstc 0.1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| jstc-0.1.7.tar.gz | 21.6 kB | Details |
Release files / jstc-0.1.7.tar.gz
| Download URL | jstc-0.1.7.tar.gz |
|---|---|
| Size | 21.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4626ebb26bb1774201770ea1b1850401d43f18c758ad00b885c2762389471646
|
|
BLAKE2b-256 checksum How to use checksums |
25e4466025db006d9b0b69c59b63b58ee386598151d2b2c4bac8dd8d08a29034
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |