Rendering-Views

Rendering Views

Just like res.render in Express, Angel’s ResponseContext exposes a Future called render. This invokes whichever function is assigned to your server’s viewGenerator.

There is a Mustache templating plug-in for Angel available: https://github.com/angel-dart/mustache

There is also Jael, one of the few actively-developed HTML templating engines for Dart.

Angel support for Jael is provided through package:angel_jael.

Another is Jinja2, which was recently ported by to Dart byOlzhas Suleimen.

Angel support for Jinja2 can be found here:https://pub.dartlang.org/packages/angel_jinja

Example

  1. app.get('/view', (req, res) async => await res.render('hello', {'locals': ['foo', 'bar']});

ViewGenerator

Angel declares the following typedef:

  1. /// A function that asynchronously generates a view from the given path and data.
  2. typedef Future<String> ViewGenerator(String path, [Map data]);

A templating plug-in can assign one of these to app.viewGenerator to set itself up:

  1. import 'dart:io';
  2. import 'package:angel_framework/angel_framework.dart';
  3. Future<void> plugin(Angel app) async {
  4. app.viewGenerator = (String path, [Map data]) async {
  5. return "Requested view $path with locals: $data";
  6. };
  7. }
  8. main() async {
  9. var app = new Angel();
  10. await app.configure(plugin);
  11. await app.startServer();
  12. }

Next Up…

  1. Explore Angel’s isomorphic client library.
  2. Find out how to test Angel applications.