Using Plug-ins

Using Plug-ins

Angel is designed to be extensible. As such, it exposes a typedef, AngelConfigurer, that has special privileges within the framework - they act as plug-ins and can be called via app.configure().
Plug-ins simply need to accept an Angel instance as a parameter, and return a Future (the result of which will be ignored, unless it throws an error). Angel instances have several facilities available to be customized, and thus it is easy to use a custom plug-in to bring about desired functionality within your application.
1
typedef Future AngelConfigurer(Angel app);
Copied!
As a convention, Angel plug-ins should be hooked up before the call to startServer.
1
import 'dart:io';
2
import 'package:angel3_framework/angel3_framework';
3
​
4
plugin(Angel app) async {
5
print("Do stuff here");
6
}
7
​
8
void main() async {
9
Angel app = Angel();
10
await app.configure(plugin);
11
await app.startServer();
12
}
Copied!

Execution Order

Plugins are usually immediately invoked by app.configure(). However, you may run into certain plug-ins that depend on other facilities already being available, or all of your services already being mounted. You can set aside a plug-in to be run just before server startupby adding it to app.startupHooks, instead of directly calling app.configure().
1
app.startupHooks.addAll([
2
myPlugin(),
3
AngelWebSocket().configureServer,
4
fooBarBazQuux()
5
]);
Copied!
Likewise, you can add hooks that run just before the app is shutdown, via Angel.shutdownHooks.

Next Up...

Learn how to generate content for clients by rendering views.
Last modified 4mo ago