路由懒加载(React和Vue)

1、为了提升性能,将懒加载的文件单独打包

在webpack.config.js配置打包成chunks

javascript 复制代码
// 打包到不同的chunks
optimization: {
    // 将动态加载(懒加载)的文件(imort())单独打包
    splitChunks: {
        chunks: "all",
    },
    // 避免分割缓存失效
    runtimeChunk: {
        name: (entrypoint) => `runtime~${entrypoint.name}`,
    },
},

2、React使用路由懒加载前后对比

(1)不使用路由懒加载

html 复制代码
import { Link, Routes, Route } from "react-router-dom"
import Home from "./pages/Home";
import About from "./pages/About";

function App() {
    return (
        <div>
            <h1>App</h1>
            <ul>
                <li>
                    <Link to="/home">Home</Link>
                </li>
                <li>
                    <Link to="/about">About</Link>
                </li>
            </ul>
            <Routes>
                <Route path="/home" element={<Home></Home>} />
                <Route path="/about" element={<About></About>} />
            </Routes>

        </div>
    )
}

不同路由文件打包到一个文件内

(2)使用路由懒加载

html 复制代码
import React, { Suspense, lazy } from "react";
import { Link, Routes, Route } from "react-router-dom"

const Home = lazy(() => import("./pages/Home"));
const About = lazy(() => import("./pages/About"));

function App() {
    return (
        <div>
            <h1>App</h1>
            <ul>
                <li>
                    <Link to="/home">Home</Link>
                </li>
                <li>
                    <Link to="/about">About</Link>
                </li>
            </ul>
            <Suspense fallback={<div>loading...</div>}>
                <Routes>
                    <Route path="/home" element={<Home></Home>} />
                    <Route path="/about" element={<About></About>} />
                </Routes>
            </Suspense>
        </div>
    )
}

export default App;

初始跳转到Home路由只加载Home的chunk文件

点击跳转到About路由开始加载About的chunk文件

3、Vue使用路由懒加载前后对比

使用vue-loder

javascript 复制代码
// router/index.js
import { createRouter, createWebHashHistory } from 'vue-router'

const Home = () => import('../views/Home')
const About = () => import('../views/About')

const routes = [
  { path: '/', redirect: '/home' },
  { path: '/home', name: 'home', component: Home },
  { path: '/about', name: 'about', component: About },
]

const router = createRouter({
  history: createWebHashHistory(),
  routes
})

export default router
html 复制代码
// App.vue
<template>
  <ul>
    <li>
      <router-link to="/home">Home</router-link>
    </li>
    <li>
      <router-link to="/about">About</router-link>
    </li>
  </ul>
  <router-view />
</template>

<script setup>
import { ref, reactive } from 'vue';

</script>

<style style="less" scoped></style>

初始跳转到Home路由只加载Home的chunk文件

点击跳转到About路由开始加载About的chunk文件

相关推荐
我命由我123457 分钟前
React - 验证 Diffing 算法、key 的作用
javascript·算法·react.js·前端框架·html·html5·js
@PHARAOH2 小时前
HOW - Kratos 入门实践(二)- 概念学习
前端·微服务·go
We་ct6 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
KerwinChou_CN6 小时前
什么是流式输出,后端怎么生成,前端怎么渲染
前端
爱上妖精的尾巴6 小时前
8-20 WPS JS宏 正则表达式-懒惰匹配
服务器·前端·javascript
网络点点滴6 小时前
组件通信props方式
前端·javascript·vue.js
二十雨辰6 小时前
[小结]-线上Bug监控
前端·bug
前端技术6 小时前
【鸿蒙实战】从零打造智能物联网家居控制系统:HarmonyOS Next分布式能力的完美诠释
java·前端·人工智能·分布式·物联网·前端框架·harmonyos
CHU7290356 小时前
指尖践行环保——旧衣服回收小程序前端功能玩法详解
前端·小程序
LawrenceLan6 小时前
38.Flutter 零基础入门(三十八):网络请求实战 http、dio —— 获取列表与刷新 UI
开发语言·前端·flutter·dart