Vue基础知识总结 3:vue常用标签

Vue 开发:打造多功能标签云组件 通过本文的介绍,我们详细阐述了如何使用 Vue 开发一个多功能的标签云组件。从需求分析出发,确定了组件的基本功能、交互功能和其他功能;通过技术选型,选择了合适的技术栈来实现组件;在代码实现部分,给出。 阅读详情
AI摘要

本文详细介绍了Vue.js的基础标签和用法,包括v-for、v-if/v-show、事件处理、计算属性、响应式数组方法等,并通过购物车案例展示了Vue的综合应用。此外,还提供了Vue知识体系的上下文链接,帮助读者深入学习。

🍅 作者简介:哪吒,优快云2021博客之星亚军🏆、新星计划导师✌、博客专家💪

🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

🍅 关注公众号【哪吒编程】,回复1024,获取Java学习路线思维导图、大厂面试真题、加入万粉计划交流群、一起学习进步

目录

一、vue常用标签简介

1、v-for和@click实现点击赋予红色效果

2、合并两个字符串

3、计算属性的复杂操作

4、var没有块级作用域,let有块级作用域

5、const 常量的定义

6、v-on的参数问题

7、v-on修饰符

8、v-if

9、v-show

10、v-for遍历对象

11、哪些数组的方法是响应式的

二、购物车综合案例

1、index.html

2、index.js

3、style.css

4、实现效果


一、vue常用标签简介

1、v-for和@click实现点击赋予红色效果

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    .active{
      color: red;
    }
  </style>

</head>
<body>
<div id="app">
  <ul>
    <li v-for="(item,index) in girls"
        v-bind:class="{active:currentIndex == index}"
        @click="liClick(index)">{{item}}</li>
  </ul>
</div>

<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好',
      girls: ['比比东','千仞雪','美杜莎','云韵','雅妃'],
      currentIndex: 0
    },
    methods: {
      liClick(index){
        this.currentIndex = index
      }
    }
  })
</script>
</body>
</html>

2、合并两个字符串

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">{{fullName}}</div>

<script src="../js/vue.js"></script>
<script>
    let app = new Vue({
      el: '#app',
      data: {//定义数据
        message: '哪吒',
        firstName: '无情',
        lastName:'冷血'
      },
      computed: {
          fullName: function () {
            return this.firstName + ' ' + this.lastName
          }
      }
    })
</script>
</body>
</html>

3、计算属性的复杂操作

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="app">{{es62}}</div>

<script src="../js/vue.js"></script>
<script>
    let app = new Vue({
      el: '#app',
      data: {//定义数据
        girls: [
            {name: '千仞雪',age:18},
            {name: '云韵',age:20},
            {name: '比比东',age:25},
            {name: '美杜莎',age:22}
        ]
      },
      computed: {
          ageSum: function () {
            let sum = 0
            let result = 0
            for(let i = 0;i<this.girls.length;i++){
              sum += this.girls[i].age
            }
            result = sum/this.girls.length;
            return result
          },
          es6: function () {
            let sum = 0
            let result = 0
            for(let i in this.girls){
              sum += this.girls[i].age
            }
            result = sum/this.girls.length;
            return result
          },
          es62: function () {
            let sum = 0
            let result = 0
            for(let girl of this.girls){
              sum += girl.age
            }
            result = sum/this.girls.length;
            return result
          }
      }
    })
</script>
</body>
</html>

4、var没有块级作用域,let有块级作用域

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">{{message}}</div>

<script src="../js/vue.js"></script>
<button>按钮1</button>
<button>按钮2</button>
<button>按钮3</button>
<button>按钮4</button>
<button>按钮5</button>
<script>
    let app = new Vue({
        el: '#app',
        data: {//定义数据
            message: '哪吒'
        }
    })

    // 因为ES5前if和for都没有块级作用域,所以很多时候引入function的块级作用域
    var btns = document.getElementsByTagName('button');
    for(var i = 0;i<btns.length;i++){
      (function (i) {
        btns[i].addEventListener('click',function () {
          console.log('第'+i+'个按钮被点击');
        })
      })(i)
    }

    const btns = document.getElementsByTagName('button')
    for(let i = 0;i<btns.length;i++){
      btns[i].addEventListener('click',function () {
        console.log('第'+i+'个按钮被点击');
      })
    }
</script>
</body>
</html>

5、const 常量的定义

