platform/README.md

65 lines
2.2 KiB
Markdown
Raw Normal View History

2017-06-14 09:37:39 +00:00
# static
[![Pub](https://img.shields.io/pub/v/angel_static.svg)](https://pub.dartlang.org/packages/angel_static)
2017-02-22 23:43:27 +00:00
[![build status](https://travis-ci.org/angel-dart/static.svg?branch=master)](https://travis-ci.org/angel-dart/static)
2016-11-23 09:37:28 +00:00
2016-04-21 21:27:22 +00:00
Static server middleware for Angel.
# Installation
In `pubspec.yaml`:
2016-07-01 20:33:42 +00:00
```yaml
dependencies:
2017-09-23 21:57:54 +00:00
angel_static: ^1.3.0
2016-07-01 20:33:42 +00:00
```
2016-04-21 21:27:22 +00:00
# Usage
2017-09-23 21:57:54 +00:00
To serve files from a directory, you need to create a `VirtualDirectory`.
2016-04-21 21:27:22 +00:00
```dart
import 'dart:io';
import 'package:angel_framework/angel_framework.dart';
import 'package:angel_static/angel_static.dart';
main() async {
2017-09-23 21:57:54 +00:00
var app = new Angel();
2017-02-27 00:19:34 +00:00
// Normal static server
2017-09-23 21:57:54 +00:00
var vDir = new VirtualDirectory(source: new Directory('./public'));
2017-02-27 00:19:34 +00:00
// Send Cache-Control, ETag, etc. as well
2017-09-23 21:57:54 +00:00
var vDir = new CachingVirtualDirectory(source: new Directory('./public'));
// Mount the VirtualDirectory's request handler
app.use(vDir.handleRequest);
2017-02-27 00:19:34 +00:00
2017-09-23 21:57:54 +00:00
// Start your server!!!
await app.startServer();
2016-04-21 21:27:22 +00:00
}
```
2017-09-23 21:57:54 +00:00
# Push State
`VirtualDirectory` also exposes a `pushState` method that returns a
request handler that serves the file at a given path as a fallback, unless
the user is requesting that file. This can be very useful for SPA's.
2017-04-01 01:08:01 +00:00
```dart
2017-09-23 21:57:54 +00:00
// Create VirtualDirectory as well
var vDir = new CachingVirtualDirectory(...);
2017-04-01 01:08:01 +00:00
2017-09-23 21:57:54 +00:00
// Mount it
app.use(vDir.handleRequest);
// Fallback to index.html on 404
app.use(vDir.pushState('index.html'));
2017-04-01 01:08:01 +00:00
```
2016-05-02 23:11:25 +00:00
# Options
The `VirtualDirectory` API accepts a few named parameters:
- **source**: A `Directory` containing the files to be served. If left null, then Angel will serve either from `web` (in development) or
2016-06-24 22:23:32 +00:00
`build/web` (in production), depending on your `ANGEL_ENV`.
2016-11-23 17:24:04 +00:00
- **indexFileNames**: A `List<String>` of filenames that should be served as index pages. Default is `['index.html']`.
- **publicPath**: To serve index files, you need to specify the virtual path under which
2016-05-02 23:11:25 +00:00
angel_static is serving your files. If you are not serving static files at the site root,
please include this.
2017-01-25 22:40:41 +00:00
- **callback**: Runs before sending a file to a client. Use this to set headers, etc. If it returns anything other than `null` or `true`,
2017-09-23 21:57:54 +00:00
then the callback's result will be sent to the user, instead of the file contents.