IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue模板语法上 -> 正文阅读

[JavaScript知识库]vue模板语法上

本期内容

????????1、插值

????????2、指令

? ? ? ? 3、过滤器

? ? ? ? 4、计算属性&监听属性

HBuilder X 软件中代码格式化:Ctrl+K

一、插值

1、文本

?????????{{msg}}

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ??? ?<h3>{{msg}}</h3>
?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {msg:'欢迎幻影'};
?? ??? ??? ?}
?? ??? ?})
?? ?</script>
</html>

2、html

????????? ?使用v-html指令用于输出html代码 ? ? ? ?

?<!DOCTYPE html>

<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ??? ?<p>文本</p>
?? ??? ??? ?<h3>{{msg}}</h3>
?? ??? ??? ?<p>html串,显示带红色字体的内容</p>
?? ??? ??? ?<div v-html="htmlstr"></div>
?? ??? ?</div>
?? ?</body>

?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界?
?? ??? ?-->
?? ??? ?new Vue({
?? ??? ??? ?el: '#app',
?? ??? ??? ?data(){
?? ??? ??? ??? ?return{
?? ??? ??? ??? ??? ?msg: '欢迎幻影',
?? ??? ??? ??? ??? ?htmlstr:'<h3 style="color:red;">html片段</h3>'
?? ??? ??? ?};
?? ??? ?}
?? ??? ?})
?? ?</script>
</html>

3、属性

????????HTML属性中的值应使用v-bind指令

所有原生态的属性,要利用vue的变量,都需要在对应的属性前加v-bind

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ?<p>文本</p>
?? ??? ??? ?<h3>{{msg}}</h3>
?? ??? ?<p>html串,显示带红色字体的内容</p>
?? ??? ??? ?<div v-html="htmlstr"></div>
?? ??? ?<p>vue中的属性</p>
?? ??? ??? ?<a v-bind:href="hrefstr">百度</a>
?? ??? ??? ?<input v-bind:value="valuestr" />

? ? ? ? ? ??<!-- 缩写方式 -->
?? ??? ??? ?<!-- <input :value="valuestr" />?-->

?? ??? ?</div>
?? ?</body>

?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界?
?? ??? ?-->
?? ??? ?new Vue({
?? ??? ??? ?el: '#app',
?? ??? ??? ?data(){
?? ??? ??? ??? ?return{
?? ??? ??? ??? ??? ?msg: '欢迎幻影',
?? ??? ??? ??? ??? ?htmlstr:'<h3 style="color:red;">html片段</h3>',
?? ??? ??? ??? ??? ?hrefstr:'http://www.baidu.com',
?? ??? ??? ??? ??? ?valuestr:"23546"

?? ??? ??? ?};
?? ??? ?}
?? ??? ?})
?? ?</script>
</html>

?4、表达式

?????????Vue提供了完全的JavaScript表达式支持
? ? ? ? ? {{str.substr(0,6).toUpperCase()}}
? ? ? ? ? {{ number + 1 }}
? ? ? ? ? {{ ok ? 'YES' : 'NO' }}
? ? ? ? ? <li v-bind:id="'list-' + id">我的Id是js动态生成的</li>

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ?<p>文本</p>
?? ??? ??? ?<h3>{{msg}}</h3>
?? ??? ?<p>html串,显示带红色字体的内容</p>
?? ??? ??? ?<div v-html="htmlstr"></div>
?? ??? ?<p>vue中的属性</p>
?? ??? ??? ?<a v-bind:href="hrefstr">百度</a>
?? ??? ??? ?<input v-bind:value="valuestr" />
?? ??? ??? ?<!-- v-bind:value缩写方式 -->
?? ??? ??? ?<!-- <input :value="valuestr" /> -->
?? ??? ?<p>表达式</p>
?? ??? ??? ?<p>截取字符串并转大写</p>
?? ??? ??? ?{{str.substring(0,4).toUpperCase()}}
?? ??? ??? ?<p>数值相加</p>
?? ??? ??? ?张三:{{number+1}}
?? ??? ??? ?<p>判断</p>
?? ??? ??? ?{{ok ? 'yes':'no'}}
?? ??? ??? ?<p>动态生成id</p>
?? ??? ??? ?<span :id="'goodsid_id_'+id">xxxxx</span>

?? ??? ?</div>
?? ?</body>

?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界?
?? ??? ?-->
?? ??? ?new Vue({
?? ??? ??? ?el: '#app',
?? ??? ??? ?data(){
?? ??? ??? ??? ?return{
?? ??? ??? ??? ??? ?msg: '欢迎幻影',
?? ??? ??? ??? ??? ?htmlstr:'<h3 style="color:red;">html片段</h3>',
?? ??? ??? ??? ??? ?hrefstr:'http://www.baidu.com',
?? ??? ??? ??? ??? ?valuestr:"23546",
?? ??? ??? ??? ??? ?str:'java is very good',
?? ??? ??? ??? ??? ?number:59,
?? ??? ??? ??? ??? ?ok:true,
?? ??? ??? ??? ??? ?id:66

?? ??? ??? ?};
?? ??? ?}
?? ??? ?})
?? ?</script>
</html>

?

二、 指令

????????? 指的是带有“v-”前缀的特殊属性

1、核心指令

?????????v-if|v-else|v-else-if:根据其后表达式的bool值进行判断是否渲染该元素
? ? ? ? ? ? 他们只能是兄弟元素
? ? ? ?? v-else-if上一个兄弟元素必须是v-if
? ? ? ?? v-else上一个兄弟元素必须是v-if或者是v-else-if

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
? ? ? ? ? ? <p> v-if|v-else|v-else-if</p>
?? ??? ??? ?
????????分数:<input v-model="score" />
?? ??? ??? ?
????????<div v-if="score>80">优秀</div>
?? ??? ??? ?
????????<div v-else-if="score>60">良好</div>
?? ??? ??? ?
????????<div v-else="score<60">继续加油</div>

????????<p>v-show</p>
?? ??? ??? ??? ?<div v-show="score>90">v-show-上优秀学员名单</div>
?? ??? ??? ??? ?<div v-if="score>90">v-if-上优秀学员名单</div>

?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?score:78
?? ??? ??? ??? ?};
?? ??? ??? ?}
?? ??? ?})
?? ?</script>
</html>

?根据用户在输入框中输入的数字判断成绩优良差:

v-if连div代码都不存在了 ,v-show只是display隐藏掉了?

v-show:与v-if类似,只是会渲染其身后表达式为false的元素,而且会给这样的元素添加css代 ? ? ? ? ? ? ? ? ? ?? 码:style="display:none"

2、v-for

????????类似JS的遍历

遍历数组: v-for="item in items", items是数组,item为数组中的数组元素
遍历对象: v-for="(value,key,index) in stu", value属性值,key属性名,index下标

下拉框:hobbySelected被选中的选项——回显,以及可以根据后面的输入框填入的进行下拉框选中

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
? ? ? ? ? <p>v-for</p>?? ?
?? ??? ??? ??? <select v-model="hobbySelected">
?? ??? ??? ??? ??? ?<option v-for="h in hobby" :value="h.id">{{h.name}}</option>
?? ??? ??? ??? ?</select>
?? ??? ??? ??? ?<input v-model="hobbySelected" />

?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
? ? ? ? ? ? ? ? ? ? hobby:[
?? ??? ??? ??? ??? ??? ?{id:"1",name:"唱歌"},
?? ??? ??? ??? ??? ??? ?{id:"2",name:"跳舞"},
?? ??? ??? ??? ??? ??? ?{id:"3",name:"打游戏"}
?? ??? ??? ??? ??? ?],
?? ??? ??? ??? ??? ?hobbySelected:3

?? ??? ??? ??? ?};
?? ??? ??? ?}
?? ??? ?})
?? ?</script>
</html>

复选框:

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
? ? ? ? ?? <p>v-for</p>?? ?
? ? ? ? ? ? ? ? <div v-for="h in hobby">
?? ??? ??? ??? ?<input ?:value="h.id" type=checkbox />{{h.name}}
?? ??? ??? ??? ?</div>
?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?score:78,
?? ??? ??? ??? ??? ?hobby:[
?? ??? ??? ??? ??? ??? ?{id:"1",name:"唱歌"},
?? ??? ??? ??? ??? ??? ?{id:"2",name:"跳舞"},
?? ??? ??? ??? ??? ??? ?{id:"3",name:"打游戏"}
?? ??? ??? ??? ??? ?],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? };
?? ??? ??? ?}
?? ??? ?})
?? ?</script>
</html>

3、v-on:触发事件 :

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
? ? ? ? ?? <p>v-on</p>
?? ??? ??? ??? ?<button v-on:click="handle">触发事件</button>
?? ??? ??? ?<p>v-on缩写</p>
?? ??? ??? ??? ?<!-- <button @click="handle">触发事件</button> -->

?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?score:78,
?? ??? ??? ??? ??? ?hobby:[
?? ??? ??? ??? ??? ??? ?{id:"1",name:"唱歌"},
?? ??? ??? ??? ??? ??? ?{id:"2",name:"跳舞"},
?? ??? ??? ??? ??? ??? ?{id:"3",name:"打游戏"}
?? ??? ??? ??? ??? ?],
?? ??? ??? ??? ??? ?hobbySelected:3
?? ??? ??? ??? ?};
?? ??? ??? ?},
?? ??? ??? ?methods:{
?? ??? ??? ??? ?handle(){
?? ??? ??? ??? ??? ?alert("触发事件");
?? ??? ??? ??? ?}
?? ??? ??? ?}

?? ??? ?})
?? ?</script>
</html>

三、动态参数?

?????????注1:动态参数表达式有一些语法约束,evName无效,evname有效,回避大写

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ??? ?<p>动态参数</p>
?? ??? ??? ??? ?<button v-on:[evname]="handle">动态参数</button>

?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?/* 当evname里面的值换成了dblclick时,双击才能触发事件 */
?? ??? ??? ??? ??? ?evname:'click',

?? ??? ??? ??? ??? ?
?? ??? ??? ??? ?};
?? ??? ??? ?},
?? ??? ??? ?methods:{
?? ??? ??? ??? ?handle(){
?? ??? ??? ??? ??? ?alert("触发事件");
?? ??? ??? ??? ?}
?? ??? ??? ?}

?? ??? ?})
?? ?</script>
</html>

?四、过滤器

1、全局过滤器:

? ?Vue.filter('filterName', function (value) {
? ? ?// value 表示要过滤的内容
? ?});

2、局部过滤器

? new Vue({
? ? ?filters:{'filterName':function(value){}}
? ?});

3、串联

4、过滤器可以传参的

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ??? ?{{msg|all}},{{msg|single}},{{msg|all|single}},{{msg|param(4,5)}}
? ? ? ? </div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
?? ?//全局过滤器
?? ??? ?Vue.filter('all', function (value) {
?? ??? ? ? ? return value.substring(2,6);
?? ??? ? ? });

?? ??? ?<!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?msg:"吃素并不能减肥,想想猪八戒"
?? ??? ??? ??? ?};
?? ??? ??? ?},
?? ??? ??? ?// 局部过滤
?? ??? ??? ?filters:{
?? ??? ??? ??? ?'single':function(val){
?? ??? ??? ??? ??? ?return val.substring(2,3);
?? ??? ??? ??? ?},

?? ??? ??? ??? ?'param':function(val,start,end){
?? ??? ??? ??? ??? ?return val.substring(start,end);
?? ??? ??? ??? ?}

?? ??? ??? ?}
?? ??? ?})
?? ?</script>
</html>

五、计算属性&监听属性

????????计算属性没有在变量中定义的

<!DOCTYPE html>
<html>
?? ?<head>
?? ??? ?<meta charset="utf-8">
?? ??? ?<title></title>
?? ??? ?<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
?? ?</head>
?? ?<body>
?? ??? ?<!-- 定义边界 -->
?? ??? ?<div id="app">
?? ??? ??? ?<p>计算属性</p>
?? ??? ??? ?<table border="1" style="width: 600px;height: 300px;">
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td>帽子</td>
?? ??? ??? ??? ??? ?<td>30</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?<input v-model="maozi" />
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?{{maoziTotal}}
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td>鞋子</td>
?? ??? ??? ??? ??? ?<td>28</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?<input v-model="xiezi" />
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?{{xieziTotal}}
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td>裤子</td>
?? ??? ??? ??? ??? ?<td>12</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?<input v-model="kuzi" />
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ??? ?<td>
?? ??? ??? ??? ??? ??? ?{{kuziTotal}}
?? ??? ??? ??? ??? ?</td>
?? ??? ??? ??? ?</tr>
?? ??? ??? ??? ?<tr>
?? ??? ??? ??? ??? ?<td>总价</td>
?? ??? ??? ??? ??? ?<td colspan="3">{{total}}</td>
?? ??? ??? ??? ?</tr>
?? ??? ??? ?</table>

?? ??? ?<p>监听属性</p>
?? ??? ??? ?千米:<input v-model="km" />
?? ??? ??? ?米:<input v-model="m" />

?? ??? ?</div>
?? ?</body>
?? ?
?? ?<script type="text/javascript">
? ? ? ? ?? <!-- 绑定边界 -->
?? ??? ?new Vue({
?? ??? ??? ?el:'#app',
?? ??? ??? ?data() {
?? ??? ??? ??? ?return {
?? ??? ??? ??? ??? ?maozi:1,
?? ??? ??? ??? ??? ?xiezi:1,
?? ??? ??? ??? ??? ?kuzi:1,

?? ??? ??? ??? ??? ?km:2,
?? ??? ??? ??? ??? ?m:2000

?? ??? ??? ??? ?};
?? ??? ??? ?},
?? ??? ??? ?methods:{
?? ??? ??? ??? ?handle(){
?? ??? ??? ??? ??? ?alert("触发事件");
?? ??? ??? ??? ?}
?? ??? ??? ?},
?? ??? ??? ?// 计算属性
?? ??? ??? ? computed:{
?? ??? ??? ??? ? maoziTotal(){
?? ??? ??? ??? ??? ? return this.maozi*30;
?? ??? ??? ??? ? },
?? ??? ??? ??? ? xieziTotal(){
?? ??? ??? ??? ??? ? return this.xiezi*28;
?? ??? ??? ??? ? },
?? ??? ??? ??? ? kuziTotal(){
?? ??? ??? ??? ??? ? ?return this.kuzi*12;
?? ??? ??? ??? ? },
?? ??? ??? ??? ? total(){
?? ??? ??? ??? ??? ? return this.maoziTotal+this.xieziTotal+this.kuziTotal;
?? ??? ??? ??? ? }
?? ??? ??? ? },

?? ??? ??? ? // 监听属性
?? ??? ??? ? watch:{
?? ??? ??? ??? ? // v指的是m变量
?? ??? ??? ??? ? m(v){
?? ??? ??? ??? ??? ? this.km=parseInt(v)/1000
?? ??? ??? ??? ? },
?? ??? ??? ??? ? // v指的是km变量
?? ??? ??? ??? ? km(v){
?? ??? ??? ??? ? ?? ?this.m=parseInt(v)*1000
?? ??? ??? ??? ? }
?? ??? ??? ? }

?? ??? ?})
?? ?</script>
</html>

?

本期内容结束~

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-29 12:54:58  更:2021-10-29 12:55:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 2:40:28-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码