1.2.3 • Published 6 months ago

akili-connect v1.2.3

Weekly downloads
4
License
MIT
Repository
github
Last release
6 months ago

akili-connect npm version

Library to implement server-side rendering for Akili framework.
It is based on jsdom.

Example

const akiliConnect = require('akili-connect');
const express = require('express');
const path = require('path');
const app = express();

const middleware = akiliConnect({
  indexFile: path.join(__dirname, 'public/templates/index.html')
});

app.get('/', middleware.route);
app.get('/home', middleware.route);
app.get('/docs/*', middleware.route);
app.get('*', middleware.index);

app.listen(3000, function () {
  console.log('Server run on 3000 port');
});

Description

All you need is to use route middleware for the necessary routing path and index middleware to get index file.

Options

  • {string} indexFile - path to the index file. Required if you are going to use index middleware
  • {string} indexUrl - index middleware url
  • {number} port - application port
  • {string} protocol - application protocol
  • {string} host - application host
  • {Object} jsdomOptions - jsdom options
  • {function} onDomInit - called after DOM creation. You can change window state here before the Akili application is initialized.
  • {function} beforeSerialization - called before the DOM serialization. You can get the window object and do anything with it last time.
  • {function} afterSerialization - called after the DOM serialization. You can get the actual html and change it last time. You have to return a new html string.

Polyfills

You might need missing functions in jsdom or stubs for them. You can write it yourself.

const polyfill = require('akili-connect/polyfill');

polyfill.someFunction = (window) => {
  window.someFunction = () => {};
};

Client side

Don't forget to initialize your Akili application on the client side!
Server sends the part of html to replace only the root element content.

document.addEventListener('DOMContentLoaded', () => {
  Akili.init(document.body).catch((err) => console.error(err));;
});
if(window.AKILI_SSR) {
  // the server-side rendering
}
else {
  // the client-side rendering
}

If you want to remove some elements during the rendering on the server side you can add attribute no-ssr to them.

<app>
  <div no-ssr>it's useless for SEO</div>
  <div>it's necessary</div>
</app>  
1.2.3

6 months ago

1.2.2

6 months ago

1.2.1

3 years ago

1.2.0

4 years ago

1.1.1

4 years ago

1.1.0

4 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

6 years ago

1.0.0

6 years ago

0.7.0

6 years ago

0.6.14

6 years ago

0.6.13

6 years ago

0.6.12

6 years ago

0.6.11

6 years ago

0.6.10

6 years ago

0.6.9

6 years ago

0.6.8

6 years ago

0.6.7

6 years ago

0.6.6

6 years ago

0.6.4

6 years ago

0.6.0

6 years ago

0.5.8

6 years ago

0.5.1

6 years ago

0.5.0

6 years ago

0.4.0

6 years ago

0.3.3

6 years ago

0.3.2

6 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago