chh / mustache-js-compiler
Compiles server-side Mustache templates to self-sufficient client-side JS functions
Requires
- php: >=5.3.8
- phly/mustache: ~1.0
Requires (Dev)
- symfony/process: ~2.1
This package is not auto-updated.
Last update: 2024-11-05 02:44:12 UTC
README
Compiles server-side Mustache templates to self-sufficient client-side JS functions. Uses the excellent PhlyMustache.
Install
composer require 'chh/mustache-js-compiler':~1.0@dev
Usage
The compiler needs an instance of Phly\Mustache\Mustache
to function.
If you intend to share templates between the server and the client, than it's recommended to use the same Mustache instance which your application uses so the template paths are setup the same way (for partials to be compiled correctly).
<?php $mustache = new Phly\Mustache\Mustache; // or use the same Mustache environment than your application: $mustache = $app['mustache'];
Then create the compiler and pass it the Mustache environment:
$jsCompiler = new CHH\MustacheJsCompiler\MustacheJsCompiler($mustache);
The compiler has a compile
method which works the same way as $mustache->tokenize()
. It
looks up the template name in the template path, or uses the passed Mustache code. The compile
method returns a self-sufficient JavaScript function which executes the template.
The template looks like this:
{{! user/show.mustache }} Hi {{name}}!
We can render the template using this code:
<div id="user-widget"></div> <script> (function() { var template = <?php echo $jsCompiler->compile('user/show') ?>; var widget = document.getElementById('user-widget'); widget.innerHTML = template({name: "Christoph"}); })(); </script>
Unimplemented Mustache Features
- Filters