当前位置: 首页 > wzjs >正文

天津做网站那家好vue可以做pc端网站

天津做网站那家好,vue可以做pc端网站,电子商务网站建设基础,如何帮客户做网站文章目录 前言✅ React Router vs Vue Router 对比一览🧩 React Router 的底层原理简述① 路由声明与匹配(基于 JSX)② 历史模式管理③ 响应式状态处理④ 路由渲染机制(Outlet) ✅ 总结:原理是否一样&#…

文章目录

  • 前言
    • ✅ React Router vs Vue Router 对比一览
    • 🧩 React Router 的底层原理简述
      • ① 路由声明与匹配(基于 JSX)
      • ② 历史模式管理
      • ③ 响应式状态处理
      • ④ 路由渲染机制(Outlet)
    • ✅ 总结:原理是否一样?
  • 完整示例
    • ✅ 示例目标:
    • 📦 1. 安装依赖
    • 🧩 2. 目录结构
    • 🧱 3. 实现组件
      • `App.tsx`
      • `ProtectedRoute.tsx`
      • `DashboardLayout.tsx`
      • `Profile.tsx` / `Settings.tsx`
      • `Login.tsx`
      • `Home.tsx`
    • ✅ 效果总结
      • 后续:


前言

React 社区主流使用的是 React Router,它和 Vue Router 是功能上非常类似的客户端路由库,但底层实现原理与 Vue Router 在设计理念上有显著差异


✅ React Router vs Vue Router 对比一览

