Vue3.0路由

vue3.0 从入门到入土---复习 路由 目录 前端路由的概念与原理 ?vue-router 的基本用法 ?vue-router 的高级用法 后台管理案例 ?总结 前端路由的概念与原理 1. 什么是路由 路由(英文:router)就是对应关系。路由分为两大类 ① 后端路由 ② 前端路由 2. 回顾:后端路由 后端路由指的是: 请求方式 、 请求地址 与 function 处理函数 之间的 对应关系 。在 node.js 课程中,express 路由的基本用法如下 3. SPA 与前端路由 SPA 指的是一个 web 网站只有唯一的一个 HTML 阅读详情

入门

用 Vue + Vue Router 创建单页应用非常简单:通过 Vue.js,我们已经用组件组成了我们的应用。当加入 Vue Router 时,我们需要做的就是将我们的组件映射到路由上,让 Vue Router 知道在哪里渲染它们。下面是一个基本的例子:

HTML

<script src="https://unpkg.com/vue@3"></script>
<script src="https://unpkg.com/vue-router@4"></script>

<div id="app">
  <h1>Hello App!</h1>
  <p>
    <!--使用 router-link 组件进行导航 -->
    <!--通过传递 `to` 来指定链接 -->
    <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>` 标签-->
    <router-link to="/">Go to Home</router-link>
    <router-link to="/about">Go to About</router-link>
  </p>
  <!-- 路由出口 -->
  <!-- 路由匹配到的组件将渲染在这里 -->
  <router-view></router-view>
</div>

请注意,我们没有使用常规的 a 标签,而是使用一个自定义组件 router-link 来创建链接。这使得 Vue Router 可以在不重新加载页面的情况下更改 URL,处理 URL 的生成以及编码。我们将在后面看到如何从这些功能中获益。

router-view

router-view 将显示与 url 对应的组件。你可以把它放在任何地方,以适应你的布局。

JavaScript

// 1. 定义路由组件.
// 也可以从其他文件导入
const Home = { template: '<div>Home</div>' }
const About = { template: '<div>About</div>' }

// 2. 定义一些路由
// 每个路由都需要映射到一个组件。
// 我们后面再讨论嵌套路由。
const routes = [
  { path: '/', component: Home },
  { path: '/about', component: About },
]

// 3. 创建路由实例并传递 `routes` 配置
// 你可以在这里输入更多的配置,但我们在这里
// 暂时保持简单
const router = VueRouter.createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: VueRouter.createWebHashHistory(),
  routes, // `routes: routes` 的缩写
})

// 5. 创建并挂载根实例
const app = Vue.createApp({})
//确保 _use_ 路由实例使
//整个应用支持路由。
app.use(router)

app.mount('#app')

// 现在,应用已经启动了!

通过调用 app.use(router),我们可以在任意组件中以 this.$router 的形式访问它,并且以 this.$route 的形式访问当前路由:

// Home.vue
export default {
  computed: {
    username() {
      // 我们很快就会看到 `params` 是什么
      return this.$route.params.username
    },
  },
  methods: {
    goToDashboard() {
      if (isAuthenticated) {
        this.$router.push('/dashboard')
      } else {
        this.$router.push('/login')
      }
    },
  },
}

要在 setup 函数中访问路由,请调用 useRouter 或 useRoute 函数。我们将在 Composition API 中了解更多信息。

在整个文档中,我们会经常使用 router 实例,请记住,this.$router 与直接使用通过 createRouter 创建的 router 实例完全相同。我们使用 this.$router 的原因是,我们不想在每个需要操作路由的组件中都导入路由。

带参数的动态路由匹配

很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个 User 组件,它应该对所有用户进行渲染,但用户 ID 不同。在 Vue Router 中,我们可以在路径中使用一个动态字段来实现,我们称之为 路径参数 :

const User = {
  template: '<div>User</div>',
}

// 这些都会传递给 `createRouter`
const routes = [
  // 动态字段以冒号开始
  { path: '/users/:id', component: User },
]

现在像 /users/johnny 和 /users/jolyne 这样的 URL 都会映射到同一个路由。

路径参数 用冒号 : 表示。当一个路由被匹配时,它的 params 的值将在每个组件中以 this.$route.params 的形式暴露出来。因此,我们可以通过更新 User 的模板来呈现当前的用户 ID:

const User = {
  template: '<div>User {{ $route.params.id }}</div>',
}

你可以在同一个路由中设置有多个 路径参数,它们会映射到 $route.params 上的相应字段。例如:

匹配模式匹配路径$route.params
/users/:username/users/eduardo{ username: 'eduardo' }
/users/:username/posts/:postId/users/eduardo/posts/123{ username: 'eduardo', postId: '123' }

除了 $route.params 之外,$route 对象还公开了其他有用的信息,如 $route.query(如果 URL 中存在参数)、$route.hash 等。你可以在 API 参考中查看完整的细节。

这个例子的 demo 可以在这里找到。

响应路由参数的变化

使用带有参数的路由时需要注意的是,当用户从 /users/johnny 导航到 /users/jolyne 时,相同的组件实例将被重复使用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会被调用。

要对同一个组件中参数的变化做出响应的话,你可以简单地 watch $route 对象上的任意属性,在这个场景中,就是 $route.params :

const User = {
  template: '...',
  created() {
    this.$watch(
      () => this.$route.params,
      (toParams, previousParams) => {
        // 对路由变化做出响应...
      }
    )
  },
}

或者,使用 beforeRouteUpdate 导航守卫,它也可以取消导航:

const User = {
  template: '...',
  async beforeRouteUpdate(to, from) {
    // 对路由变化做出响应...
    this.userData = await fetchUser(to.params.id)
  },
}

捕获所有路由或 404 Not found 路由

常规参数只匹配 url 片段之间的字符,用 / 分隔。如果我们想匹配任意路径,我们可以使用自定义的 路径参数 正则表达式,在 路径参数 后面的括号中加入 正则表达式 :

const routes = [
  // 将匹配所有内容并将其放在 `$route.params.pathMatch` 下
  { path: '/:pathMatch(.*)*', name: 'NotFound', component: NotFound },
  // 将匹配以 `/user-` 开头的所有内容,并将其放在 `$route.params.afterUser` 下
  { path: '/user-:afterUser(.*)', component: UserGeneric },
]

在这个特定的场景中,我们在括号之间使用了自定义正则表达式,并将pathMatch 参数标记为可选可重复。这样做是为了让我们在需要的时候,可以通过将 path 拆分成一个数组,直接导航到路由:

this.$router.push({
  name: 'NotFound',
  params: { pathMatch: this.$route.path.split('/') },
})

更多内容请参见重复参数部分。

如果你正在使用历史模式,请务必按照说明正确配置你的服务器。

高级匹配模式

Vue Router 使用自己的路径匹配语法,其灵感来自于 express,因此它支持许多高级匹配模式,如可选的参数,零或多个 / 一个或多个,甚至自定义的正则匹配规则。请查看高级匹配文档来探索它们。

路由的匹配语法

大多数应用都会使用 /about 这样的静态路由和 /users/:userId 这样的动态路由,就像我们刚才在动态路由匹配中看到的那样,但是 Vue Router 可以提供更多的方式!

TIP

为了简单起见,所有的路由都省略了 component 属性,只关注 path 值。

在参数中自定义正则

当定义像 :userId 这样的参数时,我们内部使用以下的正则 ([^/]+) (至少有一个字符不是斜杠 / )来从 URL 中提取参数。这很好用,除非你需要根据参数的内容来区分两个路由。想象一下,两个路由 /:orderId 和 /:productName,两者会匹配完全相同的 URL,所以我们需要一种方法来区分它们。最简单的方法就是在路径中添加一个静态部分来区分它们:

const routes = [
  // 匹配 /o/3549
  { path: '/o/:orderId' },
  // 匹配 /p/books
  { path: '/p/:productName' },
]

但在某些情况下,我们并不想添加静态的 /o /p 部分。由于,orderId 总是一个数字,而 productName 可以是任何东西,所以我们可以在括号中为参数指定一个自定义的正则:

const routes = [
  // /:orderId -> 仅匹配数字
  { path: '/:orderId(\\d+)' },
  // /:productName -> 匹配其他任何内容
  { path: '/:productName' },
]

现在,转到 /25 将匹配 /:orderId,其他情况将会匹配 /:productName。routes 数组的顺序并不重要!

TIP

确保转义反斜杠( \ ),就像我们对 \d (变成\\d)所做的那样,在 JavaScript 中实际传递字符串中的反斜杠字符。

可重复的参数

如果你需要匹配具有多个部分的路由,如 /first/second/third,你应该用 *(0 个或多个)和 +(1 个或多个)将参数标记为可重复:

const routes = [
  // /:chapters ->  匹配 /one, /one/two, /one/two/three, 等
  { path: '/:chapters+' },
  // /:chapters -> 匹配 /, /one, /one/two, /one/two/three, 等
  { path: '/:chapters*' },
]

这将为你提供一个参数数组,而不是一个字符串,并且在使用命名路由时也需要你传递一个数组:

// 给定 { path: '/:chapters*', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 产生 /
router.resolve({ name: 'chapters', params: { chapters: ['a', 'b'] } }).href
// 产生 /a/b

// 给定 { path: '/:chapters+', name: 'chapters' },
router.resolve({ name: 'chapters', params: { chapters: [] } }).href
// 抛出错误,因为 `chapters` 为空 

这些也可以通过在右括号后添加它们与自定义正则结合使用:

const routes = [
  // 仅匹配数字
  // 匹配 /1, /1/2, 等
  { path: '/:chapters(\\d+)+' },
  // 匹配 /, /1, /1/2, 等
  { path: '/:chapters(\\d+)*' },
]

可选参数

你也可以通过使用 ? 修饰符(0 个或 1 个)将一个参数标记为可选:

const routes = [
  // 匹配 /users 和 /users/posva
  { path: '/users/:userId?' },
  // 匹配 /users 和 /users/42
  { path: '/users/:userId(\\d+)?' },
]

请注意,* 在技术上也标志着一个参数是可选的,但 ? 参数不能重复。

调试

如果你需要探究你的路由是如何转化为正则的,以了解为什么一个路由没有被匹配,或者,报告一个 bug,你可以使用路径排名工具。它支持通过 URL 分享你的路由。

嵌套路由

一些应用程序的 UI 由多层嵌套的组件组成。在这种情况下,URL 的片段通常对应于特定的嵌套组件结构,例如:

/user/johnny/profile                     /user/johnny/posts
+------------------+                  +-----------------+
| User             |                  | User            |
| +--------------+ |                  | +-------------+ |
| | Profile      | |  +------------>  | | Posts       | |
| |              | |                  | |             | |
| +--------------+ |                  | +-------------+ |
+------------------+                  +-----------------+

通过 Vue Router,你可以使用嵌套路由配置来表达这种关系。

接着上节创建的 app :

<div id="app">
  <router-view></router-view>
</div>
const User = {
  template: '<div>User {{ $route.params.id }}</div>',
}

// 这些都会传递给 `createRouter`
const routes = [{ path: '/user/:id', component: User }]

这里的 <router-view> 是一个顶层的 router-view。它渲染顶层路由匹配的组件。同样地,一个被渲染的组件也可以包含自己嵌套的 <router-view>。例如,如果我们在 User 组件的模板内添加一个 <router-view>:

const User = {
  template: `
    <div class="user">
      <h2>User {{ $route.params.id }}</h2>
      <router-view></router-view>
    </div>
  `,
}

要将组件渲染到这个嵌套的 router-view 中,我们需要在路由中配置 children:

const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      {
        // 当 /user/:id/profile 匹配成功
        // UserProfile 将被渲染到 User 的 <router-view> 内部
        path: 'profile',
        component: UserProfile,
      },
      {
        // 当 /user/:id/posts 匹配成功
        // UserPosts 将被渲染到 User 的 <router-view> 内部
        path: 'posts',
        component: UserPosts,
      },
    ],
  },
]

注意,以 / 开头的嵌套路径将被视为根路径。这允许你利用组件嵌套,而不必使用嵌套的 URL。

如你所见,children 配置只是另一个路由数组,就像 routes 本身一样。因此,你可以根据自己的需要,不断地嵌套视图。

此时,按照上面的配置,当你访问 /user/eduardo 时,在 User 的 router-view 里面什么都不会呈现,因为没有匹配到嵌套路由。也许你确实想在那里渲染一些东西。在这种情况下,你可以提供一个空的嵌套路径:

const routes = [
  {
    path: '/user/:id',
    component: User,
    children: [
      // 当 /user/:id 匹配成功
      // UserHome 将被渲染到 User 的 <router-view> 内部
      { path: '', component: UserHome },

      // ...其他子路由
    ],
  },
]

这个例子的 demo 可以在这里找到。

vue3.0系列(vue2.6-cli3.x)路由传参(监听路由参数) ;(function () { const template = `<div class="jumbotron"> <h1>{{ id }}</h1> <h2>{{ sportDetail.title }}</h2> <p>{{ sportDetail.content }... 阅读详情

相关推荐

三、vue3.0之路由(vue-router)配置及语法

vue3.0的路由(vue-router)

张先森的博客 1万+

vue3.0-路由

1. 前端路由的概念与原理 1)什么是路由 路由(router)就是对应关系。路由分为两大类: 后端路由 前端路由 2)后端路由 后端路由指的是:请求方式、请求地址与function处理函数之间的对应关系。 在node.js中,express路由的基本用法如下: 3)SPA与前端路由 SPA指的是一个web网站只有唯一的一个HTML页面,所有组件的展示与切换都在这唯一的一个页面内完成。此时,不同组件之间的切换需要通过前端路由来实现。 即在SPA项目中,不同功能之间的切换,要依...

