Skip to main content

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.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jstc-0.1.7.tar.gz (21.6 kB view details)

Uploaded Source

File details

Details for the file jstc-0.1.7.tar.gz.

File metadata

  • Download URL: jstc-0.1.7.tar.gz
  • Upload date:
  • Size: 21.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jstc-0.1.7.tar.gz
Algorithm Hash digest
SHA256 4626ebb26bb1774201770ea1b1850401d43f18c758ad00b885c2762389471646
MD5 e37b7fa3b267726303ebd5509d650f7e
BLAKE2b-256 25e4466025db006d9b0b69c59b63b58ee386598151d2b2c4bac8dd8d08a29034

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.7 This release

1 file

0.1.6

1 file

0.1.5

1 file

0.1.4

1 file

0.1.3

1 file

0.1.0

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page