通过这篇文章,你会学到React -Router中的 BrowserRouter,HashRouter, 以及 微前端,路由实践的问题, 原因和解决方案。最后你会了解到lazy+suspense是什么怎么用,通过目录查看你所需要的
React -Router
BrowserRouter
- BrowserRouter是React Router v4中的一个重要组件,用于实现基于浏览器History API的路由管理
下面是一个使用BrowserRouter实现路由的示例代码:
import React from 'react';
import { BrowserRouter, Route, Switch } from 'react-router-dom';
import Home from './Home';
import About from './About';
import Contact from './Contact';
function App() {
return (
<BrowserRouter>
<Switch>
<Route exact path="/" component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</Switch>
</BrowserRouter>
);
}
export default App;
- BrowserRouter包含了三个Route组件,分别对应着三个页面(Home、About、Contact)
exact属性用于精确匹配路径Switch组件用于确保只有一个Route组件被渲染
history 感知url的变化,更新组件
HashRouter
- HashRouter是React Router v4中的另一种重要路由管理组件,用于实现基于URL哈希值的路由管理
- 与BrowserRouter不同,HashRouter使用URL中的哈希值(#)来实现路由,而不是浏览器History API
例如“/#/home”、“/#/about”等
操作同BrowserRouter
很有意思:
微前端
- 路由实践的问题
- 打开页面,白屏时间超长
- 一个旁支页面的更新升级,导致主页面直接崩溃
- 页面加载后,数据内容空白时间超长
- 原因
- js bundle 资源超大,静态资源太多
- SPA应用承载200+页面,巨石应用,变更升级风险极大
- 海量数据接口请求
- 解决
- 应用瘦身&切割
- 解决数据加载,前端数据处理耗时
什么是微前端?
- 微前端(Micro Frontends)是一种
架构风格,它将前端应用程序拆分成多个小型、独立的部分,每个部分都可以由不同的团队开发、构建和部署 - 这些部分可以
独立地运行、升级和扩展,同时又可以无缝地集成到同一个页面中,形成一个完整的前端应用程序
lazy+suspense
lazy是一个高阶组件,用于实现组件的懒加载如何使用:
const MyComponent = lazy(() => import('./MyComponent'));
Suspense是 React 16 中引入的新特性,用于实现异步数据的加载和错误处理
使用 Suspense 可以解决这个问题,可以让组件在等待异步数据时显示一个自定义的 loading 界面,从而提高用户体验
<Suspense fallback={<Loading />}>
<MyComponent />
</Suspense>
- lazy 和 Suspense 可以一起使用,用于实现组件的懒加载和异步数据的加载
- 具体的实现方式是将需要懒加载的组件通过 lazy 进行加载,然后将其包裹在 Suspense 组件中,并在 fallback 中指定一个 loading 界面即可
const MyComponent = lazy(() => import('./MyComponent'));
function App() {
return (
<div>
<Suspense fallback={<Loading />}>
<MyComponent />
</Suspense>
</div>
);
}