当前位置:首页 > 网站源码 > 正文内容

vue的面试题懒加载(vue 页面懒加载)

网站源码2年前 (2023-01-14)1297

本篇文章给大家谈谈vue的面试题懒加载,以及vue 页面懒加载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

三十七个常见Vue面试题

映射关系简化,隐藏controller MVVM在MVC的基础上,把控制层隐藏掉了。

Vue不是一个MVVM框架,它是一个视图层框架。

ViewModal是一个桥梁,将数据和视图进行关联。

数组和对象类型的值变化的时候,通过defineReactive方法,借助了defineProperty,将所有的属性添加了getter和setter。用户在取值和设置的时候,可以进行一些操作。

缺陷:只能监控最外层的属性,如果是多层的,就要进行全量递归。

get里面会做依赖搜集(dep[watcher, watcher]) set里面会做数据更新(notify,通知watcher更新)

vue中对数组没有进行defineProperty,而是重写了数组的7个方法。 分别是:

因为这些方法都会改变数组本身。

数组里的索引和长度是无法被监控的。

Vue初始化的时候,挂载之后会进行编译。生成renderFunction。

当取值的时候,就会搜集watcher,放到dep里面。

当用户更改值的时候,就会通知watcher,去更新视图。

这个问题的核心是如何将template转换成render函数。

Vue的生命周期钩子是回调函数,当创建组件实例的过程中会调用相应的钩子方法。 内部会对钩子进行处理,将钩子函数维护成数组的形式。

Vue的mixin的作用就是抽离公共的业务逻辑,原理类似对象的继承,当组件初始化的时候,会调用mergeOptions方法进行合并,采用策略模式针对不同的属性进行合并。 如果混入的数据和本身组件的数据有冲突,采用本身的数据为准。

缺点:命名冲突、数据来源不清晰

new Vue是一个单例模式,不会有任何的合并操作,所以根实例不必校验data一定是一个函数。 组件的data必须是一个函数,是为了防止两个组件的数据产生污染。 如果都是对象的话,会在合并的时候,指向同一个地址。 而如果是函数的时候,合并的时候调用,会产生两个空间。

nextTick是一个微任务。

Vue的diff算法是平级比较,不考虑跨级比较的情况。内部采用深度递归的方式+双指针方式比较

所以采用watcher + Diff算法来检测差异。

产生组件虚拟节点 - 创建组件的真实节点 - 插入到页面

属性更新会触发patchVnode方法,组件的虚拟节点会调用prepatch钩子,然后更新属性,更新组件。

先渲染异步占位符节点 - 组件加载完毕后调用forceUpdate强制更新。

正常的一个组件是一个类继承了Vue。

函数式组件,就是一个普通的函数。

主要作用是为了实现批量传递数据。

provide/inject更适合应用在插件中,主要实现跨级数据传递。

首先,v-for和v-if 不能在同一个标签中使用。

先处理v-for,再处理v-if。

如果同时遇到的时候,应该考虑先用计算属性处理数据,在进行v-for,可以减少循环次数。

在组件上用的v-model,是model和callback

在普通元素上用v-model,会生成指令,还可能因为不同的元素:

指令在什么时候会调用?

源码:

普通插槽是渲染后做替换的工作。父组件渲染完毕后,替换子组件的内容。

在模板编译的时候,处理组件中的子节点和slot标签

在创建元素的时候,用_t()方法方法来替换_v()的内容。

作用域插槽可以拿到子组件里面的属性。在子组件中传入属性然后渲染。

作用域插槽的编译结果:

Vue.use是用来使用插件的。我们可以在插件中扩展全局组件、指令、原型方法等。 会调用install方法将Vue的构建函数默认传入,在插件中可以使用vue,无需依赖vue库

使用有两个场景,一个是动态组件,一个是router-view

这里创建了一个白名单和一个黑名单。表明哪些需要需要做缓存,哪些不需要做缓存。以及最大的缓存个数。

缓存的是组件的实例,用key和value对象保存。

加载的时候,监控include和exclude。

如果不需要缓存,直接返回虚拟节点。

