From 6789fae2299aa156084769d08f70423891c05ead Mon Sep 17 00:00:00 2001 From: Hage Yaapa Date: Thu, 11 Apr 2019 12:47:32 +0530 Subject: [PATCH] docs: document Components Elaborated the Component class --- docs/site/Components.md | 52 ++++++++++++++++++++++++++++++ docs/site/Concepts.md | 5 ++- docs/site/sidebars/lb4_sidebar.yml | 4 +++ 3 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 docs/site/Components.md diff --git a/docs/site/Components.md b/docs/site/Components.md new file mode 100644 index 000000000000..5e008d89cd5d --- /dev/null +++ b/docs/site/Components.md @@ -0,0 +1,52 @@ +--- +lang: en +title: 'Components' +keywords: LoopBack 4.0, LoopBack 4 +sidebar: lb4_sidebar +permalink: /doc/en/lb4/Components.html +--- + +## Overview + +Components play an important part in the extensibility of LoopBack 4. A +Component makes it easy for independent developers to contribute additional +features to LoopBack. Components serve as a vehicle to group extension +contributions such as [Context Bindings](Context.md) and various artifacts to +allow easier extensibility of your Application. + +A typical LoopBack component is an [npm](https://www.npmjs.com) package +exporting a Component class which can be added to your application. + +Apart from its own properties, `Component` class can have the following +properties: + +- `controllers` - An array of [controller](Controllers.md) classes. +- `providers` - A map of providers to be bound to the application + [context](Context.md). +- `classes` - A map of TypeScipt classes to be bound to the application context. +- `servers` - A map of name/class pairs for [servers](Server.md). +- `lifeCycleObservers` - An array of [life cycle observers](Life-cycle.md). +- `bindings` - An array of [bindings](Bindings.md) to be aded to the application + context. + +These properties contribute to the application to add additional features and +capabilities. + +LoopBack 4 was built with extensibility in mind and this includes Components, +which can be allowed to contribute additional artifacts by adding a Mixin to +your Application class. This doesn't change how a Component is registered +(`app.component()`) but it enables the Component to contribute additional +artifacts. For example: + +- [Repositories](Repositories.md) can be contributed by a Component by adding + `RepositoryMixin` from `@loopback/repository` to your Application +- [Booters](Booting-an-Application.md#booters) can be contributed by a Component + by adding `BootMixin` from `@loopback/boot` to your Application + +**Note:** Always check a component's instructions to see if it requires the use +of a Mixin. A Mixin may automatically register a Component, saving you the +trouble of having to do so manually. Again it's best to check the documentation +for the given Component / Mixin. + +See [Using components](Using-components.md) and +[Creating components](Creating-components.md) for more information. diff --git a/docs/site/Concepts.md b/docs/site/Concepts.md index 12cda011550d..47a4cc99ab18 100644 --- a/docs/site/Concepts.md +++ b/docs/site/Concepts.md @@ -63,6 +63,5 @@ LoopBack 4 introduces some new concepts that are important to understand: - [**Decorator**](Decorators.md): The pattern used to annotate or modify your class declarations and their members with metadata. -- **Component**: A package that bundles one or more Loopback extensions. - - See [Using components](Using-components.md) and - [Creating components](Creating-components.md) for more information. +- [**Component**](Components.md): A package that bundles one or more LoopBack + extensions. diff --git a/docs/site/sidebars/lb4_sidebar.yml b/docs/site/sidebars/lb4_sidebar.yml index 1cef0ace6e8f..d062a4b6f9a0 100644 --- a/docs/site/sidebars/lb4_sidebar.yml +++ b/docs/site/sidebars/lb4_sidebar.yml @@ -141,6 +141,10 @@ children: url: Controllers.html output: 'web, pdf' + - title: 'Components' + url: Components.html + output: 'web, pdf' + - title: 'DataSources' url: DataSources.html output: 'web, pdf'