Introduction to uiInfrastructure
The uiInfrastructure package provides a framework for building metadata-driven web applications using a rendering library and component library of your choice.
It provides:
- A fully-managed application bundling process. See Webpack.
- Client-side state management. See Redux.
- Data fetching. See RxJS.
- Plumbing for implementing interactivity between components. See RxJS.
With these tasks managed by uiInfrastructure, you are free to focus on creating interactive components and building applications with those components.
Features
Bundling
uiInfrastructure leverages Webpack by the uiBundler package to bundle and deploy web applications under the c3 namespace. Webpack configuration is provided by the rendering library-specific implementations (e.g. uiInfrastructureReact).
Client-side state management
uiInfrastructure uses Redux for client-side state management and uni-directional data flow. Component state is passed to the component renderers through a mechanism that is implemented by each rendering library integration.
See UiSdlConnected for more details.
Data fetching
Data fetching from server-side APIs is managed by RxJS.
See UiSdlDataRedux for more details.
Plumbing for implementing interactivity between components
uiInfrastructure uses RxJS for implementing interactivity between components within an application.
See UiSdlEpic and UiSdlEffectTrigger for more details.
Routing
A page in a uiInfrastructure-based web application is defined by a route that points to a target component.
See UiSdlRoute for more details.
Relation to rendering libraries
The Types and tools provided by uiInfrastructure are decoupled from any specific rendering library. In theory, its concepts can be implemented using any rendering library of your choice.
Note``: At this time uiInfrastructureReact is the only available implementation of uiInfrastructure and uses React as its rendering library.
Relation to component libraries
uiInfrastructure does not come with a prescribed component library. Rather, it provides a set of Types for developers to write their own components without having to worry about state management, data fetching, and other plumbing as mentioned above.