July 12, 2019
As your organization grows, your development teams building new features and applications may increasingly struggle with code duplication. Duplication can be combated with components-based engineering, a common practice that encourages the DRY (Do not Repeat Yourself) principle. Building a complex application using components as building blocks allows each unit to be used in different contexts. This approach is in contrast to older methodologies of building user interfaces with inheritance, which can be brittle when misused.
Using components can help your organization achieve several feats:
Well-designed and tested components can be incorporated into any project that uses the same (or compatible) framework without failure.
Components can be leveraged to prototype and develop new applications rapidly. Changes made to an individual component can immediately propagate to every application that consumes it.
The development lifecycle of components is standardized. Components are designed, developed, and tested in isolation. In addition, your users have a consistent experience across each application.
A component library is a package from which any application can pull components. The library can be published and imported as a unit, or components can be published and versioned independently.
Choose the target platform or framework
Develop and stick to conventions.
Choose which tools your team will use to build the component library
Organize your components based on complexity
Organize your components based on context
Use your own building blocks
Make components independently configurable
Make components globally configurable. Your component library should ship with a method for global configuration that adds support for global theming, timeout configuration, etc.
Create a publishing strategy
Every component in your library won’t be built from scratch. You might have existing code in an application that could be isolated and pulled into a component library. Here are a few guidelines to help with that process.
Start at the “leaves” of your application.
Move to the more complex components.
Thanks to Levvelers John Mitchell and Brenda Jiminez for contributing to this content.
Levvel helps clients transform their business with strategic consulting and technical execution services. We work with your IT organization, product groups, and innovation teams to design and deliver on your technical priorities.
We firmly believe that mentoring can be integrated with delivery. Our main focus is on saving our partners as much as possible on the lifetime-total-cost of ownership and maintainability of their systems. For more information, contact us at email@example.com.
Mariel Van Norman
Eric is a technical decision-maker. He has six years of experience engineering software in publishing and logistics spaces. He helps customers build performant and ergonomic user experiences through application of modern techniques and best practices.
Mariel Van Norman is an Engineering Consultant who specializes in front-end implementation. Previously, she taught a full stack programming bootcamp course at Tech Talent South in Charlotte, NC. In her free time, she enjoys sewing and spending time with her two cats.
This article aims to present critical issues businesses are facing in light of the COVID-19 pandemic and how to use modern data solutions to resolve, mitigate, and/or insulate businesses from those problems in the future.
This article provides insight into the legacy architecture challenges national insurers face and their impact on reaching business goals.
In this new video series, Levvel experts discuss the key aspects of providing a great experience for insureds, where technology should be introduced to the insured, insurer relationship, and how tech enables insurers to provide better experiences.
Although many companies are ready to modernize their legacy data analytics technology, there are still many issues that plague businesses from adopting modern offerings. This guide explores each of these issues, as well as how to address them.