Skip to content

canaryhealth/pyramid_jitt

Repository files navigation

Pyramid Just-In-Time Templating

The pyramid_jitt package is a wrapper around the jstc JavaScript template compiler that allows client-side templates to be defined in disparate server-side files and be assembled, pre-compiled, packaged, cached, and access-controlled for inline, deferred, and restricted delivery.

Important

As of 2016/10/09, "restricted" delivery (i.e. access-controlled delivery control of all or a subset of the templates) and per-template JIT rendering is not yet available.

Currently, jQuery (v1.9.1+) is required for non-inline template delivery.

Project

Installation

$ pip install pyramid_jitt

Usage

Enable the package either in your INI file via:

pyramid.includes =
  pyramid_beaker
  pyramid_jitt

(it is highly recommended to use pyramid_beaker for caching of rendered templates) or in code in your package's application initialization via:

def main(global_config, **settings):
  # ...
  config.include('pyramid_beaker')
  config.include('pyramid_jitt')
  # ...

Configure pyramid_jitt's behaviour by setting the various options in your INI file (see the Manual for details), for example:

# use pyramid_beaker for caching!
cache.type                        = memory
cache.regions                     = pyramid_jitt
cache.pyramid_jitt.expire         = 3600

# override all template attributes to disable deferred loading
jitt.overrides.inline             = true

# define where the "webapp" templates (Handlebars, in this case) are
# located and disable pre-compilation (only for "webapp" templates)
jitt.@webapp.assets               = myapp:static/scripts/**.hbs
jitt.@webapp.overrides.precompile = false

Then, add the delivery payload to your HTML file, here a Mako example:

<html>
  <body>

    ${request.registry.jitt.render('webapp')|n}

    <script type="text/javascript">
      // NOTE: this must come **after** the `jitt.render` call!
      $(function() {
        $('#Templates').data('jitt').ready(function() {
          // start your client-side app that uses your templates here!...
        });
      });
    </script>

  </body>
</html>

More Documentation

More documentation can be found in the Manual.

About

A Just-In-Time compilation and packaging of JavaScript templates for Pyramid.

Resources

License

Stars

Watchers

Forks

Packages

No packages published