qq_52822043的博客 2610

3、vue3.0的路由跳转和传参详情(开始登录页)

vue3.x中路由跳转中,我们依然可以使用router-link,但是不能使用this.$router。 vue3.0新增API:useRouter和useRoute,也就是我们的编程式导航:router.push(location, onComplete?, onAbort?) 下面来看我们的具体代码: <template> <div class="login-page"> <div class="u-flex-col">

qq_35032712的博客 2606

Vue 3.0 路由

一、路由概念和原理 后端路由:请求方式、请求地址与 function 处理函数之间的对应关系 const express = require('express') const router = express.Router() router.get('/userlist',function(req,res){/*路由处理函数*/}) router.post('/adduser',function(req,res){/*路由处理函数*/}) module.exports = router 前端路.

Grapelet123的博客 2083

九、vue3.0路由配置及跳转

vue3.0路由配置及跳转

张先森的博客 4577

PaddleOCR实战:DBnet++与DBnet模型训练全流程解析

本文详细解析了基于PaddleOCR框架的DBnet与DBnet++文字检测模型的完整训练流程。从环境配置、数据集准备、配置文件解读,到模型训练、评估调参及最终推理部署,提供了实战指南。重点对比了DBnet++与DBnet在精度、速度及适用场景上的差异,帮助开发者高效构建定制化的OCR检测模型。

