Portals
What are portals and why do we need another fancy terminology for a web app?
The need
In software development, be it in the server side development or client side development, the best practice that we follow is to identify and isolate the cross-cutting concerns and then use them in a separate library or package or module. This helps us test the implementation and also plug-in any newer version if the old version does need an upgrade and also to make them accessible at a global level.
HTML & Cross-Cutting Concerns
In the case of HTML, we have all been working in the rendering of the various elements in the DOM not worrying about the location of certain DOM elements and with the advent of many frameworks, we have got control on the logic and the rendering is taken care of by the framework (React, Angular etc..)
However, in case of HTML we have several components like dialogs, modals, alerts, info etc which we kind of duplicate across various HTML fragments (through components)
In order to centralize them and theme them and make them globally available, we need to find out their occurrences, study their patterns of usage and then apply the abstraction and bring them to the DOM in such a way that they can be invoked anywhere (by any component) thereby also maintaining the goodness of the implementations.
Worth of this effort
This effort is definitely worthwhile from the point of view of maintainability and clean code perspectives. We have better knowledge of how the components interact with each other and where components are used and how to use them
Not Clear?
Let's take a look at sample as given below. There is a web app which has dialogs to display information, warning or error messages to the end user from within components. The current implementation uses dialogs at the component level, meaning that if there are 5 components in a page, there will be different dialogs present for each component.
The diagram above shows the dialog component within the context of a user management component. Similar ones can be found within the customer / order like components that are used in the page.
We can make the dialog component central and have it a fixed location in the DOM so that any component can be able to leverage the dialog without owning them is a good to have feature, which is accomplished as below,
In React, the "root" is the component container that contains all the rendered component DOM elements. The dialog is available outside of the root. However being outside of the root, are we still able to control the dialog, the answer is YES.
The presence of the container divs in the DOM is as shown below in the index.html page
A well understood concept goes places rather than a solution for a specific problem :)
Happy Development.
Comments
Post a Comment