Web component JS frameworks quick overview by their syntax and features
Website: https://component-party.dev
Many JS developers don't have a good overview of every existing JS framework with their own syntax and features. How do we solve this ? Developers love having framework overview by examples. It's a quick introduction before going deeper.
Svelte 4
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataReact
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataVue 3
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataAngular
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataAngular Renaissance
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataLit
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataVue 2
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataEmber Octane
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [ ] Webapp features * [ ] Render app * [x] Fetch dataSolid.js
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataAlpine
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [ ] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [ ] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataSvelte 5
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataEmber Polaris (preview)
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [ ] Webapp features * [ ] Render app * [ ] Fetch dataMithril
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataAurelia 2
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataQwik
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataMarko
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [x] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [x] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [x] Webapp features * [x] Render app * [x] Fetch dataAurelia 1
* [x] Reactivity * [x] Declare state * [x] Update state * [x] Computed state * [x] Templating * [x] Minimal template * [x] Styling * [x] Loop * [x] Event click * [x] Dom ref * [x] Conditional * [x] Lifecycle * [x] On mount * [x] On unmount * [ ] Component composition * [x] Props * [x] Emit to parent * [x] Slot * [x] Slot fallback * [ ] Context * [x] Form input * [x] Input text * [x] Checkbox * [x] Radio * [x] Select * [ ] Webapp features * [ ] Render app * [x] Fetch dataThis site is built with Vite and Svelte. Site content is written in Markdown format located in content
. For simple edits, you can directly edit the file on GitHub and generate a Pull Request.
For local development, pnpm is preferred as package manager:
pnpm i
pnpm run dev
This project requires Node.js to be v20
or higher.
Clarity is better than optimization for Component Party
In Component Party, we prioritize clarity over optimization as our core educational focus. We aim to simplify complex overviews of different JS frameworks for easy understanding, rather than presenting over-optimized solutions. We believe that deep understanding should precede optimization, enabling learners to master the frameworks' use and discover optimization techniques independently. This approach aligns with our commitment to fostering accessible and effective learning in the field of web component JavaScript frameworks.
- Fork the project and create a new branch
- Add the new framework SVG logo in
public/framework
- Install the ESLint plugin associated to the framework
- In
frameworks.mjs
, add a new entry with SVG link and ESLint configuration - If the framework needs a language syntax highlight, add it to the call to
getHighlighter
’slangs
argument inbuild/lib/generateContent.js
- To make a playground link:
- In file
build/lib/playgroundUrlByFramework.js
, add your framework id. - The method accepts an object of filepath keys and file content values, then returns a playground URL to the framework’s online REPL with those files loaded.
- In file
This project exists thanks to all the people who contribute. [Contribute].
MIT. Made with 💖