weixin_29038155的博客 333

Vue3.0 路由的配置

创建项目 vue create demo 升级3.0 注意区分: VueCLI3.0和Vue3.0 由于 vue-cli 没有直接支持创建 Vue3.0 项目,所以需要通过插件升级,我们输入指令: vue add vue-next 升级后的版本 "dependencies": { "core-js": "^3.6.5", "vue": "^3.0.0-beta.1", "vue-class-component": "^8.0.0-0", "vue-router": "

weixin_42331327的博客 5746

S7-1500与WinCC GroupDisplay组显示的高效配置指南

本文详细介绍了S7-1500 PLC与WinCC GroupDisplay组显示功能的高效配置方法,涵盖报警状态配置、WinCC端组显示控件设置及常见问题排查。通过实战案例和优化建议,帮助工程师快速掌握工业自动化项目中报警信息可视化的关键技术,提升生产线监控效率。

weixin_29292535的博客 440

vue3.0中如何使用路由进行跳转和传参以及取出路由的值

1、在vue2.0中的路由跳转 2、在vue2.0中取出路由的传值 3、在vue3.0中取消了vue2.0的部分api,新增的两个APIuseRouter,useRoute。 4、vue3.0中路由跳转 1、第一步先引入import{useRouter}from'vue-router'; 2、第二步constrouter=useRouter(); 3、第三步router.push({path:'/home',query:{id:'12'}}) 5、vue...

qq_43574079的博客 2万+

R语言WGCNA实战:从基因表达矩阵到模块可视化全流程(附避坑指南)

本文详细介绍了使用R语言进行WGCNA(加权基因共表达网络分析)的完整实战流程,涵盖从基因表达矩阵预处理、软阈值选择、网络构建与模块识别,到模块与表型关联分析及结果可视化的关键步骤。文章重点解析了代码实现,并提供了针对数据质量检查、参数调整等常见问题的避坑指南,帮助生物信息学研究者高效挖掘基因共表达模块的生物学意义。

weixin_29062823的博客 578

家人们,谁懂啊,dify又报错了:[models] Bad Request Error, 500 Server Error:Internal Server Error for url: http://

本来今天下班,坐在地铁上,一身劳累。一起上班的小兄弟儿,突然甩来一张截图:老大!dify又报错了。没办法,一到家就打开电脑,开始排查。

xiezhipu的博客 882

解决vue3.0路由*匹配404报错

vue3.0, 路由配置404页面方式调整 1. history version 以下这段代码放在router的最下方,用于匹配地址栏映射不到路由地址的情况 { path: '*', name: '404', component: () => import('@/view/404') } 2. newest version 继续用上述方式会导致控制台报错 路由写法不兼容的问题导致的,调整至如下,问题解决 { path: '/404', name: '404',

- 1万+

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】

基于反事实的因果推理Causal inference based on counterfactuals--一万六千字文献详细解读(因果关系的推理应用)【全文总结】---来自一位即将入学的准研一,也希望这篇文章能够激励自己不断走下去!!

qq_46044325的博客 4441

路由钩子 单独_vue3.0项目搭建详细过程以及路由配置

一、vue3.0安装首先是安装Vue3,如下:安装 vue-cli: yarn add @vue/cli -g // 当然也可以选npm或者cnpm安装检查是否安装成功: E: minepro myweek > vue - V @vue / cli 4.5 .6 1. 创建项目 vue create vue5(项目名称) 选择红色区域后回车:然后耐心等待安装:2. 启动项目安装完成后,根...

weixin_33358099的博客 957

下拉式菜单设计——Power BI

Power BI导航设计:多级下拉菜单

weixin_41542593的博客 5433

【系统架构设计师】十、统一建模语言UML(基本概念|UML2.0|SysML)

UML 2.0 提供了 14 种图,分别是类图、对象图、用例图、序列图、通信图(协作图)、状态图、活动图、构件图(组件图)、部署图、制品图、组合结构图、包图、交互概览图和计时图(定时图)。序列图、通信图、交互概览图和计时图均被称为交互图。 系统建模语言(SysML)是一种通用图形建模语言,用于指定,分析,设计和验证可能包括硬件,软件,信息,人员,程序和设施的复杂系统。特别是,该语言提供了图形表示,其具有用于建模系统需求,行为,结构和参数的语义基础,用于与其他工程分析模型集成。

帅次的博客 2520

vue3.0项目搭建详细过程以及路由配置

vue3.0项目搭建以及路由router配置vue3.0项目搭建以及路由router配置一、安装二、路由1. 路由版本2. 路由说明3. 路由配置5. 路由调用6. 路由使用7. 效果图三、组件四、Vuex vue3.0项目搭建以及路由router配置 一、安装 安装 vue-cli: yarn add @vue/cli -g 检查是否安装成功: E: \minepro\ myweek > vue - V @vue / cli 4.5 .6 创建项目: vue create vue5

谨言不言☞博客 8198

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Vue3.0路由跳转方式

Vue3.0路由跳转方式 路由标签router-view的理解

zxyhj的博客 7757

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

vue3.0之动态路由的添加

目录vue3.0之动态路由的添加router / index.tsLogin.vue不同账号请求的数据不同在admin2 登录的账号之中测试,点击 组件2,然后跳转的时候,去到空页面,点击组件1,跳转到 demo1页面之中,实现了动态路由了App.vue vue3.0之动态路由的添加 使用路由的 router.addRoute 方法 去添加路由 import { useRouter } from 'vue-router' const router = useRouter() router.ad

weixin_43845137的博客 2410

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

vue3.0接收路由传递的参数

引入useRouter//useRouter是全局的路由对象。

Sb1784591708的博客 4495

vue3.0路由注册

vue3.0基础路由注册使用 注:使用vue-cli搭建起来的项目架构在引入vue-router时可能会因为默认的vue-router版本过低而导致报错 解决方法:cnpm install vue-router@next --save 第一步创建router.js文件 import { createRouter, createWebHashHistory } from 'vue-router' const routes = [ { path: '/test1', name: '/tes

qq_39844855的博客 1682

VUE3.0,DAY63,Vue路由传参、路由命名、params参数、props配置

VUE3.0,DAY63案例准备传递参数路由命名params参数props配置 案例准备 接上一篇案例,我们准备了两个类似按钮的东西,About和Home,点击Home又弹出News和Message。现在我们需要在点击Message下的信息,在弹出详情信息。 追加新建一个Detail.vue,里边代码如下: <template> <ul> <li>消息编号:</li> <li>消息标题:</li> </ul

疯子的梦想@的博客 1518

Tauri2.0、VUE3路由及用户登录页设计

本文介绍了如何使用Tauri2.0和Vue3实现一个用户登录页面,并配置路由。首先,通过安装vue-router并创建路由实例,配置基本路由信息。接着,在main.ts中挂载路由,并在App.vue中设置路由出口。然后,详细设计了登录页面的样式布局,包括左右两侧的容器、表单组件以及背景图片的配置。最后,针对Tauri2.0的桌面应用特性,配置了头部样式,使用vite-plugin-svg-icons插件实现图标展示。整个过程涵盖了从路由配置到页面设计的完整流程,适合开发桌面或网页应用的参考。

weixin_39141295的博客 1663

VUE3.0 路由详解

一,下载安装 此地址可以直接下载https://unpkg.com/vue-router@4 下载后安装: npm install vue-router 二,创建路由 HTML: <template> <!--使用 router-link 组件进行导航 --> <!--通过传递 `to` 来指定链接 --> <!--`<router-link>` 将呈现一个带有正确 `href` 属性的 `<a>..

m0_58856160的博客 1867

vue 3.0 静态路由配置

其中path表示的是页面将要跳转的地址,name表示该页面的name属性,component表示该页面在项目中的位置。上述代码中首先引入了vue的路由依赖,设置了首页地址,404界面地址和我们的业务地址。其次是main.js文件的配置,这部分配置主要是添加router依赖。紧接着在建立的router文件夹中新建一个index.js文件。今天研究了一下vue3.0的静态路由配置,分享一下。或者省略这一步,直接在浏览器中输入跳转地址也可以。做完这些后,我们在VUE页面中设置跳转连接。

一起学习一起进步~ 1429
上一篇: vue3.0知识点学习
下一篇: Mockjs
ButOf
博客等级 码龄5年 8粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值