All Projects → mits-gossau → event-driven-web-components-realworld-example-app

mits-gossau / event-driven-web-components-realworld-example-app

Licence: MIT license
Exemplary real world application built with Vanilla JS Web Components in an Event Driven Architecture

Projects that are alternatives of or similar to event-driven-web-components-realworld-example-app

mm-components
Music Markups components
Stars: ✭ 50 (-9.09%)
Mutual labels:  webcomponents, vanilla-javascript, vanilla-js
Resize Observer
Polyfills the ResizeObserver API.
Stars: ✭ 540 (+881.82%)
Mutual labels:  webcomponents, event
cwco
Powerful and Fast Web Component Library with a Simple API
Stars: ✭ 27 (-50.91%)
Mutual labels:  webcomponents, vanilla-js
azeroth-event
Lightweight event-driven framework
Stars: ✭ 18 (-67.27%)
Mutual labels:  event, event-driven
Medium Zoom
🔎🖼 A JavaScript library for zooming images like Medium
Stars: ✭ 2,799 (+4989.09%)
Mutual labels:  vanilla-javascript, event
lego
🚀 Web-components made lightweight & Future-Proof.
Stars: ✭ 69 (+25.45%)
Mutual labels:  webcomponents, vanilla-js
Webcomponents From Zero To Hero
An introduction to writing raw web components.
Stars: ✭ 70 (+27.27%)
Mutual labels:  webcomponents, vanilla-javascript
Rallax.js
Dead simple parallax scrolling.
Stars: ✭ 1,441 (+2520%)
Mutual labels:  vanilla-javascript, vanilla-js
curved-menu
VanillaJS fully configurable curved menu (circular navigation)
Stars: ✭ 30 (-45.45%)
Mutual labels:  vanilla-javascript, vanilla-js
evon
Fast and versatile event dispatcher code generator for Golang
Stars: ✭ 15 (-72.73%)
Mutual labels:  event, event-driven
coding challenge-14
Understanding JavaScript and coding without the help of a library or tool
Stars: ✭ 22 (-60%)
Mutual labels:  vanilla-javascript, vanilla-js
Bs Custom File Input
A little plugin for Bootstrap 4 custom file input
Stars: ✭ 162 (+194.55%)
Mutual labels:  vanilla-javascript, vanilla-js
Mailtoui
A simple way to enhance your mailto links with a convenient user interface.
Stars: ✭ 162 (+194.55%)
Mutual labels:  vanilla-javascript, vanilla-js
Vanillajs Deck
A Vanilla.js Single Page App (SPA) slide deck for a presentation about Vanilla.js written with no frameworks.
Stars: ✭ 119 (+116.36%)
Mutual labels:  vanilla-javascript, vanilla-js
tensorflowjs-remove-background
Remove Background from the picture using WebAssembly & TensorFlow.js
Stars: ✭ 79 (+43.64%)
Mutual labels:  vanilla-javascript, vanilla-js
Masonry Layout
An efficient and fast web component that gives you a beautiful masonry layout
Stars: ✭ 43 (-21.82%)
Mutual labels:  webcomponents, vanilla-js
Vanilla Semantic Ui
Semantic UI component framework without jQuery
Stars: ✭ 97 (+76.36%)
Mutual labels:  vanilla-javascript, vanilla-js
Router.js
Router.js is a simple and powerful javascript library to handle routing
Stars: ✭ 107 (+94.55%)
Mutual labels:  vanilla-javascript, vanilla-js
js-plugin-starter-kit
VanillaJS (pure JavaScript) plugin starter with Webpack 4 and Babel 7.
Stars: ✭ 100 (+81.82%)
Mutual labels:  vanilla-javascript, vanilla-js
EventEmitter
Simple EventEmitter with multiple listeners
Stars: ✭ 19 (-65.45%)
Mutual labels:  event, event-driven

RealWorld Example App

Event Driven Architecture Vanilla JS Web Components codebase containing real world examples (CRUD, auth, advanced patterns, etc) that adheres to the RealWorld spec and API.

Demo    Test    RealWorld

This codebase was created to demonstrate a fully fledged fullstack application built with Event Driven Vanilla JS Web Components including CRUD operations, authentication, routing, pagination, and more.

We've gone to great lengths to adhere to the Document Object Model (DOM) community styleguides & best practices.

For more information on how to this works with other frontends/backends, head over to the RealWorld repo.

How it works

Frontend Event Driven Architecture works basically like the DOM itself. There are loosely coupled components (nodes), which emmit events and those get captured by controllers also called stores, routers, etc. Those controllers emmit events on their behalf, which the components can consume.

Getting started

Simply open the src/index.html on a local or remote web server like, node live-server, apache, nginx, xampp, etc. Tests: Open the test/index.html

Diagrams

Index.html

Index

pages/Home.js

Home

Explanations

  • ShadowDOM's mostly shine when encapsulating CSS. But the Conduit example has one global CSS Stylesheet and for that reason, it is more efficient not to have shadowDOM's, which all would have to import that global CSS separately. Note: The biggest strength of Web Components is their shadowDOM, means in a real life examples you would share general CSS styles through CSS variables and have specific styles on each component in their respective shadowDOM. This will improve performance, since the DOM renderer only needs to respect certain CSS for certain nodes/shadowDOM's. There is a good helper Class, which you can use to simply add CSS with the lines: this.css = '...' and to avoid resetting nodes with innerHTML, it includes a function: this.html = '' . Overall, this prototype Class helps you to easily and comfortably deal with the ShadowDOM. Have a look at: mits-gossau/web-components (work in progress)

  • Dependencie's: This application uses ZERO production dependencies. One devDependency is used for linting, see the package.json for further details.

  • Size: 35 items, totalling 143.1 kB uncompressed

Lighthouse Audits

React / Redux (81)

react-redux.realworld

Angular (75)

angular.realworld.io

Vue (82)

vue-vuex-realworld.netlify

Vanilla JS Web Components (92)

conduit-vanilla.herokuapp

Event Driven Vanilla JS Web Components (95)

event-driven-web-components-realworld-example-app

Contributions

Special Thanks to

  • rehrbar who was an essential part of developing the first PoC of an Event Driven Architecture, helping me to challenge ideas and concepts to its perfection with his profound software engineering background.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].