如果需要缓存,就用组件的id和标签名,生成一个key,把当前vnode的instance作为value,存成一个对象。这就是缓存列表

如果设置了最大的缓存数,就删除第0个缓存。新增最新的缓存。

并且给组件添加一个keepAlive变量为true,当组件初始化的时候,不再初始化。

钩子函数有三种:

Vuex是专门为vue提供的全局状态管理系统,用于多个组件中的数据共享、数据缓存。

问题:无法持久化。

47道基础的VueJS面试题(附答案)

1、什么是MVVM框架?它适用于哪些场景?

MVVM框架是一个 Model-View-View Model框架,其中 ViewModel连接模型Model)和视图(View)。

在数据操作比较多的场景中,MVVM框架更合适,有助于通过操作数据渲染页面。

2、active- class是哪个组件的属性?

它是 vue-router模块的 router-link组件的属性。

3、如何定义Vue- router的动态路由?

在静态路由名称前面添加冒号,例如,设置id动态路由参数,为路由对象的path属性设置/:id。

4、如何获取传过来的动态参数?

在组件中,使用$router对象的 params.id,即 $route.params.id 。

5、vue- router有哪几种导航钩子?

有3种。

第一种是全局导航钩子:router.beforeEach(to,from,next)。作用是跳转前进行判断拦截。

第二种是组件内的钩子。

第三种是单独路由独享组件。

6、mint-ui是什么?如何使用?

它是基于 Vue.js的前端组件库。用npm安装,然后通过 import导入样式和JavaScript代码。vue.use(mintUi)用于实现全局引入, import {Toast} from ' mint-ui'用于在单个组件局部引入。

7、V-model是什么?有什么作用?

v- model是 Vue. js中的一条指令,可以实现数据的双向绑定。

8、Vue.js中标签如何绑定事件?

绑定事件有两种方式。

第一种,通过v-on指令, 。

第二种,通过@语法糖, input@ click= doLog()/。

9、vuex是什么?如何使用?在哪种功能场景中使用它?

vuex是针对 Vue. js框架实现的状态管理系统。

为了使用vuex,要引入 store,并注入Vue.js组件中,在组件内部即可通过$ ostore访问 store对象。

使用场景包括:在单页应用中,用于组件之间的通信,例如音乐播放、登录状态管理、加入购物车等。

10、如何实现自定义指令?它有哪些钩子函数?还有哪些钩子函数参数?

自定义指令包括以下两种。

它有如下钩子函数。

钩子函数的参数如下。

11、至少说出vue.js中的4种指令和它们的用法。

相关指令及其用法如下。

12、Vue-router是什么?它有哪些组件?

它是 Vue. js的路由插件。组件包括 router-link和 router-vIew。

13、导航钩子有哪些?它们有哪些参数?

导航钩子又称导航守卫,又分为全局钩子、单个路由独享钧子和组件级钧子。

全局钩子有 beforeEach、beforeResolve(Vue2.5.0新增的)、 afterEach。

单个路由独享钩子有 beforeEnter。

组件级钩子有 beforeRouteEnter、 beforeRouteUpdate(Vue2.2新增的) beforeRouteLeave。

它们有以下参数。

14、Vue.js的双向数据绑定原理是什么?

具体步骤如下。

(1)对需要观察的数据对象进行递归遍历,包括子属性对象的属性,设置set和get特性方法。当给这个对象的某个值赋值时,会触发绑定的set特性方法,于是就能监听到数据变化。

(4)MVVM是数据绑定的入口,整合了 Observer、 Compile和 Watcher三者,通过Observer来监听自己的 model数据变化,通过 Compile来解析编译模板指令,最终利用Watcher搭起 Observer和 Compile之间的通信桥梁,达到数据变化通知视图更新的效果。利用视图交互,变化更新数据 model变更的双向绑定效果。

15、请详细说明你对Vue.js生命周期的理解。

总共分为8个阶段,分别为 beforeCreate、created、beforeMount、 mounted、beforeUpdate、 updated、 beforeDestroyed、 destroyed。

当使用组件的kep- alive功能时,增加以下两个周期。

