The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.