@ts-ioc/bootstrap
TypeScript icon, indicating that this package has built-in type declarations

4.0.5 • Public • Published

packaged @ts-ioc/bootstrap

This repo is for distribution on npm. The source for this module is in the main repo.

@ts-ioc/bootstrap: DI Module manager, application bootstrap. base on AOP, Ioc container, via @ts-ioc/core.

version 2+ of tsioc

Install

npm install @ts-ioc/bootstrap

// in browser
npm install @ts-ioc/platform-browser

// in server
npm install @ts-ioc/platform-server

add extends modules

use bootstrap

import { DIModule, ApplicationBuilder } from '@ts-ioc/bootstrap';


export class TestService {
    testFiled = 'test';
    test() {
        console.log('test');
    }
}

@DIModule({
    providers: [
        { provide: 'mark', useFactory: () => 'marked' },
        TestService
    ],
    exports: [

    ]
})
export class ModuleA {

}

@Injectable
export class ClassSevice {
    @Inject('mark')
    mark: string;
    state: string;
    start() {
        console.log(this.mark);
    }
}

@Aspect
export class Logger {

    @Around('execution(*.start)')
    log() {
        console.log('start........');
    }
}


@DIModule({
    imports: [
        AopModule,
        Logger,
        ModuleA
    ],
    exports: [
        ClassSevice
    ],
    bootstrap: ClassSevice
})
export class ModuleB implements OnModuleStart<ClassSevice> {
    constructor(test: TestService, @Inject(ContainerToken) private container: IContainer) {
        console.log(test);
        test.test();
        // console.log(container);
        // console.log('container pools..................\n');
        let pools = container.get(ContainerPoolToken);
        // console.log(pools);
        console.log('container pools defaults..................\n');
        console.log(pools.defaults);
    }
    mdOnStart(instance: ClassSevice): void | Promise<any> {
        console.log('mdOnStart...');
        console.log(this.container);
        instance.start();
        instance.state = 'started';
    }
}


ApplicationBuilder.create(__dirname)
    .bootstrap(Application)

ApplicationBuilder.create(baseURL)
    .bootstrap(Application)
  • use @Bootstrap config to boot application
@Bootstrap({
    baseURL: __dirname,
    imports: [
        KoaModule
    ],
    //use your builder
    builder: MvcHostBuilder,
    bootstrap: MvcServerToken,
    //bootDeps:[s
        //module
    //],
    //bootConfiguration: config
    //debug: true
})
class MvcApi {
    constructor() {
        console.log('boot application');
    }
}
  • use @Bootstrap main to boot application
@Bootstrap({
    imports: [
        KoaModule
    ],
    bootstrap: MvcServerToken
})
class MvcApi {
    constructor() {
        console.log('boot application');
    }

    static main() {
        console.log('run mvc api...');
        // use your builder
        MvcHostBuilder.create(__dirname)
            .useConfiguration({ debug: true })
            .bootstrap(MvcApi);
    }
}

Container Interface

see more interface. all document is typescript .d.ts.

Documentation is available on the @ts-ioc/core docs site.

License

MIT © Houjun

Package Sidebar

Install

npm i @ts-ioc/bootstrap

Weekly Downloads

63

Version

4.0.5

License

MIT

Unpacked Size

1.63 MB

Total Files

210

Last publish

Collaborators

  • houjun