Vue2.5.0版本新增了一个周期钩子:ErrorCaptured,当捕获一个来自子孙组件的错误时调用。

16、请描述封装Vue组件的作用过程。

组件可以提升整个项目的开发效率,能够把页面抽象成多个相对独立的模块,解决了传统项目开发中效率低、难维护、复用性等问题。

使用Vue.extend方法创建一个组件,使用Vue.component方法注册组件。子组件需要数据,可以在 props中接收数据。而子组件修改妤数据后,若想把数据传递给父组件,可以采用emit方法。

17、你是怎样认识vuex的?

vuex可以理解为一种开发模式或框架。它是对 Vue. js框架数据层面的扩展。通过状态(数据源)集中管理驱动组件的变化。应用的状态集中放在 store中。改变状态的方式是提交 mutations,这是个同步的事务。异步逻辑应该封装在 action中。

18、Vue- loader是什么?它的用途有哪些?

它是解析.vue文件的一个加载器,可以将 template/js/style转换成 JavaScript模块。

用途是通过 vue-loader, JavaScript可以写 EMAScript 6语法, style样式可以应用scss或less, template可以添加jade语法等。

19、请说出vue.cli项目的src目录中每个文件夹和文件的用法。

assets文件夹存放静态资源;components存放组件;router定义路由相关的配置;view是视图;app. vue是一个应用主组件;main.js是入口文件。

20、在Vue.cli中怎样使用自定义组件?在使用过程中你遇到过哪些问题?

具体步骤如下。

(1)在 components目录中新建组件文件,脚本一定要导出暴露的接口。

(2)导入需要用到的页面(组件)。

(3)将导入的组件注入uejs的子组件的 components属性中。

(4)在 template的视图中使用自定义组件。

21、谈谈你对vue.js的 template编译的理解。

简而言之,就是首先转化成AST( Abstract Syntax Tree,抽象语法树),即将源代码语法结构抽象成树状表现形式,然后通过 render函数进行渲染,并返回VNode( Vue. js的虚拟DOM节点)。

详细步骤如下。

(1)通过 compile编译器把 template编译成AST, compile是 create Compiler的返回值, createCompiler用来创建编译器。另外, compile还负责合并 option。

(2)AST会经过 generate(将AST转化成 render funtion字符串的过程)得到 render函数, render的返回值是 VNode, VNode是 Vue.Js的虚拟DOM节点,里面有标签名子节点、文本等。

22、说一下Vue.js中的MVVM模式。

MVVM模式即 Model- View- ViewModel模式。

Vue.js是通过数据驱动的, Vue. js实例化对象将DOM和数据进行绑定,一旦绑定,和数据将保持同步,每当数据发生变化,DOM也会随着变化。

ViewModel是Vue.js的核心,它是 Vue.js的一个实例。Vue.js会针对某个HTML元素进行实例化,这个HTML元素可以是body,也可以是某个CSS选择器所指代的元素。

DOM Listeners和 Data Bindings是实现双向绑定的关键。DOM Listeners监听页面所有View层中的DOM元素,当发生变化时,Model层的数据随之变化。Data Bindings会监听 Model层的数据,当数据发生变化时,View层的DOM元素也随之变化。

23、v-show指令和v-if指令的区别是什么?

v-show与v-if都是条件渲染指令。不同的是,无论v-show的值为true或 false,元素都会存在于HTML页面中;而只有当v-if的值为true时,元素才会存在于HTML页面中。v-show指令是通过修改元素的 style属性值实现的。

24、如何让CSS只在当前组件中起作用?

在每一个Vue.js组件中都可以定义各自的CSS、 JavaScript代码。如果希望组件内写的CSS只对当前组件起作用,只需要在Style标签添加Scoped属性,即 。

25、如何创建vue.js组件?

在vue.js中,组件要先注册,然后才能使用。具体代码如下

26、如何实现路由嵌套?如何进行页面跳转?

路由嵌套会将其他组件渲染到该组件内,而不是使整个页面跳转到 router-view定义组件渲染的位置。要进行页面跳转,就要将页面渲染到根组件内,可做如下配置。

