# tencent/wujie

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/tencent-wujie).**

4,962 stars · 672 forks · TypeScript · NOASSERTION

## Links

- GitHub: https://github.com/Tencent/wujie
- Homepage: https://wujie-micro.github.io/doc/
- awesome-repositories: https://awesome-repositories.com/repository/tencent-wujie.md

## Description

Wujie is a micro-frontend framework and orchestrator designed to embed multiple independent web applications into a single host shell. It provides a system for managing the lifecycle, mounting, and state preservation of sub-applications while maintaining strict JavaScript and CSS isolation.

The framework utilizes a web component sandbox combining iframes and custom elements to prevent global variable pollution and style leakage. It features a decentralized event bus for data exchange and state synchronization between isolated micro-applications, along with a mechanism to mirror internal sub-application navigation to the browser URL.

The project covers broad capability areas including application state preservation to restore user sessions, JavaScript execution isolation, and CSS encapsulation. It also manages application lifecycle control, allowing for the mounting, unmounting, and refreshing of child applications.

## Tags

### Web Development

- [Micro-Frontend Orchestrators](https://awesome-repositories.com/f/web-development/micro-frontend-orchestrators.md) — Provides a framework for composing multiple autonomous web applications into a single unified interface with strict isolation. ([source](https://cdn.jsdelivr.net/gh/tencent/wujie@master/README.md))
- [Micro-Frontend Frameworks](https://awesome-repositories.com/f/web-development/single-page-applications/micro-frontend-frameworks.md) — Provides a framework for integrating multiple independent web applications into a single shell with strict isolation.
- [Application Embedding](https://awesome-repositories.com/f/web-development/application-embedding.md) — Embeds independent web applications into a host shell using web components and iframes for JavaScript and style isolation. ([source](https://wujie-micro.github.io/doc/guide/start.html))
- [Application Lifecycle Controls](https://awesome-repositories.com/f/web-development/application-lifecycle-controls.md) — Single-spa recreates child application instances from scratch while preserving their original configuration and properties. ([source](https://wujie-micro.github.io/doc/pack/))
- [Application Lifecycle Managers](https://awesome-repositories.com/f/web-development/application-lifecycle-managers.md) — Manages the startup and termination of sub-application instances via mounting and unmounting hooks. ([source](https://cdn.jsdelivr.net/gh/tencent/wujie@master/README.md))
- [Shadow DOM Encapsulation](https://awesome-repositories.com/f/web-development/component-based-architectures/component-based-architectures/ui-component-abstractions/shadow-dom-encapsulation.md) — Encapsulates application markup within custom elements to prevent CSS leakage and ensure consistent styling.
- [Micro-Frontend Communication](https://awesome-repositories.com/f/web-development/micro-frontend-communication.md) — Facilitates data exchange and state synchronization between isolated sub-applications using a decentralized event bus.
- [Micro-Frontend Routing](https://awesome-repositories.com/f/web-development/micro-frontend-routing.md) — Synchronizes internal sub-application navigation with the main browser URL to support refreshes and history.
- [Execution Sandboxes](https://awesome-repositories.com/f/web-development/web-components/execution-sandboxes.md) — Provides a container based on web components and iframes that prevents global variable pollution and style leakage.
- [DOM Portals](https://awesome-repositories.com/f/web-development/browser-integration-utilities/dom-event-handling/dom-portals.md) — Implements a portal mechanism that projects iframe content into the host DOM for a native component appearance.

### Software Engineering & Architecture

- [Application Lifecycle Managers](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-managers.md) — Coordinates the mounting and unmounting of applications to preserve internal state when backgrounded.
- [Cross-Application State Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/cross-application-state-synchronization.md) — Uses an event bus mechanism to keep the host shell and child applications in state synchronization. ([source](https://wujie-micro.github.io/doc/pack/))
- [Event Bus Architectures](https://awesome-repositories.com/f/software-engineering-architecture/event-bus-architectures.md) — Implements an event-driven communication architecture using a pub-sub pattern for decoupled micro-apps.
- [Global Scope Isolation](https://awesome-repositories.com/f/software-engineering-architecture/execution-control/namespace-isolation/module-isolation/architecture-isolation/global-scope-isolation.md) — Prevents global variable pollution by running micro-applications in isolated environments, eliminating the need for manual cleanup. ([source](https://wujie-micro.github.io/doc/guide/))
- [Inter-Application Communication](https://awesome-repositories.com/f/software-engineering-architecture/inter-application-communication.md) — Enables independent micro-applications to exchange data and share state using a decentralized communication pattern. ([source](https://cdn.jsdelivr.net/gh/tencent/wujie@master/README.md))
- [Pub/Sub Event Distribution](https://awesome-repositories.com/f/software-engineering-architecture/pub-sub-event-distribution.md) — Provides a pub-sub event bus for decentralized data exchange and state synchronization between isolated micro-apps.

### User Interface & Experience

- [Iframe-Based Rendering](https://awesome-repositories.com/f/user-interface-experience/extensible-interfaces/plugin-renderers/iframe-based-rendering.md) — Uses separate iframes to isolate the JavaScript execution of micro-applications, preventing global namespace pollution.
- [Style Encapsulations](https://awesome-repositories.com/f/user-interface-experience/styling-theming-systems/content-styling/component-styling-tools/component-styling/style-encapsulations.md) — Encapsulates application markup within custom web components to prevent CSS leakage and ensure consistent styling across the shell. ([source](https://wujie-micro.github.io/doc/guide/))
- [URL-Synchronized Navigation](https://awesome-repositories.com/f/user-interface-experience/url-synchronized-navigation.md) — Synchronizes the internal navigation state of sub-applications with the browser URL to support history and page refreshes. ([source](https://wujie-micro.github.io/doc/guide/))
- [View State Preservation](https://awesome-repositories.com/f/user-interface-experience/view-state-preservation.md) — Retains the internal state and interface of background applications for immediate session restoration.
- [Application State Managers](https://awesome-repositories.com/f/user-interface-experience/application-state-managers.md) — Manages application-level state to mirror navigation and preserve sessions during micro-app switching.
- [Micro Frontend Extenders](https://awesome-repositories.com/f/user-interface-experience/customizable-workspaces/workflow-extenders/micro-frontend-extenders.md) — Wraps independent micro-frontend applications into reusable components for rendering within a host template. ([source](https://wujie-micro.github.io/doc/pack/))
- [URL State Synchronizers](https://awesome-repositories.com/f/user-interface-experience/event-driven-state-managers/event-driven-state-synchronizers/architectural-state-synchronizers/url-state-synchronizers.md) — Synchronizes the internal navigation state of child applications with the browser URL for history support.

### Development Tools & Productivity

- [Micro-Frontend State Preservations](https://awesome-repositories.com/f/development-tools-productivity/database-session-management/session-state-persistence/application-state-persistence/micro-frontend-state-preservations.md) — Retains the internal state and interface of background sub-applications to restore user sessions immediately upon return. ([source](https://wujie-micro.github.io/doc/guide/))