6、v-on的参数问题

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <button @click="btnClick(abc, $event)">按钮</button>
</div>
<script src="../js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#app',
    data: {//定义数据
      message: '哪吒',
      abc: 123
    },
    methods: {
      btnClick(abc,event){
        console.log(abc, event);
      }
    }
  })
</script>
</body>
</html>

7、v-on修饰符

  • stop - 调用 event.stopPropagation(),停止冒泡。
  • prevent - 阻止默认事件修饰符
  • capture - 添加事件侦听器时使用 capture 模式。
  • self - 只能在event.target是当前元素自身时触发处理函数
  • {keyCode | keyAlias} - 只当事件是从特定键触发时才触发回调。
  • native - 监听组件根元素的原生事件。
  • once - 使事件只能被触发一次
  • left - (2.2.0) 只当点击鼠标左键时触发。
  • right - (2.2.0) 只当点击鼠标右键时触发。
  • middle - (2.2.0) 只当点击鼠标中键时触发。
  • passive - (2.3.0) 以 { passive: true } 模式添加侦听器

8、v-if

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <span v-if="isUser">
    <label for="username">用户账号</label>
    <input type="text" id="username" placeholder="用户账号" key="username">
  </span>
  <span v-else>
    <label for="email">用户邮箱</label>
    <input type="text" id="email" placeholder="用户邮箱"  key="email">
  </span>
  <button @click="isUser = !isUser">切换类型</button>
</div>

<script src="../js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#app',
    data: {//定义数据
      message: '哪吒',
      isUser: true
    }
  })
</script>
</body>
</html>

注:通过key=username解决input复用问题,input复用机制是vue底层为了缓存而制定的策略。

9、v-show

10、v-for遍历对象

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="item in user">{{item}}</li>
  </ul>

  <ul>
    <li v-for="(key, value) in user">{{key}}-{{value}}</li>
  </ul>
</div>

<script src="../js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#app',
    data: {//定义数据
      message: '哪吒',
      user: {
        name: '哪吒',
        age: 18,
        address: '大连'
      }
    }
  })
</script>
</body>
</html>

key的作用主要是为了高效的更新虚拟DOM。

11、哪些数组的方法是响应式的

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<div id="app">
  <ul>
    <li v-for="item in girls" :key="item">{{item}}</li>
  </ul>
  <button @click="btnClick">按钮</button>
</div>

<script src="../js/vue.js"></script>
<script>
  let app = new Vue({
    el: '#app',
    data: {//定义数据
      message: '哪吒',
      girls: [
          '比比东','云韵','美杜莎','雅妃'
      ]
    },
    methods: {
      // 响应式方法简介
      btnClick(){
        //1.push方法
        this.girls.push('哪吒')
        //2.pop():删除数组中的最后一个元素
        this.girls.pop()
        //3.shift():删除数组中的第一个元素
        this.girls.shift()
        //4.unshift():在数组最前面添加元素
        this.girls.unshift('哪吒')
        this.girls.unshift('优快云','哪吒')
        //5.splice():删除元素/插入元素/替换元素
        //删除元素:第二个参数表示你要删除几个元素
        //插入元素:第二个参数,传入0,后面加上要插入的元素
        //替换元素:第二个参数,表示我们要替换几个元素,后面是用于替换前面元素的新元素
        //splice(start)
        this.girls.splice(2,2,'无情','冷血')
        //6.sort()
        this.girls.sort()
        //7.reverse()
        this.girls.reverse()
        //8.注意:通过索引值修改数组中的元素,不是响应式的
        this.girls[0] = '云芝'
        //9.set(要修改的元素,索引值,修改后的值)
        Vue.set(this.girls,0,'云芝啊')
      }
    }
  })
</script>
</body>
</html>

非响应式“云芝”写入失败。

响应式,“云芝”写入成功

二、购物车综合案例

需求分析:通过动态加载数据,价格格式化展示,数量可增可减,可移除购物车,可清空购物车。

1、index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <div id="app">
    <div v-if="girls.length">
      <table>
        <thead>
        <tr>
          <th></th>
          <th>名字</th>
          <th>年龄</th>
          <th>价格</th>
          <th>数量</th>
          <th>技能</th>
          <th>操作</th>
        </tr>
        </thead>
        <tbody>
        <tr v-for="(item,index) in girls">
          <td>{{item.id}}</td>
          <td>{{item.name}}</td>
          <td>{{item.age}}</td>
          <td>{{item.price | showPrice}}</td>
          <td>
            <button @click="decrement(index)"
                    :disabled="item.count <= 1">-</button>
            {{item.count}}
            <button @click="increment(index)">+</button>
          </td>
          <td>{{item.skill}}</td>

          <td>
            <button @click="removeHandler(index)">移除</button>
          </td>
        </tr>
        </tbody>
      </table>
      <h2>总价格:{{totalPrice | showPrice}}</h2>
    </div>
    <h2 v-else>购物车为空</h2>
  </div>
  <script src="../js/vue.js"></script>
  <script src="index.js"></script>
</body>
</html>

2、index.js

const app = new Vue({
  el: '#app',
  data: {
    girls: [
      {
        id: 1,
        name: '比比东',
        age: 18,
        count: 1,
        skill: '不死之身',
        price: 100.00
      },{
        id: 2,
        name: '千仞雪',
        age: 20,
        count: 1,
        skill: '天使圣剑',
        price: 25.00
      },{
        id: 3,
        name: '美杜莎',
        age: 17,
        count: 1,
        skill: '美杜莎的凝望',
        price: 19.00
      },{
        id: 4,
        name: '云韵',
        age: 25,
        count: 1,
        skill: '风之极陨杀',
        price: 1999.99
      },{
        id: 5,
        name: '雅妃',
        age: 21,
        count: 1,
        skill: '红衣诱惑',
        price: 68.00
      }
  ]
  },
  methods :{
    increment(index){
      this.girls[index].count++
    },
    decrement(index){
      this.girls[index].count--
    },
    removeHandler(index){
      this.girls.splice(index, 1)
    }
  },
  computed: {
    totalPrice(){
      let totalPrice = 0;
      for(let i=0;i<this.girls.length;i++){
        totalPrice += this.girls[i].price * this.girls[i].count;
      }
      return totalPrice;
    }
  },
  filters: {
    showPrice(price) {
      return '$' + price.toFixed(2)
    }
  }
})

3、style.css

table {
  border: 1px solid #e9e9e9;
  border-collapse: collapse;
  border-spacing: 0;
}
th,td {
  padding: 8px 16px;
  border: 1px solid #e9e9e9;
  text-align: left;
}

th {
  background-color: #f7f7f7;
  color: #5c6b77;
  font-weight: 600;
}

4、实现效果

通过移除,清空购物车。 

🍅 作者简介:哪吒,优快云2021博客之星亚军🏆、新星计划导师✌、博客专家💪

🍅 哪吒多年工作总结:Java学习路线总结,搬砖工逆袭Java架构师

🍅 关注公众号【哪吒编程】,回复1024,获取Java学习路线思维导图、大厂面试真题、加入万粉计划交流群、一起学习进步

上一篇:Vue知识体系总结 2:Vue动态绑定v-bind

下一篇:Vue知识体系总结 4:Vue组件化开发

关注公众号,备注1024,获取Java学习路线思维导图、加入万粉计划交流群 

VUEJS项目实践十之Uncaught ReferenceError: Vue is not defined external “Vue“?548a:1 一、问题背景: 嫌弃vue打包文件太大了,几个页面竟达十几M,优化打包文件的时候,出现了这个问题 Uncaught ReferenceError: Vue is not defined at eval (external “Vue”?548a:1) 二、解决办法 经过周密检查和验证,得出结论, 引入文件的地方放错啦,放的太后面了 错误的放置方式 <!DOCTYPE html> <html> <head> <meta charset="utf-8"&gt 阅读详情

相关推荐

使用Vue3和Typescript实现可复用的路由标签页和面包屑导航组件

在开发前端应用时,导航是一个非常重要的部分。但是,在实际开发中,我们会遇到以下一些问题:为了解决上述问题,我们可以采取以下措施:在使用Vue3框架和Typescript语言开发前端应用时,我们需要掌握以下基础知识:Vue3相对于Vue2来说有很多新特性,其中比较重要的包括:Typescript是一种静态类型语言,在使用它时需要掌握以下基础语法:在理解了为什么需要可复用的路由标签页和面包屑导航组件以及Vue3和Typescript的基础知识之后,我们可以开始使用它们了。在Vue3中,可以通过编写一个可复用的标

陈书予 1万+

Vue常用标签

1. v-text标签: 效果与{{}}效果相同,改变指定元素的文本值,

weixin_55404498的博客 7155

【前端篇】html、css、JavaScript、vue基础知识

本文主要介绍测试开发所需学习的html、css、JavaScript、vue基础知识

weixin_39335999的博客 1322

vue常用标签

vue基本标签

weixin_46395869的博客 1477

【前端基础篇】快速学习HTML常用标签和属性

WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure-html)、表现(Presentation-css)和行为(Behavior-javascript)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。

前端知识分享喵 1910

5-DOF机械臂课程设计(一)之正逆运动学

文章目录基本要求基本概念关节坐标系的建立正运动学求解DH参数表的建立逆运动学求解多解下解的选取源码下载后续 基本要求 ​ 开发上位机程序,要求有良好的界面,能提供关节空间下和笛卡尔坐 标下表示的目标位姿点和中间若干经过点的输入功能,进行轨迹规划, 并控制机械臂沿轨迹运动,最终完成目标抓取的任务。 基本概念 连杆长度 :2个相邻关节轴线之间的距离 连杆扭角 :2个相邻关节轴线之间的角度 连杆偏距 :2个关节坐标系的X轴之间的距离 关节角度 :关节变量 计算时需要加初始角度偏移 关节坐标系的建立 ​ 根据《机

Rosen的博客 5855

Vue各种标签的使用方法

Vue各种标签的使用方法

weixin_45718431的博客 1827

新能源知识库(98)SOC曲线介绍

​:一条异常的健康SOC曲线,往往能提前反映出电池性能的衰退或系统存在的隐患。BMS和EMS通过实时跟踪SOC值,能在电池电量过高(如>95%)时停止充电,电量过低(如<20%)时停止放电,从而避免因过度充放电引发的。​:OCV-SOC曲线上较为平坦的部分(例如,磷酸铁锂电池通常在20%-80% SOC范围)。​:在光伏、储能、电网协同的系统中,SOC曲线是能量调度的核心依据。​:电池的寿命很大程度上取决于它的工作方式。​:利用电池静置后电压与SOC的对应关系来估算,较准确但需要电池静置,无法实时使用。

竹君子之家 920

Vue基础知识总结 3:vue常用标签_vue标签

按钮data: {//定义数据message: '哪吒',abc: 123},methods: {})

2401_84434880的博客 663

基于ABCDRez的激光谐振腔设计与热透镜效应仿真实践

本文详细介绍了如何利用ABCDRez代码包进行激光谐振腔设计与热透镜效应仿真。通过ABCD矩阵理论和高斯光束q参数,该工具能有效模拟热透镜动态变化对腔稳定性的影响,指导腔型优化与热补偿设计,是固体激光器预研与调试的高效辅助手段。

weixin_29093017的博客 288

Zoom AI 技术架构研究:联合式方法与多模态集成

通过 Zoom AI 开放平台,企业可以自定义 AI 模块 (如法律合规审查、客户反馈分析),扩展应用场景。这种开放平台策略使企业能够根据自身需求定制 AI 功能,满足特定业务需求。

shao.bing的专栏 1314

tailwind css + vuejs3实现过渡(transition)效果

tailwind css + vue3 = easy and beautiful transitions 不得不说,tailwind css 和vuejs可真是绝配,在transition效果的实现上也是如此。本文将简洁地分享使用tailwindcss 和 vuejs 3实现过渡的干货。 以下的知识讲帮助读者更轻松地掌握文中的内容: vue.js3 与 tailwind css 的搭建与整合(使用vite)。 css基础,尤其关于transition及transform的相关知识。 代码 话不多说,直接

weixin_44145222的博客 2154

从Gotham到Foundry:一文读懂Palantir三大产品线(Gotham/Foundry/Apollo)的核心差异与适用场景

本文深度解析Palantir三大产品线Gotham、Foundry和Apollo的核心差异与适用场景。Gotham专为国防与情报设计,提供军事级安全分析;Foundry是企业数字化转型的通用平台,支持低代码开发;Apollo则是云原生基石,确保系统可靠运行。通过对比产品架构与典型应用,帮助技术决策者根据需求做出明智选择。

weixin_42524499的博客 836

Vue基础知识总结 3:vue常用标签_vue标签,【秋招面试专题解析】

按钮data: {//定义数据message: '哪吒',abc: 123},methods: {})

m0_60388261的博客 394

保姆级教程:用Python从UCI下载波士顿房价数据集,手把手跑通线性回归、岭回归和Lasso

本文提供了一份保姆级教程,详细讲解如何用Python从UCI下载波士顿房价数据集,并手把手实现线性回归、岭回归和Lasso回归模型。内容涵盖数据获取、清洗、特征分析到模型构建与评估的全流程,特别适合机器学习初学者掌握波士顿房价预测这一经典案例。

weixin_34254848的博客 475

EC20模块实战:5步搞定MQTT连接阿里云IoT(附常见错误排查)

本文详细介绍了使用EC20 4G模块通过AT指令连接阿里云IoT平台的完整实战流程。文章以智能农业项目为背景,从硬件接线、网络注册、PDP激活,到MQTT连接配置、一型一密动态注册及数据收发,提供了清晰的5步操作指南,并重点附上了常见错误排查方法,帮助开发者快速实现稳定可靠的物联网设备上云。

weixin_29209801的博客 195

iframe 标签的作用是什么?用法是什么?属性有什么?

iframe 标签的作用是什么?用法是什么?属性有什么?

商务合作欢迎私信我 4971

硬件工程师入门基础知识(一)基础元器件认识(二)

我们的电路输入一般是只有两种状态,0V 或者是其它的高电平(1.8V,3.3V,5V 等),截止状态一般不用怎么考虑,因为如果让三极管的 Vbe=0,自然就截止了,重要的是饱和状态如何保证。也就是说只要 Rb

小幽余生不加糖 1万+

Vue3入门到实战,最新版vue3+TypeScript前端开发教程,编写APP组件,笔记04

Vue3入门到实战,最新版vue3+TypeScript前端开发教程,编写APP组件,笔记04

道友 556

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

vue3基础知识学习笔记

完整vue.config.js参考:css: {},},})debugger前写上:debugger。

