All Projects → denise-schaefer → micro-frontends

denise-schaefer / micro-frontends

Licence: MIT license
example repo for micro frontends with react and dependency inversion as integration pattern

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to micro-frontends

admincraft
Admincraft is a vue admin application quick build tool
Stars: ✭ 36 (+28.57%)
Mutual labels:  micro-frontends
event-bus
Typesafe cross-platform pubsub event bus ensuring reliable communication between fragments and micro frontends.
Stars: ✭ 15 (-46.43%)
Mutual labels:  micro-frontends
SwiftObserver
Elegant Reactive Primitives for Clean Swift Architecture #NoRx
Stars: ✭ 14 (-50%)
Mutual labels:  dependency-inversion
fronts
A progressive micro frontends framework for building Web applications
Stars: ✭ 493 (+1660.71%)
Mutual labels:  micro-frontends
react-micro-frontend-example
One approach for a micro frontend in React.
Stars: ✭ 51 (+82.14%)
Mutual labels:  micro-frontends
Micro Frontends
extending the microservice paradigms to web development
Stars: ✭ 3,862 (+13692.86%)
Mutual labels:  micro-frontends
angular-react-microfrontend
🚧 React vs Angular ? Why not both ! Micro frontend demo using Angular and React alongs with a NodeJS API
Stars: ✭ 17 (-39.29%)
Mutual labels:  micro-frontends
application-modernization-javaee-quarkus
Application Modernization Sample - From Java EE (2010) to Cloud-Native (2021)
Stars: ✭ 99 (+253.57%)
Mutual labels:  micro-frontends
qiankun-simple-main-app-web
react微前端聚合系统(qiankun.js)
Stars: ✭ 19 (-32.14%)
Mutual labels:  micro-frontends
magnet
Dependency injection library for modular Android applications
Stars: ✭ 174 (+521.43%)
Mutual labels:  dependency-inversion
micro-frontend-gateway
🌐 Micro Frontends PoC in Angular - GATEWAY
Stars: ✭ 26 (-7.14%)
Mutual labels:  micro-frontends
scalecube-js
Toolkit for working in microservices/micro-frontends architecture.
Stars: ✭ 63 (+125%)
Mutual labels:  micro-frontends
Qiankun
📦 🚀 Blazing fast, simple and complete solution for micro frontends.
Stars: ✭ 11,497 (+40960.71%)
Mutual labels:  micro-frontends
ragu
🔪 A micro-frontend framework with Server Side Rendering.
Stars: ✭ 85 (+203.57%)
Mutual labels:  micro-frontends
react-obsidian
Dependency injection framework for React and React Native applications
Stars: ✭ 17 (-39.29%)
Mutual labels:  dependency-inversion
symbiote.js
Simple, light and very powerful library to create embedded components for any purpose, with a data flow management included.
Stars: ✭ 40 (+42.86%)
Mutual labels:  micro-frontends
wasedatime-web
An unofficial web app for syllabus searching, classroom finding, and bus schedule checking at Waseda University.
Stars: ✭ 30 (+7.14%)
Mutual labels:  micro-frontends
m-app
📦 微应用容器组件,对 DOM、CSS、JS 进行硬隔离,达到真正的技术栈无关,并且运行时集成,微应用可独立开发、部署、升级。使用如 iframe 般简便,却超脱 iframe 的局限,你值得一试!
Stars: ✭ 81 (+189.29%)
Mutual labels:  micro-frontends
micro-lc
An open source micro-frontend orchestrator
Stars: ✭ 199 (+610.71%)
Mutual labels:  micro-frontends
Microfrontends
Micro-frontend Architecture in Action-微前端的那些事儿
Stars: ✭ 2,696 (+9528.57%)
Mutual labels:  micro-frontends

micro-frontends

example repo for micro frontends with react and dependency inversion as integration pattern

playground to learn how to integrate micro frontends, usages product and content search as example

Assume you have two ore more different search providers as e.g. product and content search. Both are developed in different teams which want to develop and release their features independently. But you have to integrate them in frontend like the following:

alt search-example

Why?

To scale with multiple teams in a micro services environment

  • Keep coupling low
  • One-way dependency graph
  • Specialized assets know general assets, but not vice versa

Set up

yarn build

cd app/composer
yarn serve

cd app/search
yarn serve

cd app/product
yarn serve

cd app/content
yarn serve

Open http://localhost:8080 in web browser

Architecture

Components

Dependency graph without cycles

alt components dependency

Sequence

Load HTML and JS

alt load html and js

Execute search with one product search provider

alt execute search with one product search provider

... and add additional content search provider

alt execute search with product and content search provider

... and if no results from any search provider, provide fallback with suggestions

alt fallback with suggestions

Project structure

.
├── composer
│   └── server
├── content
│   ├── client
│   └── server
├── product
│   ├── client
│   └── server
├── search
│   ├── client
│   └── server
└── search-api
    ├── lib
    └── src
    

search-api

interface to register different search providers with

  • ID
  • order
  • execute_search
  • execute_count
  • getSearchTab
  • getResultComponent

search

  • client

    • provides container stuff, like rendering search tabs or search results
    • calls search callback on active search provider
    • handles search errors, search fallback and merges suggestions from all search providers
  • server

    • delivers client js, could be a CDN as well

product

  • client

    • provides components to render search results and search tabs
    • could implement filter and use fetchData callback to re-execute search
  • server

    • delivers client js, could be a CDN as well
    • could provide REST-API in real world use case

content

same as product

composer

  • server
    • central unit that receives browser request and return html document
    • includes all scripts
    • may or may not fetch initial data and could be used for server side rendering

Slides

Uses demoit and Go

  1. Install Go
  2. Start with ./demoit slides/demo

or use PDF.

ToDos

Suspense/Loading optimization

error handling

add example and test it

layout

optimization, evt. remove react-bootstrap

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].