Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ajanthab/bilstrap-iocjs
TS and JS IoC container
https://github.com/ajanthab/bilstrap-iocjs
ioc ioc-container javascipt npm-package typescript typescript-library
Last synced: about 1 month ago
JSON representation
TS and JS IoC container
- Host: GitHub
- URL: https://github.com/ajanthab/bilstrap-iocjs
- Owner: AjanthaB
- Created: 2019-12-22T11:18:37.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2023-01-08T16:48:52.000Z (almost 2 years ago)
- Last Synced: 2024-10-12T08:05:43.120Z (about 1 month ago)
- Topics: ioc, ioc-container, javascipt, npm-package, typescript, typescript-library
- Language: TypeScript
- Homepage:
- Size: 319 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# **Bilstrap-iocjs**
## Bilstrap-iocjs is a IoC(Inversion of Controll) container for your typescript project.
## Install
``` bash
npm install bilstrap-iosjs@latest
```## This is a simple light weight typescript library that let you to remove your hardcodes dependencies from your ES6 classes. This allow you to manage both singleton and other dependency classes.
## Oldway
```ts
class Piston {
constructor() {}public fire() {
console.log('piston is firing')
}
}class Engine {
constructor(private piston: Piston) {
console.log('initializing Engine');
// hardcodes value
this.piston = new Piston();
}public start() {
console.log('Stating the engine');
this.piston.fire();
}public stop() {
console.log('Stoping the engine');
}
}class Car {
constructor(private engine: Engine) {
// hardcoded values
this.engine = new Engine(new Piston());
}public start() {
this.engine.start();
}public getEngine(): Engine {
return this.engine;
}
}
```## Using bilstrap-iocjs
```ts
import { Container } from 'bilstrap-iocjs';class Piston {
constructor() {}public fire() {
console.log('piston is firing')
}
}class Engine {
constructor(private piston: Piston) {
console.log('initializing Engine');
}public start() {
console.log('Stating the engine');
this.piston.fire();
}public stop() {
console.log('Stoping the engine');
}
}class Car {
// you dependencies define here
constructor(private engine: Engine) {}public start() {
this.engine.start();
}public getEngine(): Engine {
return this.engine;
}
}const container = new Container();
// here you register the class
container.register('piston', Piston, []);
container.register('engine', Engine, ['piston']);
container.register('car', Car, ['engine']);const BMW: any = container.get('car');
BMW.start();
```## Singleton classes
```ts
// singleton example
container.register('piston', Piston, [], true);const BMW: any = container.get('car');
const BENZ: any = container.get('car');
BMW.start();
BENZ.start();console.log('is same engine: ', BMW.getEngine() === BENZ.getEngine()) // false
console.log('is same Piston: ', BMW.getEngine().getPiston() === BENZ.getEngine().getPiston()) // true```
## Descorators
On the way
## Features
**register(uniqueClassName, BaseClass, Dependencies, singletonOrNot): void**
| Prameter | Description |
|------------------------|-----------------------------------|
| name : string | unique name to identify the class |
| definition: Class | Class that you want to register |
| dependencies: string[] | string array of dependencies, these are unique names that you used to register the dependencies|
| isSingleton: boolean | default value is **false**. |**get(name):an y**
| Parameter | Description |
|--------------|-------------|
| name: string | unique name of the dependency you need## Contribution
Become a contributor to this project. Feel free to submit an issue or a pull request.