Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentation explaining some architectural concepts #7033

Open
wants to merge 12 commits into
base: master
Choose a base branch
from

Conversation

janechu
Copy link
Collaborator

@janechu janechu commented Oct 29, 2024

Pull Request

📖 Description

This PR adds documentation on the internals of FASTElement and it's lifecycle events. This is meant to serve as a general overview for contributors looking to understand the architecture of FAST custom elements.

✅ Checklist

General

  • I have included a change request file using $ npm run change
  • I have added tests for my changes.
  • I have tested my changes.
  • I have updated the project documentation to reflect my changes.
  • I have read the CONTRIBUTING documentation and followed the standards for this project.

@janechu janechu self-assigned this Oct 29, 2024
packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
Comment on lines 49 to 53
During the `ViewTemplate.create` step, the following happens for each string:
- Factories with unique IDs are created for each tag template literal argument (or `TemplateValue`) which matches with the corresponding string
- A binding is created from the `TemplateValue`

A resulting string using `createHTML` function is created using the `HTMLDirective`, the previous string from the `html` tag template which determines the aspect if one exists, these aspects are the `@`, `:`, or other binding aspect attached to attributes. The `createHTML` returns a `Markup` attribute using the factory that has a unique ID. This is all concatenated as a string and passed to a new `ViewTemplate` with all the factories (empty until one is assigned) that act as a dictionary with the unique IDs as the key to look up each factory once it has been created.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This section could use some rework.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rewrote this for hopefully more clarity, let me know if that makes sense!

packages/web-components/fast-element/ARCHITECTURE.md Outdated Show resolved Hide resolved
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants