A component is an encapsulated block of code that can be assembled together with a base and a set of other components into services, libraries or tools. Components achieve encapsulation and composability by separating their private implementation from their public interface:
Each component lives in a separate directory under the
components directory, and contains a
▾ workspace▾ components▾ mycomponent▸ src▸ test▸ resources
src directory contains at least two namespaces, one for the interface and one for the implementation:
A component's interface is a namespace that exposes a collection of functions for other components or bases to call. Each function in a component’s interface “passes-through” to an equivalent function in its private implementation (the
core namespace in this example). This “pass-through” approach enables full code navigation and refactoring, whilst maintaining encapsulation.