Core Engine of Kites
Kites is a framework providing dynamic applications
assembling and API
routing. It contains a lot of templates and extensions help build up applications quickly.
The engine is a core component that is responsible for connecting extensions and initializing in order to launch the Web application.
Here below is TypeScript
version: The application simply prints out a greeting: Hello World!
import engine from '@kites/engine';
async function bootstrap() {
const app = await engine().init();
app.logger.info('Hello World!');
}
bootstrap();
Node/JavaScript version:
const engine = require('@kites/engine');
// init the kites engine
engine().init().then((core) => {
core.logger.info('Hello World!')
})
- Read documentation at kites.nodejs.vn
Kites engine has an option to allow the application auto discover extensions in the directory tree. This means kites
will searches for files kites.config.js
which describes the extensions and applies all the extensions that are found automatically.
This is fundamental principle for allowing extensions as plugins to be automatically plugged into the system. The application completed with minimalist lines of code, but very powerful!
import engine from '@kites/engine';
async function bootstrap() {
// let kites autodiscover the extensions
const app = await engine(true).init();
app.logger.info('A new kites engine started!');
}
bootstrap();
Kites extensions auto discovery might slows down the startup and can be explicitly override by using use
function. The following code has a slightly complicated configuration for each extensions.
import engine from '@kites/engine';
import express from '@kites/express';
import roomrtc from '@kites/roomrtc';
async function bootstrap() {
const app = await engine()
.use(express())
.use(roomrtc())
.init();
app.logger.info('A new kites engine started!');
}
bootstrap();
You are welcome to write your own extension or even publish it to the community. Please check test/extensions
to see an example.
TODO:
- Write an article for implementing custom kites extension
kites leverages winston 2 logging abstraction together with debug utility. To output logs in the console just simply set the DEBUG environment variable
DEBUG=kites node app.js
on windows:
set DEBUG=kites & node app.js
kites exposes logger
property which can be used to adapt the logging as you like. You can for example just add winston console transport and filter in only important log messages into console.
import engine from '@kites/engine';
import winston from 'winston';
const app = engine();
app.logger.add(winston.transports.Console, { level: 'info' });