特性 / 对比项Vue RouterReact Router
配置方式配置式:通过 routes 数组注册声明式:通过 JSX 结构描述嵌套关系
路由定义createRouter({ routes })<Route path="/" element={<Home />}>
路由嵌套嵌套路由由 children 配置JSX 中嵌套 <Route> 实现嵌套路由
响应式机制依赖Vue 响应式系统React 状态系统(useState, useEffect
导航守卫beforeEach, beforeRouteEnter没有内建守卫,需自定义封装逻辑组件
底层历史机制自己封装了一套 History 模块直接使用 historyreact-router-dom 的 history 包
路由渲染组件<router-view><Outlet>

🧩 React Router 的底层原理简述

React Router 的核心机制分为:

① 路由声明与匹配(基于 JSX)

  • React Router 利用 JSX 定义 Route 树,使用的是声明式 API:
<Routes><Route path="/" element={<Home />} /><Route path="/about" element={<About />} />
</Routes>
  • Routes 组件内部会解析子 Route 节点,构建匹配树并与 window.location.pathname 匹配。

② 历史模式管理

  • react-router-dom 提供的 BrowserRouter / HashRouter
<BrowserRouter>  // HTML5 History API
<HashRouter>     // Hash 模式
  • 内部使用了 history 包(https://github.com/remix-run/history)来封装 URL 操作。

③ 响应式状态处理

React Router 使用自己的 useLocation()useNavigate()useParams() 来读取当前状态或跳转。

内部用 React Context + useReducer 实现状态追踪和通知刷新。


④ 路由渲染机制(Outlet)

React Router 使用 <Outlet /> 实现嵌套路由组件插槽渲染,类似 Vue 的 <router-view>

<Route path="settings" element={<SettingsLayout />}><Route path="profile" element={<Profile />} />
</Route>

SettingsLayout 组件中使用 <Outlet /> 来渲染 Profile


✅ 总结:原理是否一样?

相同点不同点
都使用 history API 或 hash 进行地址管理Vue 用配置式路由表;React 用 JSX 声明式结构
都支持嵌套路由、动态参数、懒加载、路由组件渲染等Vue 内建导航守卫;React 需自行通过组件逻辑封装
都有 <router-view> / <Outlet> 类似插槽来决定显示哪个组件React 更强调函数式组件和 hooks,Vue 更强调响应式系统和生命周期钩子

完整示例

下面给出一个 React Router v6+ 实现导航守卫和嵌套路由的完整示例,可以类比 Vue Router 的 beforeEachmeta.requiresAuth 功能。


✅ 示例目标:

  • 实现一个登录保护机制:/dashboard 只能登录后访问。
  • 使用嵌套路由:/dashboard/profile/dashboard/settings
  • 使用 <Outlet /> 类似 Vue 的 <router-view>

📦 1. 安装依赖

npm install react-router-dom

🧩 2. 目录结构

src/
├─ App.tsx
├─ routes/
│  ├─ ProtectedRoute.tsx
│  ├─ DashboardLayout.tsx
│  ├─ Profile.tsx
│  ├─ Settings.tsx
├─ pages/
│  ├─ Login.tsx
│  ├─ Home.tsx

🧱 3. 实现组件

App.tsx

import { BrowserRouter, Routes, Route } from 'react-router-dom'
import Home from './pages/Home'
import Login from './pages/Login'
import DashboardLayout from './routes/DashboardLayout'
import ProtectedRoute from './routes/ProtectedRoute'
import Profile from './routes/Profile'
import Settings from './routes/Settings'export default function App() {return (<BrowserRouter><Routes><Route path="/" element={<Home />} /><Route path="/login" element={<Login />} />{/* 嵌套路由 + 路由守卫 */}<Route element={<ProtectedRoute />}><Route path="/dashboard" element={<DashboardLayout />}><Route path="profile" element={<Profile />} /><Route path="settings" element={<Settings />} /></Route></Route></Routes></BrowserRouter>)
}

ProtectedRoute.tsx

import { Navigate, Outlet } from 'react-router-dom'// 假设是全局变量 / 状态管理
const isAuthenticated = () => !!localStorage.getItem('token')export default function ProtectedRoute() {return isAuthenticated() ? <Outlet /> : <Navigate to="/login" />
}

📌 类似于 Vue 的导航守卫 beforeEnter


DashboardLayout.tsx

import { Outlet, Link } from 'react-router-dom'export default function DashboardLayout() {return (<div><h2>Dashboard</h2><nav><Link to="profile">Profile</Link> | <Link to="settings">Settings</Link></nav><hr /><Outlet /> {/* 嵌套路由入口 */}</div>)
}

Profile.tsx / Settings.tsx

export default function Profile() {return <div>👤 This is your profile.</div>
}export default function Settings() {return <div>⚙️ Here are your settings.</div>
}

Login.tsx

import { useNavigate } from 'react-router-dom'export default function Login() {const navigate = useNavigate()const login = () => {localStorage.setItem('token', 'dummy')navigate('/dashboard')}return <button onClick={login}>Login</button>
}

Home.tsx

import { Link } from 'react-router-dom'export default function Home() {return (<div><h1>🏠 Home Page</h1><Link to="/dashboard">Go to Dashboard</Link></div>)
}

✅ 效果总结

  • 未登录访问 /dashboard/profile 会跳转 /login
  • 登录后会自动导航回 dashboard。
  • 嵌套路由使用 <Outlet /> 插槽进行渲染,结构清晰。

后续:

  1. React Router + Zustand 权限管理系统(支持登录、角色验证、自动跳转)
  2. token 校验 + 自动续签 + 刷新记住身份 的版本
http://www.dtcms.com/wzjs/584590.html

相关文章:

  • 有没有专门做帽子的网站wordpress主题ux themes
  • 哪公司建设网站西安专业做网站的公司
  • iis 没有新建网站flash做网站的流程
  • 做网站咋做ppt 做的最好的网站
  • 广东东莞网站建设青岛网站建设公司在哪
  • 无锡做网站中企动力浙江省城乡建设监方网站
  • 黄冈市建设信息网站小工具文本wordpress
  • seo全网推广营销软件点金推广优化公司
  • php网站开发与维护职位要求怎样浏览被国内封禁的网站
  • 论述网站建设的主要步骤2个淘宝可以做情侣网站么
  • p2p网站开发的流程最美情侣免费高清视频
  • App网站建设 高品质网站建设网站后台有些不显示
  • dede产品展示网站模板外包平台
  • 电子商务网站建设与维护试卷答案四川建设网证书查询平台官网
  • 备案时网站关闭手机网站的推广
  • 网站建设冫金手指谷哥十四可以做链接的网站
  • 免费的个人网站seo 工具分析
  • 包装盒网站模板开发软件学什么专业
  • 网站产品展示怎么做陕西网站建设推广公司
  • 南京网站c建设云世家深圳企业管理咨询公司
  • 芜湖的网站建设公司简单设计网站
  • 网站页面风格分类南昌网站建设网站推广
  • 仿站怎么修改成自己的网站沈阳网站推广优化公司
  • 公司做网站那家好中国建设银行手机银行家网站
  • 注册网站要多久wordpress前缀有哪些
  • 濮阳做网站推广图片一键生成
  • 常州网站建设 个人专门做甜点的视频网站
  • 文化集团网站模板企业建设网站 入账
  • 新公司网站设计注意事项网站建设 套格式
  • 建设营销型网站的目的shopify不如wordpress