首先,实例化根组件,在根组件中定义组件渲染容器。然后,挂载路由,当切换路由时,将会切换整个页面。

27、ref属性有什么作用?

有时候,为了在组件内部可以直接访问组件内部的一些元素,可以定义该属性此时可以在组件内部通过this. $refs属性,更快捷地访问设置ref属性的元素。这是一个原生的DOM元素,要使用原生 DOM API操作它们,例如以下代码。

注意:在Ve2.0中,ref属性替代了1.0版本中v-el指令的功能。

28、Vue. js是什么?

Vue. js的目标是通过尽可能简单的API实现响应式的数据绑定的组件开发。

29、描述vue.js的一些特性。

Vue.js有以下持性。

(1)MVVM模式。

数据模型( Model)发生改变,视图(View)监听到变化,也同步改变;视图(View)发生改变,数据模型( Model)监听到改变,也同步改变。

使用MVVM模式有几大好处。

(2)组件化开发

(3)指令系统

(4)Vue2.0开始支持虚拟DOM。

但在Vue1.0中,操作的是真实DOM元素而不是虚拟DOM,虚拟DOM可以提升页面的渲染性能。

30、描述vue.js的特点。

Vue. js有以下特点。

31、在vue.js中如何绑定事件?

通过在v-on后跟事件名称=“事件回调函数( )”的语法绑定事件。事件回调函数的参数集合( )可有可无。如果存在参数集合( ),事件回调函数的参数需要主动传递,使用事件对象要传递 $event。当然,此时也可以传递一些其他自定义数据。如果没有参数集合,此时事件回调函数有一个默认参数,就是事件对象。事件回调函数要定义在组件的 methods属性中,作用域是 Vue. js实例化对象,因此在方法中,可以通过this使用 Vue. js中的数据以及方法,也可以通过@语法糖快速绑定事件,如@事件名称=“事件回调函数( )”。

32、请说明 组件的作用。

当 包裹动态组件时,会缓存不活动的组件实例,而不是销毁它们。

keep-alive是一个抽象组件,它自身不会渲染一个DOM元素,也不会出现在父组件链中。

当在 内切换组件时,它的 activated和 deactivated这两个生命周期钧子函数将会执行。

33、axios是什么?如何使用它?

axios是在vue2.0中用来替换 vue-resource.js插件的一个模块,是一个请求后台的模。

用 npm install axios安装 axios。基于 EMAScript 6 的 EMAScript Module规范,通过 import关键字将 axios导入,并添加到 Vue. js类的原型中。这样每个组件(包括vue.js实例化对象)都将继承该方法对象。它定义了get、post等方法,可以发送get或者post请求。在then方法中注册成功后的回调函数,通过箭头函数的作用域特征,可以直接访问组件实例化对象,存储返回的数据。

34、在 axios中,当调用 axios.post('api/user')时进行的是什么操作?

当调用post方法表示在发送post异步请求。

35、sass是什么?如何在ue中安装和使用?

sass是一种CSS预编译语言安装和使用步骤如下。

(1)用npm安装加载程序( sass-loader、 css-loader等加载程序)。

(2)在 webpack. config. js中配置sass加载程序。

(3)在组件的 style标签中加上lang属性,例如lang="scss"。

36、如何在 Vue. js中循环插入图片?

对“src”属性插值将导致404请求错误。应使用 v-bind:src格式代替。

代码如下:

史上最全前端vue面试题!推荐收藏

1.为什么会形成跨域?

不是一个源的文件操作另一个源的文件就会形成跨域。当请求端的协议、域名、端口号和服务器的协议、域名、端口号有一个不一致就会发生跨域。

解决方法:安装插件

Pip install django-cors-headers

2.vuex的工作流程?

① 在vue组件里面,通过dispatch来出发actions提交修改数据的操作。

② 然后再通过actions的commit来出发mutations来修改数据。

③ mutations接收到commit的请求,就会自动通过Mutate来修改state(数据中心里面的数据状态)里面的数据。

④ 最后由store触发每一个调用它的组件更新。

3.vuex是什么?怎么使用?

