UNPKG

2.24 kBMarkdownView Raw
1
2# koa-mount
3
4 Mount other Koa applications as middleware. The `path` passed to `mount()` is stripped
5 from the URL temporarily until the stack unwinds. This is useful for creating entire
6 apps or middleware that will function correctly regardless of which path segment(s)
7 they should operate on.
8
9## Installation
10
11```js
12$ npm install koa-mount
13```
14
15## Examples
16
17 View the [./examples](blob/master/examples) directory for working examples.
18
19### Mounting Applications
20
21 Entire applications mounted at specific paths. For example you could mount
22 a blog application at "/blog", with a router that matches paths such as
23 "GET /", "GET /posts", and will behave properly for "GET /blog/posts" etc
24 when mounted.
25
26```js
27var mount = require('koa-mount');
28var koa = require('koa');
29
30// hello
31
32var a = koa();
33
34a.use(function *(next){
35 yield next;
36 this.body = 'Hello';
37});
38
39// world
40
41var b = koa();
42
43b.use(function *(next){
44 yield next;
45 this.body = 'World';
46});
47
48// app
49
50var app = koa();
51
52app.use(mount('/hello', a));
53app.use(mount('/world', b));
54
55app.listen(3000);
56console.log('listening on port 3000');
57```
58
59 Try the following requests:
60
61```
62$ GET /
63Not Found
64
65$ GET /hello
66Hello
67
68$ GET /world
69World
70```
71
72### Mounting Middleware
73
74 Mount middleware at specific paths, allowing them to operate independently
75 of the prefix, as they're not aware of it.
76
77```js
78var mount = require('koa-mount');
79var koa = require('koa');
80
81function *hello(next){
82 yield next;
83 this.body = 'Hello';
84}
85
86function *world(next){
87 yield next;
88 this.body = 'World';
89}
90
91var app = koa();
92
93app.use(mount('/hello', hello));
94app.use(mount('/world', world));
95
96app.listen(3000);
97console.log('listening on port 3000');
98```
99
100### Optional Paths
101
102 The path argument is optional, defaulting to "/":
103
104```js
105app.use(mount(a));
106app.use(mount(b));
107```
108
109## Debugging
110
111 Use the __DEBUG__ environement variable to whitelist
112 koa-mount debug output:
113
114```
115$ DEBUG=koa-mount node myapp.js &
116$ GET /foo/bar/baz
117
118 koa-mount enter /foo/bar/baz -> /bar/baz +2s
119 koa-mount enter /bar/baz -> /baz +0ms
120 koa-mount enter /baz -> / +0ms
121 koa-mount leave /baz -> / +1ms
122 koa-mount leave /bar/baz -> /baz +0ms
123 koa-mount leave /foo/bar/baz -> /bar/baz +0ms
124```
125
126## License
127
128 MIT
\No newline at end of file