zoukankan      html  css  js  c++  java
  • Route in React

    谈谈 route in AntD

    路由分组与懒加载

    路由分组,可以借助于前置匹配exact={false},懒加载用于code split webpack 打包时减少初始包的体积,提供性能


    路由分组

    假设我们有一下路由

    /parent/child1
    /parent/child2
    /parent/child3
    

    那么我们可以把child1-3路由分为一组,全部挂于parent 路由下, 代码如下:
    非懒加载的代码, 改代码直接被打包到根/父路由

    \ 
    //Native
    const Parent_Lazy=()=>{
        return (
            <Suspense fallback={<Loading/>}>
              {
                React.createElement(React.lazy(()=>import('./lazy')))
              }
            </Suspense>
        )
    }
    
    // third party package loadable
    const Parent2_Lazy = loadable(()=>import('./lazy'),{
        fallback:<Loading/>
      });
    
    // 路由定义
    function Routing(){
        return (
            <>
                <ul>
                    <li><Link to="/parent/child1">Child1</Link></li>
                    <li><Link to="/parent/child2">Child2</Link></li>
                    <li><Link to="/parent/child3">Child3</Link></li>
                </ul>
            </>
        )
    }
    
    //路由匹配
    funtion Route(){
        return (
            <Route exact={false} path={`/parent`}><Parent_Lazy/></Route>;
            //<Route exact={false} path={`/parent`}><Parent2_Lazy/></Route>;
        )
    }
    
    

    懒加载的代码,下面的代码跟子组件Child1-3 一起打包,最终懒加载。

    export default function lazy(){
        return (
            <>
                <Route path={/parent/child1}><Child1/></Route>
                <Route path={/parent/child2}><Child2/></Route>
                <Route path={/parent/child3}><Child3/></Route>
            </>
        )
    }
    

    总结一下:

    • 路由分组加上懒加载,可以很方便的实现代码模块化,代码间解耦,减少单包的大小
    • loadable vs React.lazy 借用loadable 原话
      它们都支持Suspense,
      loadable: 支持 SSR, library Splitting, import(./${value});
  • 相关阅读:
    eclipse插件egit安装使用
    github 项目版本控制
    div box container随主体内容自动扩展适应的实现
    持续构建与每日集成
    Xshell连接Linux下Oracle无法回退的解决办法
    Java Data JPA +hibernate 保存或者是查询遇到的坑
    C#控件DropDownList下拉列表默认打开
    window.open居中显示
    CSV文件转JSON
    Vue自定义事件,$on(eventName) 监听事件,$emit(eventName) 触发事件
  • 原文地址:https://www.cnblogs.com/kongshu-612/p/14856754.html
Copyright © 2011-2022 走看看