vuex是一个专为vue.js应用程序开发的状态管理模式。使用:store,getters,mutations,actions,modules详细使用写法请见:

4.vuex中的数据在页面刷新后数据消失怎么解决?

使用sessionStorage或localStorage存储数据;也可以引入vuex-persist插件

5.在vue中,如何阻止事件冒泡和默认行为?

在绑定事件时,在指令后边加上修饰符.stop来阻止冒泡,.prevent来阻止默认行为

6.深拷贝与浅拷贝?

假设B复制A,修改A的时候,看B是否变化:B变了是浅拷贝(修改堆内存中的同一个值),没变是深拷贝(修改堆内存中不同的值)。浅拷贝只是增加了一个指针指向已存在的内存地址,深拷贝是增加了一个指针并申请了一个新的内存,使这个增加的指针指向这个新的内存。深拷贝和浅拷贝最根本的区别在于是否真正获取一个对象的复制实体,而不是引用。

7.vue的生命周期?

beforeCreate created beforeMount mounted beforeUpdate updated beforeDestroy destroyedactived deactived (keep-alive)组件是否激活调用

8. keep-alive: 组件缓存

router.js中:

meta: {keepAlive:true} // 需要被缓存

钩子执行顺序:created - mounted - actived

include表示需要缓存的页面;exclude表示不需要缓存的页面。如果两个同时设置,exclude优先级更 改,则组件不会被缓存。

应用场景: 用户在某个列表页面选择筛选条件过滤出一份数据列表,由列表页面进入数据详情页面,再返回 该列表页,我们希望列表页可以保留用户的筛选状态。

9.vue传值方式?

props $emit() $on() $parent $children $listener $attr

10. $on 兄弟组件传值

$emit 分发

$on 监听

$off 取消监听

$once 一次性监听一个事件

在js文件中定义一个中央事件总线Bus,并暴露出来

具体的实现方式:

使用Bus的时候在接收Bus的组件的beforeDestroy函数中销毁Bus,否则会一直叠加调用这个方法。

应用场景:“退出登录” - ①点击退出登录;②修改密码后自动退出登录

11.组件跨级传值

$attrs a-b-c

$listeners 监听

12.vue事件修饰符有哪些?

.stop .prevent .self .once .passive .sync

13.箭头函数中的this?

不具有this绑定,但函数体可以使用this,这个this指向的是箭头函数当前所处的词法环境中的this对象。

15.为什么vue组件中data必须是一个函数?

如果不是函数的话,每个组件的data都是内存的同一个地址,一个数据改变了其他也改变了,当他是一个函数时,每个组件实例都有自己的作用域,每个实例相互独立,就不会互相影响。

16.v-if 和 v-show区别?

v-if 是对标签的创建与销毁, v-show 则仅在初始化时加载一次,v-if 开销相对来说比v-show 大;

v-if 是惰性的;v-show 做的仅是简单的css切换。

17.v-text 与 v-html区别?

v-text 用于普通文本,不能解析html;

v-html 反之。

18.v-for key的作用?

使用v-for更新渲染过的数据,它默认用“就地复用”策略。如果数据项的顺序改变,vue将不是移动DOM元素来匹配数据项的改变,而是简单地复用此处每个元素,并确保在特定索引下显示已被渲染过的每个元素。key属性类型只能是string或number。

key的特殊属性主要用在虚拟DOM算法,在新旧node对比时辨识VNods。如不使用key,vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法,它会基于key的变化重新排列元素顺序。

19.Scss是什么?在vue-cli中安装步骤?有哪几大特性?

npm 下载loader (sass-loader,css-loader,node-sass),在webpack中配置extends属性(加.scss拓展) Vscode中可在扩展中下载;

特性:可以用变量,可以用混合器,可以嵌套等。

20.vue获取dom?

ref

21.vue初始化页面闪动问题?

webpack、vue-router

v-cloak css:[v-cloak]:display:none

22.什么是vue-router?

vue router 是官方路由管理器。

主要功能:路由嵌套,模块化 基于组件路由配置,路由参数、查询、通配符,细粒度导航控制,自定义的滚动条行为等。

