NAME
Mojolicious::Plugin::InlineJSON - Bootstrap your app with inline JSON
SYNOPSIS
# Mojolicious
use Mojolicious;
$app->plugin('InlineJSON');
# Mojolicious::Lite
plugin 'InlineJSON';
# in your controller
$c->stash(important_stuff => { data => [ ... ] });
# then, in a template
<script>
// bootstrap with literal JSON
var prerenderedData = <%= js_data($important_stuff) %>
</script>
DESCRIPTION
Mojolicious::Plugin::InlineJSON is a Mojolicious plugin for rendering data to json in a template. This is useful for when you want to serve content managed dynamically by javascript without needing any extra AJAX calls after the page loads.
This plugin provides 3 different helpers for rendering JSON in a variety of different ways.
HELPERS
js_data
<script>
var prerenderedData = <%= js_data($important_stuff) %>
// ...
</script>
js_data
will render the perl data structure passed to it into a literal javascript structure, capable of being directly consumed by javascript.
In essence, it turns this
{ key => 'value' }
into
{ key: 'value' }
while making sure to avoid any attribute escaping or accidental tag closure.
js_json_string
<script>
var jsonString = <%= js_json_string($important_stuff) %>
var decoded = JSON.parse(jsonString)
// ...
<script>
js_json_string
will turn the perl data structure into JSON, and then turn that into a string which can be parsed with JSON.parse()
in JS. This can be useful for places where your code would've expected an XHR that you decode.
js_data_via_json
<script>
var decodedData = <%= js_data_via_json($important_stuff) %>
// ...
<script>
js_data_via_json
is similar to js_json_string
, but it also does the JSON.parse for you.
AUTHORS
- mst - Matt S. Trout (cpan:MSTROUT)
mst@shadowcat.co.uk
- veesh - Veesh Goldman (cpan:VEESH)
veesh@cpan.org
CONTRIBUTORS
None yet - maybe this software is perfect! (ahahahahahahahahaha)
COPYRIGHT
Copyright (c) 2020 the Mojolicious::Plugin::InlineJSON "AUTHORS" and "CONTRIBUTORS" as listed above.
LICENSE
This library is free software and may be distributed under the same terms as perl itself.