Skip to content
This repository was archived by the owner on Jun 20, 2025. It is now read-only.
This repository was archived by the owner on Jun 20, 2025. It is now read-only.

[Performance Advice] Patching to single element or custom elements #430

Open
@hassanzohdy

Description

@hassanzohdy

Hello,

I'm using IDOM to manipulate my HTML DOM which works perfectly fine.

Here is a code snippet to illustrate my point

The main page The static one

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Some Title</title>
</head>
<body>
    <div id="app"></div>
</body>
</html>

Now when the user hits the /home page, the #app gets the following component content:

home-page.component.html

<div class="container">
    <h1>Welcome Home</h1>
    <hello-world-form></hello-world-form>
</div>

hello-world.component.html

<form (submit)="this.submitForm($el)">
    <input type="text" name="username" [value]="this.username" />
</form>

I'm using Two-way data binding which is applied in the username input as when the this.username property is changed, the input value is changed as well and vice versa.

When any change happens to any property i.e this.username i re-run the patcher from the home-page.component.html as it will go through all elements from the top.

the <hello-world> component is removed and its content is added instead.

For example the actual output in the browser will be something like:

<div class="container">
    <h1>Welcome Home</h1>
    <form (submit)="this.submitForm($el)">
        <input type="text" name="username" [value]="this.username" />
    </form>
</div>

Now my question: As i mentioned earlier, i'm applying the patch function to my #app tag which contains the content of the home-page.component.html file.

Should i leave the hello-world tag in the dom and apply the patch function to that element? i.e the dom will look like:

<div class="container">
    <h1>Welcome Home</h1>
    <hello-world>        
        <form (submit)="this.submitForm($el)">
            <input type="text" name="username" [value]="this.username" />
        </form>
    </hello-world>
</div>

Or leaving the patch function to the #app element.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions