Introduction

umi is a routing-based framework that supports next.js-like conventional routing and various advanced routing functions, such as routing-level on-demand loading. With a complete plugin system that covers every life cycle from source code to build product, umi is able to support various functional extensions and business needs. Currently umi has almost 50+ plugins in both community and inside company.

umi is the basic front-end framework of Ant Financial, and has served 600+ applications directly or indirectly, including Java, node, mobile apps, Hybrid apps, pure front-end assets apps, CMS apps, and more. umi has served our internal users very well and we hope that it can also serve external users well.

Features

  • ๐Ÿ“ฆ Out of box, with built-in support for react, react-router, etc.
  • ๐Ÿˆ Next.js like and full featured routing conventions, which also supports configured routing
  • ๐ŸŽ‰ Complete plugin system, covering every lifecycle from source code to production
  • ๐Ÿš€ High performance, with support for PWA, route-level code splitting, etc. via plugins
  • ๐Ÿ’ˆ Support for static export, adapt to various environments, such as console app, mobile app, egg, Alipay wallet, etc
  • ๐Ÿš„ Fast dev startup, support enable dll with config
  • ๐Ÿ  Compatible with IE9, based on umi-plugin-polyfills
  • ๐Ÿ Support TypeScript, including d.ts definition and umi test
  • ๐ŸŒด Deep integration with dva, support duck directory, automatic loading of model, code splitting, etc

Architecture

The figure below is the architecture of umi.

Why not...?

next.js

The routing of next.js is relatively simple. For example, its routing configuration does not support some advanced usages such as layout, nested routing, permission routing, etc., which are common in enterprise applications. Compared to next.js, umi is more like nuxt.js at the functional level of contracted routing.