angel3_jael 8.3.0 copy "angel3_jael: ^8.3.0" to clipboard
angel3_jael: ^8.3.0 copied to clipboard

Angel support for the Jael templating engine, similar to Blade or Liquid.

Angel3 Jael #

Pub Version (including pre-releases) Null Safety Discord License

Angel 3 support for Jael 3.

Installation #

In your pubspec.yaml:

dependencies:
  angel3_jael: ^8.0.0

Usage #

Just like mustache and other renderers, configuring Angel to use Jael is as simple as calling app.configure:

import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_jael/angel3_jael.dart';
import 'package:file/file.dart';

AngelConfigurer myPlugin(FileSystem fileSystem) {
    return (Angel app) async {
        // Connect Jael to your server...
        await app.configure(
        jael(fileSystem.directory('views')),
      );
    };
}

package:angel3_jael supports caching views and minified html output by default, to improve performance. You might want to disable them in development, so consider setting these flags to false:

jael(viewsDirectory, cacheViews: false, minified: false);

Keep in mind that this package uses package:file, rather than dart:io.

The following is a basic example of a server setup that can render Jael templates from a directory named views:

import 'package:angel3_framework/angel3_framework.dart';
import 'package:angel3_jael/angel3_jael.dart';
import 'package:file/local.dart';
import 'package:logging/logging.dart';

void main() async {
  var app = Angel();
  var fileSystem = const LocalFileSystem();

  await app.configure(
    jael(fileSystem.directory('views')),
  );

  // Render the contents of views/index.jael
  app.get('/', (res) => res.render('index', {'title': 'ESKETTIT'}));

  app.use(() => throw AngelHttpException.notFound());

  app.logger = Logger('angel')
    ..onRecord.listen((rec) {
      print(rec);
      if (rec.error != null) print(rec.error);
      if (rec.stackTrace != null) print(rec.stackTrace);
    });

  var server = await app.startServer(null, 3000);
  print('Listening at http://${server.address.address}:${server.port}');
}

To apply additional transforms to parsed documents, provide a set of patch functions, like in package:jael3_preprocessor.

Performance Optimization #

For handling large volume of initial requests, consider using jaelTemplatePreload to preload all the JAEL templates into an external cache.


  var templateDir = fileSystem.directory('views');

  // Preload JAEL view templates into cache
  var viewCache = <String, Document>{};
  jaelTemplatePreload(templateDir, viewCache);

  // Inject cache into JAEL renderer
  await app.configure(
    jael(fileSystem.directory('views'), cache: viewCache),
  );

3
likes
160
points
148
downloads

Publisher

verified publisherdukefirehawk.com

Weekly Downloads

Angel support for the Jael templating engine, similar to Blade or Liquid.

Homepage
Repository (GitHub)
Contributing

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

angel3_framework, belatuk_code_buffer, belatuk_symbol_table, file, jael3, jael3_preprocessor, logging

More

Packages that depend on angel3_jael