JSPM

  • Created
  • Published
  • Downloads 1384
  • Score
    100M100P100Q103117F
  • License MIT

Join files on a fly to reduce requests count

Package Exports

  • join-io

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (join-io) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Join-io

Join files on a fly to reduce requests count.

Install

npm i join-io --save

How it works?

join-io it's middleware that works with streams: open files and pipe them to response one-by-one, when everything is done, stream is closing. join-io based on readPipe function of files-io.

jsDelivr works in similar way: load Multiple files with a single HTTP request.

How to use?

Join-io could be used as express middleware.

Client

<link rel="/join:/css/normilize.css:/css/style.css">
<script src="/join:/lib/client.js:/lib/util.js:/lib/jquery.js"></script>

Join.js

You could build join urls dynamically. Load /join/join.js library for this purpose.

<script src="/join/join.js"></script>
<script>
    join(['lib/client', 'lib/util.js']);
</script>

To decrease requests count you could make /join/join.js part of request:

<script src="/join:/lib/client.js:/lib/util.js:/join/join.js"></script>

Instead of /join you could use any prefix you like (don't forget to set it on the server side).

Server

const join = require('join-io');
const http = require('http');
const express = require('express');

const app = express();
const server = http.createServer(app);

const port = 1337;
const ip = '0.0.0.0';

app.use(join({
    dir: __dirname,
    prefix: '/join',    /* default */
}));

app.use(express.static(__dirname));

server.listen(port, ip);

License

MIT