Recently I had to take a design and create the Angular components for this design, while working through this problem it made me think about the thought process of how as Angular developers we turn designs into working applications.
When I first looked at the design, it’s a very simple layout of a page, which has a simple form, and a few controls at the bottom of the page. The first thing I thought of was how I would divide up the sections of the page into separate components. I’d create one component for the main page, one for the form, one for the controls at the bottom of the form, then off I went creating components using the CLI.
What I really should have done is looked at the page as a whole, how it works within the application and asked myself some questions before diving into building components.
The types of questions to ask before include:
- What is the purpose of the page, what does it do?
- What are the inputs and outputs of the page?
- How will the possible components of the page pass data to other components?
- Is there already a component I can reuse for this design?
- What is the teams conventions on how pages should be built? Do they have a preferred way that components should share data?
- Is this design actually finalised? If it changes is my approach flexible enough to cope, so if the design does change is there a large amount of work to change the page?
These questions are important, because we need to plan how we are going to build out the pages/views of the applications we build.
There can be times when we as developers are given a design to implement and it at first glance looks so complex that we are not sure where to start, but I think there are a few points we should remember in order to get started.
- Iteration – the first attempt doesn’t have to be perfect, you can always iterate on the implementation
- Feedback from others – getting feedback from others is important to get their perspective, but you still have to use you original ideas as starting point
- There is no perfect way – there are many different ways to create a layout from a design, there are best practices (for efficiency and performance) but trying to hit that perfect approach first time is impossible
Angular is great, it gives us so much out of the box, but it is too easy to just start throwing out components using the Angular CLI, that this few minutes planning of how to turn a design into a set of components can be missed, which may lead to problems later.