Nprogress实现路由加载进度[React+Vue]

本文介绍了如何在React和Vue项目中利用Nprogress插件创建路由加载进度条。在React中,通过结合使用React Router和Nprogress,可以实现在切换页面时显示进度条;而在Vue中,利用导航守卫轻松实现路由切换时的加载效果。


1. Nporgress

在很多网页的加载过程中,顶部都会展示一个进度条来显示加载进度。Nprogress 就是一款非常方便的进度条插件,其主要用法为:

NProgress.start() — 开始

NProgress.set(0.4) — 设置百分比

NProgress.inc() — 随机增长进度条(不会到达100%)

NProgress.done() — 完成

2. React中的使用

在切换页面时出现进度条,本质就是将其与路由结合使用。首先的想法是将 react-router-dom 中的 Router 组件进行封装,在 useEffect 中控制 Nprogress 的进度。

React中的 Suspenselazy 可以实现基于路由的代码拆分,其中 Suspense 组件用于指定在加载得到路由打包文件前显示一个自定义loading界面,此时需要显示的即为 Nprogress 的加载效果。

import React, {
   
    Suspense } from 'react';
import {
   
    Routes, Route } from 'react-router-dom';

import NProgress from './components/NProgress';

const Home = React.lazy(() => import('./pages/Home'));

const App: React.
React、Vite、TypeScript (TS) 和 Vue 都是现代前端开发中的流行技术栈。要将它们组合起来并配置路由,可以按照以下步骤进行: 1. **安装依赖**: - 初始化项目:首先使用 Vite 创建一个新的项目,运行 `npm create vite` 或 `yarn create vite`。 - 添加 React 和 TypeScript 支持:`npm install @vitejs/plugin-react typescript` - 如果需要 Vue 的支持,可以在 `main.ts` 或 `.eslintrc.js` 中引入,例如 `import { createApp } from 'vue'`。 2. **配置 Vite**: - 更新 `vite.config.ts`,添加 `@vitejs/plugin-react` 插件,并启用 TS 编译: ```typescript import { defineConfig } from 'vite'; import react from '@vitejs/plugin-react'; export default defineConfig({ plugins: [react()], ts: { // 设置 TypeScript 相关配置 compilerOptions: { target: 'ESNext', jsx: 'react', }, }, }); ``` 3. **创建路由**: - 使用 Vue Router 安装并配置: ```bash npm install vue-router ``` - 在 `src` 文件夹下创建一个 `router` 文件夹,并设置 `index.ts` 或 `index.js` 作为入口文件。 - 初始化路由实例,例如: ```javascript import { createRouter, createWebHistory } from 'vue-router'; const router = createRouter({ history: createWebHistory(process.env.BASE_URL), routes: [ { path: '/', component: () => import('./views/Home.vue') }, { path: '/about', component: () => import('./views/About.vue') }, ], }); ``` 4. **VueReact 之间交互**: - 如果你需要在 React 组件和 Vue 组件间共享数据,可以考虑使用 `unified-app` 或者 `vue-router-api-middleware` 这样的库来提供跨框架的路由API。 5. **使用路由守卫(如SSR、权限控制等)**: 根据需求,添加适当的全局守卫(如 `beforeEach`)或其他功能。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值