bestwinner的专栏 328

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Vue3基础知识语法

vue3基础知识,包括vite创建、基础语法、路由router、组件通信、pinia等

weixin_51473175的博客 1276

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【亲测免费】 推荐项目:JSDoc for VueJS - 深度解析Vue组件文档的利器

推荐项目:JSDoc for VueJS - 深度解析Vue组件文档的利器 在前端开发领域,Vue.js以其简洁易用和强大的灵活性赢得了广泛的应用。而良好的代码注释不仅是团队合作的基石,更是维护和扩展项目时的重要参考。今天,我们为您推荐一个不可多得的开源工具——JSDoc for VueJS,这是一款专为Vue.js设计的JSDoc插件,它让您的Vue组件文档变得前所未有的清晰与规范。 项目介绍 ...

gitblog_00602的博客 1004

vuejs el标签_标签输入的VueJs

vuejs el标签 Vue标签输入 (vue-tags-input) VueJs for tags input. 标签输入的VueJs。 View Demo 查看演示 Download Source 下载源 安装 (Installation) 可通过以下方式获得: (Available through:)$ yarn add vue2-tags-input $ npm install ...

cuk5239的博客 361

使用Vue3学习Vue的基础知识

文末抽书 创建 Vue 应用 vue的安装有多种方式,本文只讨论基础知识,其他安装方式请自行查阅官网 https://v3.cn.vuejs.org/guide/installation.html 本文使用CDN。 创建一个名为的文件夹 vue3-base index.html 在“vue3-base”里面 app.js 在“vue3-base”里面 创建 HTML 文件 创建应用程序文件夹和文件后,打开index.html文件并添加以下 HTML 代码: 复制 <!DOCTYPE html&

专注于图像领域,主要研究内容包括计算机视觉和深度学习,特别是在图像分类、目标检测和图像生成等方面有深入的研究和实践经验。 3万+

【亲测免费】 JSDoc for VueJS:Vue文件文档化工具

JSDoc for VueJS:Vue文件文档化工具 1. 项目基础介绍 JSDoc for VueJS 是一个开源项目,旨在为 Vue 文件提供文档化支持。该项目主要使用 JavaScript 编程语言,同时包含一定比例的 EJS 和 Vue 代码。JSDoc for VueJS 通过 JSDoc 插件的形式,允许开发者在使用 Vue.js 框架时,通过特定的标签对组件的 props、data、...

gitblog_00959的博客 503
上一篇: Vue基础知识总结 2:vue 动态绑定
下一篇: Vue基础知识总结 4:vue组件化开发
哪 吒
哪 吒 2022年度博客之星TOP 1 2022年度博客之星TOP 1 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 59万+粉丝 2933原创
评论 67
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哪 吒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值