23.vue路由传参,接收?

传: this.$router.push({path:'', query(params):{}})

接:this.$router.query.xxx

24.防抖和节流?

节流是一定时间内执行一次函数,多用在scroll事件上;

防抖是在一定时间内执行最后一次的函数,多用在input输入操作,表单提交等。

25.如何让scss只在当前组件中起作用?

VUE基础面试题(3)

在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。在当前阶段 data、methods、computed 以及 watch 上的数据和方法都不能被访问

实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。这里没有 nextTick 来访问 Dom

在挂载开始之前被调用:相关的 render 函数首次被调用。

在挂载完成后发生,在当前阶段,真实的 Dom 挂载完毕,数据完成双向绑定,可以访问到 Dom 节点

数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁(patch)之前。可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程

发生在更新完成之后,当前阶段组件 Dom 已完成更新。要注意的是避免在此期间更改数据,因为这可能会导致无限循环的更新,该钩子在服务器端渲染期间不被调用。

实例销毁之前调用。在这一步,实例仍然完全可用。我们可以在这时进行善后收尾工作,比如清除计时器。

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

可以在钩子函数 created、beforeMount、mounted 中进行异步请求,因为在这三个钩子函数中,data 已经创建,可以将服务端端返回的数据进行赋值。

能更快获取到服务端数据,减少页面 loading 时间;

ssr 不支持 beforeMount 、mounted 钩子函数,所以放在 created 中有助于一致性;

Vue2--------------vue3

beforeCreate = setup()

created = setup()

beforeMount = onBeforeMount

mounted = onMounted

beforeUpdate = onBeforeUpdate

updated = onUpdated

beforeDestroy = onBeforeUnmount

destroyed = onUnmounted

activated = onActivated

deactivated = onDeactivated

errorCaptured = onErrorCaptured

vue的面试题懒加载的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于vue 页面懒加载、vue的面试题懒加载的信息别忘了在本站进行查找喔。

扫描二维码推送至手机访问。

版权声明:本文由我的模板布,如需转载请注明出处。


本文链接:http://60200875.com/post/951.html

分享给朋友:

“vue的面试题懒加载(vue 页面懒加载)” 的相关文章

电销机器人十大排行榜(ai电销机器人国内十强)

电销机器人十大排行榜(ai电销机器人国内十强)

今天给各位分享电销机器人十大排行榜的知识,其中也会对ai电销机器人国内十强进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、电销机器人品牌排名,附近客进了前三吗...

怎么获取别人的个人信息(怎样获取别人的个人信息)

怎么获取别人的个人信息(怎样获取别人的个人信息)

今天给各位分享怎么获取别人的个人信息的知识,其中也会对怎样获取别人的个人信息进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、学计算机的是否可以通过手机号看到这...

怎么看笔记本有没有无线网卡驱动(怎么看自己电脑有没有无线网卡驱动)

怎么看笔记本有没有无线网卡驱动(怎么看自己电脑有没有无线网卡驱动)

本篇文章给大家谈谈怎么看笔记本有没有无线网卡驱动,以及怎么看自己电脑有没有无线网卡驱动对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、如何查看无线网卡驱动? 2、怎么查...

小米手机wifi密码保存在哪里(小米手机保存的wifi密码)

小米手机wifi密码保存在哪里(小米手机保存的wifi密码)

本篇文章给大家谈谈小米手机wifi密码保存在哪里,以及小米手机保存的wifi密码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、手机怎么查看已经记住的WiFi密码 2、...

eclipsedebug查看值(eclipse debug查看值)

eclipsedebug查看值(eclipse debug查看值)

本篇文章给大家谈谈eclipsedebug查看值,以及eclipse debug查看值对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、eclipse在debug模式下如何查...

恋爱聊天话术学堂下载(恋爱话术免费版下载)

恋爱聊天话术学堂下载(恋爱话术免费版下载)

本篇文章给大家谈谈恋爱聊天话术学堂下载,以及恋爱话术免费版下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、免费和女生聊天的软件不需要付费的 2、抖音里怎么能下载聊天...