Vue2(初识vue)

目录

      • 一,Vue2简介
        • 1.1,什么是vue
        • 1.2,初始vue
        • 1.3,搭建vue环境
        • 1.4,第一个hello world
      • 二,基础知识
        • 2.1 指令
          • 2.2-1 指令v-text
          • 2.2-2 指令v-html
          • 2.2-3 指令v-if
          • 2.2-4 指令v-else
          • 2.2-5 指令v-show
          • 2.2-6 v-if指令与v-show指令区别
          • 2.2-7 指令v-on
          • 2.2-8 指令v-bind
          • 2.2-9 指令v-model
          • 2.2-10 指令v-for
      • 三,事件绑定
        • 3.1,在事件对应的方法中获取到事件对象
        • 3.1,事件修饰符-阻止冒泡
        • 3.2,事件修饰符-阻止默认行为
        • 3.3,一次事件
        • 3.3,键盘事件修饰符
      • 四,Vue过滤器
      • 五,vue中class样式的动态绑定
        • 5.1,字符串写法
        • 5.1,对象写法
        • 5.1,数组写法
      • 六,完整代码
      • 最后

一,Vue2简介

1.1,什么是vue

官方给出的概念:Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的前端框架。

1.2,初始vue

  • M:Model(模型) 对应data的数据
  • V:View(视图) 模板==>页面
  • VM:ViewModel(视图模型) Vue实例对象

在这里插入图片描述

1.3,搭建vue环境

vue环境的搭建有很多种:

  • 使用cdn
  • 下载javaScript文件,自行托管
  • 使用npm安装
  • 使用官方的cli来构建项目

对于我们初次学习,我们使用自行下载js的方式。

1.4,第一个hello world

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app">{{message}}</div>
</body>
<script src="../js/vue2.7.js"></script>
<script>var app = new Vue({el: '#app',     // 用于指定当前vue实例为哪个容器使用,值为css选择器字符串data: {					// 用于储存数据,数据供el指定的容器使用message: 'Hello world!',},});
</script>
</html>

在这里插入图片描述
注意

  • 一个vue实例只能接管一个容器
  • 插值语法:{{}} 可以读取到在data的所有属性
  • data中数据发生变化,那么在容器用到的数据会自动更新
  • data的写法,我们通常会写成函数的方式,代码如下:
        data(){return {message: 'Hello world!',}}

面试题:
Data为啥要写成函数?
Vue 里面data属性之所以不能写成对象的格式,是因为对象是对地址的引用,而不是独立存在的。如果一个.vue 文件有多个子组件共同接收一个变量的话,改变其中一个子组件内此变量的值,会影响其他组件的这个变量的值。如果写成函数的话,那么他们有一个作用域的概念在里面,相互隔阂,不受影响。

二,基础知识

2.1 指令

什么是指令?
在vue中提供一些对于页面+数据的更为方便的操作,这些操作就叫做指令。
譬如在HTML页面中这样使用

<div v-xxx=''></div>

在vue中v-xxx就是vue的指令,指令就是以数据去驱动DOM行为的,简化DOM操作。
常用的指令有哪些,及怎么使用这些指令

  • v-text 不可解析html标签
  • v-html 可解析html标签
  • v-if 做元素的插入(append)和移除(remove)操作
  • v-else-if
  • v-else
  • v-show display:none 和display:block的切换
  • v-for 数组 item,index 对象 value,key ,index
2.2-1 指令v-text
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div v-text="showText"></div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {showText:'<h1>vue</h1>',} },})
</script>
</html>

在这里插入图片描述

2.2-2 指令v-html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div v-html="showHtml"></div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {showHtml:'<h1>vue</h1>',} },})
</script>
</html>

在这里插入图片描述

2.2-3 指令v-if

v-if指令称为条件渲染指令,根据表达式的真假来插入和删除元素

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {isIf:true,} },})
</script>
</html>

在这里插入图片描述

2.2-4 指令v-else

v-else指令为v-if指令添加“else块”,v-else元素必须立即跟在v-if元素的后面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1><h1 v-else="isIf">我是isIf为false时显示</h1><!-- v-if不成立时,才会显示 --></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {isIf:false,} },})
</script>
</html>

在这里插入图片描述

2.2-5 指令v-show

v-show指令控制切换一个元素的显示和隐藏

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><h1 v-show="isShow">isShow是真的,显示了,false的情况下此节点display为none</h1></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {// 表达式为真元素显示isShow:true,  } },})
</script>
</html>

在这里插入图片描述

2.2-6 v-if指令与v-show指令区别

按下F12键,打开控制台查看

  • v-if指令满足条件时会渲染到HTML中,不满足条件时,不会渲染
  • 使用v-show指令的元素始终会被渲染到HTML中
    • 只是简单地为元素设置CSS的style属性。当不满足条件的元素被设置style="display:none"样式

应用场景的区别

  • v-if指令有更高的切换消耗,当v-if指令条件成立的时候会将元素加上,不成立的时候,就会移除DOM,并且内部的指令不会执行
  • v-show指令有更高的初始渲染消耗,v-show只是简单的隐藏和显示
2.2-7 指令v-on

v-on指令为HTML元素绑定事件监听

v-on:事件名称 ="函数名称() "
简写形式   @事件名称 ="函数名称()"
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app">{{message}}<br><button @click="fun1">点击1</button><button @dblclick="fun2">双击2</button> </div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {message: 'Hello world!',} },methods:{// 声明了一个叫fun1的方法fun1(){// 怎么在方法中使用data对象的变量,需要使用thisconsole.log("button1被点击了",this.message);this.isShow=falseif(this.isIf){this.isIf=false}else{this.isIf=true}},fun2(){console.log("button2被双击了");},}})
</script>
</html>

在这里插入图片描述

2.2-8 指令v-bind

v-bind指令可以在其名称后面带一个参数,参数通常是HTML元素的特性(attribute)

v-bind:属性名 ="表达式" 
简写形式 :属性名 ="表达式"
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div><img v-bind:src="img1url" width="300px" height="100px" alt=""></div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {img1url:'../img/banner1.jpg',} },})
</script>
</html>

在这里插入图片描述

2.2-9 指令v-model

v-model指令能轻松实现表单输入和应用状态之间的双向绑定

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><form action=""><!-- 双向数据绑定是表单元素进行绑定 --><input type="text" name="personNmae" v-model="person.name"><input type="text" name="age" v-model="person.age"><select name="love" v-model="person.love"><option value="eat"></option><option value="drick"></option></select><input type="radio" v-model="person.sex" name="sex" value="1"><input type="radio" v-model="person.sex" name="sex" value="2"></form></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {person:{name:'王琪',age:18,love:'eat',sex:1,},} },})
</script>
</html>

在这里插入图片描述

2.2-10 指令v-for

v-for指令可以遍历data中的数据,并在页面进行数据展示

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><form action=""><div><select v-model="shabi1" name="" id=""><option v-for="(item, index) in shabi" >{{item}}</option></select></div><div v-for="(attr,key) in person">{{key}}-{{attr}}</div></form></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {person:{name:'王导',age:18,love:'eat',sex:1,},shabi:["小豪","王导","光头"],shabi1:"小豪",} },})
</script>
</html>

在这里插入图片描述

三,事件绑定

事件绑定v-on:事件名=“表达式||函数名” 简写 @事件名=“表达式||函数名”
事件名可以是原生也可以是自定义的。注意函数的定义也要在Vue中,采用methods属性

3.1,在事件对应的方法中获取到事件对象

加括号,加括号一般是需要有额外参数的情况。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><form action=""><div><table border="1"><tr><td>序号</td><td>姓名</td><td>年龄</td><td>操作</td></tr><tr v-for="(stu,index) in person.studentArray"><td>{{index+1}}</td><td>{{stu.name}}</td><td>{{stu.age}}</td><td><button type="button" @click="fun1($event,stu.name)">修改</button></td></tr></table></div></form></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {person:{studentArray:[{name:"小豪",age:"18"},{name:"导哥",age:"20"}],},} },methods:{// 声明了一个叫fun1的方法fun1(event,name){console.log("事件对象",event);console.log(name);},}})
</script>
</html>

3.1,事件修饰符-阻止冒泡

冒泡发生的情景:子元素和父元素绑定了相同的事件,然后点击了子元素,父元素也触发了该事件

使用原生js阻止冒泡

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div @click="fun3">外层div<div @click="fun3">里层div</div></div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{fun3(event){console.log("sss");event.stopPropagation(); // 使用原生js阻止冒泡},}})
</script>
</html>

在这里插入图片描述
使用vue事件的修饰符阻止冒泡

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div @click="fun3">外层div<div @click.stop="fun3">里层div</div></div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{fun3(event){console.log("sss");// event.stopPropagation(); // 使用原生js阻止冒泡},}})
</script>
</html>

在这里插入图片描述

3.2,事件修饰符-阻止默认行为

有些标签是由默认行为的,比如a标签,有个默认的页面跳转。

使用原生js阻止默认行为

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><a href="http://www.baidu.com" @click="fun5">百度</a></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{fun5(event){alert("不可跳转!")event.preventDefault(); // 使用原生js阻止默认行为},}})
</script>
</html>

在这里插入图片描述
使用vue的事件修饰符阻止默认行为

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><a href.prevent="http://www.baidu.com" @click="fun5">百度</a></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{fun5(event){alert("不可跳转!")// event.preventDefault(); // 使用原生js阻止默认行为},}})
</script>
</html>

在这里插入图片描述

3.3,一次事件

此事件只会执行一次,第二次点击无效

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><div @click.once="fun7">一次事件</div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{fun7(event){console.log("sss");},}})
</script>
</html>

在这里插入图片描述

3.3,键盘事件修饰符

键盘事件修饰符,主要筛选输入特定字符才触发。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app"><!-- 13表示是输入enter,起的keycode值可以查询 --><input type="text" @keyup.13="change"></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素methods:{change(event){console.log(event.key,event.keyCode);}}})
</script>
</html>

在这里插入图片描述

四,Vue过滤器

过滤器是指Vue.js支持在{{}}插值的尾部添加一个管道符“(|)”对数据进行过滤,经常用于格式化文本,比如字母的大写、货币的千位使用、逗号分隔等

示例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<body><div id="app">{{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") | againChange}}</div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {times: 1690944730436,}},// 2. 定义过滤器filters: {//3.定义一个处理函数,参数value为要处理数据,format为传入参数conversion: function (value, format) {//这个转换方法就不介绍了,看看就行,过滤器用法为主var date = new Date(value);function addZero(date) {if (date < 10) {return "0" + date;}return date;}let getTime = {yyyy: date.getFullYear(),yy: date.getFullYear() % 100,MM: addZero(date.getMonth() + 1),M: date.getMonth() + 1,dd: addZero(date.getDate()),d: date.getDate(),HH: addZero(date.getHours()),H: date.getHours(),hh: addZero(date.getHours() % 12),h: date.getHours() % 12,mm: addZero(date.getMinutes()),m: date.getMinutes(),ss: addZero(date.getSeconds()),s: date.getSeconds(),w: (function () {let a = ["日", "一", "二", "三", "四", "五", "六"];return a[date.getDay()];})(),};for (let i in getTime) {format = format.replace(i, getTime[i]);}return format;},//4.再定义一个过滤器,给数据前加上"时间为:"这几个字againChange: function (value) {return "时间为:" + value;},},})
</script>
</html>

在这里插入图片描述

五,vue中class样式的动态绑定

5.1,字符串写法

  • 使用场景
    • 样式的类型不确定
  • 手动触发样式改变
  • 注意
    字符串使用的是vue实例data中的已有属性
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<style>.yangshi{font-size: 50px;}.yanse{color: aquamarine;}
</style>
<body><div id="app"><div :class="myclass">你好vue</div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {myclass:'yangshi yanse',}},})
</script>
</html>

在这里插入图片描述

5.1,对象写法

  • 使用场景
    • 样式个数、类名确定,通过Boolean动态展示与否
  • 对象写在内联样式
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<style>.yangshi{font-size: 50px;}.yanse{color: aquamarine;}
</style>
<body><div id="app"><div :class="{yangshi:isyangshi,yanse:isyanse}">你好</div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {isyangshi:true,isyanse:true,}},})
</script>
</html>

在这里插入图片描述

5.1,数组写法

  • 使用场景
    • 需要绑定的样式个数不确定,类名也不确定
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>vue2</title>
</head>
<style>.yangshi{font-size: 50px;}.yanse{color: aquamarine;}
</style>
<body><div id="app"><div :class="myclassObject">你好</div></div>
</body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {myclassObject:['yangshi','yanse']}},})
</script>
</html>

在这里插入图片描述

六,完整代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<style>.yangshi{font-size: 50px;}.yanse{color: aquamarine;}
</style>
<body><div id="app">{{ times | conversion("yyyy-MM-dd HH:mm:ss 星期w") | againChange}}<div :class="myclass">你好</div><div :class="{yangshi:isyangshi,yanse:isyanse}">你好</div><div :class="myclassObject">你好</div><div v-html="showHtml"></div><h1 v-if="isIf">isIf是真的,显示了,false的情况下此节点删除</h1><h1 v-else>我是isIf为false时显示</h1><h1 v-show="isShow">isShow是真的,显示了,false的情况下此节点display为none</h1><button @click="fun1">点击1</button><button @dblclick="fun2">点击2</button><div><img v-bind:src="img1url" width="300px" height="100px" alt=""></div><div><form action=""><!-- 双向数据绑定是表单元素进行绑定 --><input type="text" name="personNmae" v-model="person.name"><input type="text" name="age" v-model="person.age"><select name="love" v-model="person.love"><option value="eat"></option><option value="drick"></option></select><input type="radio" v-model="person.sex" name="sex" value="1"><input type="radio" v-model="person.sex" name="sex" value="2"><div><select v-model="shabi1" name="" id=""><option v-for="(item, index) in shabi" >{{item}}</option></select></div><div v-for="(attr,key) in person">{{key}}-{{attr}}</div><div><table border="1"><tr><td>序号</td><td>姓名</td><td>年龄</td><td>操作</td></tr><tr v-for="(stu,index) in studentArray"><td>{{index+1}}</td><td>{{stu.name}}</td><td>{{stu.age}}</td><td><button type="button" @click="fun3($event,stu.name)">修改</button></td></tr></table></div></form></div><div><div @click="fun4">外层div<div @click.stop="fun4">里层div</div></div></div><div><a href="http://www.baidu.com" @click.prevent="fun5">百度</a></div><div><div @click.once="fun6">一次事件</div></div><div><!-- 13表示是输入enter,起的keycode值可以查询 --><input type="text" @keyup.13="change"></div></div></body>
<script src="../js/vue2.7.js"></script>
<script>// 创建一个Vue实例var app = new Vue({el:"#app", // 绑定一个元素data(){return {name:'小豪老放屁!!',isIf:true,isShow:true,img1url:'../img/banner1.jpg',person:{name:'王导',age:18,love:'eat',sex:1,},showHtml:'<h1>王导</h1>',shabi:["小豪","王导","光头"],shabi1:"小豪",studentArray:[{name:"光头",age:"18"},{name:"王导",age:"20"}],times: 1690944730436,myclass:'yangshi yanse',isyangshi:true,isyanse:true,myclassObject:['yangshi','yanse']}},methods:{// 声明了一个叫fun1的方法fun1(){// 怎么在方法中使用data对象的变量,需要使用thisconsole.log("button1被点击了",this.name);this.isShow=falseif(this.isIf){this.isIf=false}else{this.isIf=true}},fun2(){console.log("button2被双击了");},fun3(event,name){console.log("事件对象",event);console.log(name);},fun4(event){console.log("111");// elent.stopPropagation(); // 使用原生js阻止冒泡},fun5(event){alert("111");// elent.preventDefault(); // 使用原生js阻止默认行为},fun6(){console.log("sss");},change(event){console.log(event.key,event.keyCode);}},// 2. 定义过滤器filters: {//3.定义一个处理函数,参数value为要处理数据,format为传入参数conversion: function (value, format) {//这个转换方法就不介绍了,看看就行,过滤器用法为主var date = new Date(value);function addZero(date) {if (date < 10) {return "0" + date;}return date;}let getTime = {yyyy: date.getFullYear(),yy: date.getFullYear() % 100,MM: addZero(date.getMonth() + 1),M: date.getMonth() + 1,dd: addZero(date.getDate()),d: date.getDate(),HH: addZero(date.getHours()),H: date.getHours(),hh: addZero(date.getHours() % 12),h: date.getHours() % 12,mm: addZero(date.getMinutes()),m: date.getMinutes(),ss: addZero(date.getSeconds()),s: date.getSeconds(),w: (function () {let a = ["日", "一", "二", "三", "四", "五", "六"];return a[date.getDay()];})(),};for (let i in getTime) {format = format.replace(i, getTime[i]);}return format;},//4.再定义一个过滤器,给数据前加上"时间为:"这几个字againChange: function (value) {return "时间为:" + value;},},})
</script>
</html>

在这里插入图片描述

最后

送大家一句话:穷且益坚,不坠青云之志

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/18774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入学习 Redis - 渐进式遍历 scan 命令、数据库管理命令

目录 前言 一、scan 命令 二、数据库管理命令 select dbsize flushdb / flushall 前言 之前我们所了解到的 keys * 是一次性把整个 redis 中所有的 key 都获取到&#xff0c;但是整个操作比较危险&#xff0c;可能会一下子的都太多的 key&#xff0c;阻塞 redis 服务器. …

centos系统离线安装k8s v1.23.9最后一个版本并部署服务,docker支持的最后一个版本

注意&#xff1a;我这里的离线安装包是V1.23.9. K8S v1.23.9离线安装包下载&#xff1a; 链接&#xff1a;https://download.csdn.net/download/qq_14910065/88143546 这里包括离线安装所有的镜像&#xff0c;kubeadm&#xff0c;kubelet 和kubectl&#xff0c;calico.yaml&am…

linux系统共享文件夹的创建和使用(VMware )

虚拟机设置共享文件夹 点击设置 点击选项 选择共享文件夹 随便添加一个电脑上的文件夹 虚拟机内打开共享文件夹 打开根目录 打开mnt文件夹 继续点击 最终得到共享文件夹

一文讲清多线程与多线程同步

1 多线程 1.1 线程的概念 十多年前&#xff0c;主流观点主张在可能的情况下优先选择多进程而非多线程&#xff0c;如今&#xff0c;多线程编程已经成为编程领域的事实标准。多线程技术在很大程度上改善了程序的性能和响应能力&#xff0c;使其能够更加高效地利用系统资源&…

【读书笔记】CHAPTER 1: SCALE FROM ZERO TO MILLIONS OF USERS

如果你有一定工作经验&#xff0c;或者开发项目基础&#xff0c;就看这个图就可以。 一个“从零扩展到数百万用户”系统&#xff0c;基本由上述部分组成&#xff1a; web、app&#xff1a;触达用户的设备&#xff08;页面&#xff09; DNS&#xff1a;用户看到的都是域名(ww…

count(列名) ,count(1)与count(*) 有何区别?

Mysql版本&#xff1a;8.0.26 可视化客户端&#xff1a;sql yog 文章目录 一、Mysql之count函数简介二、count(列名) &#xff0c;count(常量)与count(*) 有何区别&#xff1f;2.1 统计字段上的区别2.2 执行效率上的区别 一、Mysql之count函数简介 &#x1f449;表达式 COUNT(…

Centos7 上安装 redis-dump 和redis-load 命令

一、安装rvm 1、安装GPG keys gpg2 --keyserver keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDBcurl -sSL http://rvm.io/mpapis.asc | gpg2 --import - curl -sSL http://rvm.io/pkuczynski.asc | g…

如何在项目需求与技术方案未确定的情况下掌控上线时间?

需求不明确与技术方案未确定的挑战 在任何项目管理过程中&#xff0c;需求和技术方案是两个核心环节。理想情况下&#xff0c;我们希望在项目开始阶段就有清晰明确的需求和经过深思熟虑的技术方案。然而&#xff0c;现实中的项目管理往往并不如此理想。 项目需求的重要性 需求…

谷粒商城第七天-商品服务之分类管理下的删除、新增以及修改商品分类

目录 一、总述 1.1 前端思路 1.2 后端思路 二、前端部分 2.1 删除功能 2.2 新增功能 2.3 修改功能 三、后端部分 3.1 删除接口 3.2 新增接口 3.3 修改接口 四、总结 一、总述 1.1 前端思路 删除和新增以及修改的前端无非就是点击按钮&#xff0c;就向后端发送请求…

将网盘挂载到本地保姆级教程

视频链接&#xff1a;https://www.bilibili.com/video/BV1SA411B7qc Clouddrive2&#xff1a;是一款非常实用的国内网盘服务挂载应用。它支持多种国内知名网盘服务&#xff0c;包括阿里云盘、115云盘、天翼云盘等。通过CloudDrive 2&#xff0c;你可以将这些网盘服务挂载到你的…

夏日暴雨,6大安全应对攻略,让我们一起做好防范

夏季暴雨来袭&#xff0c;我们必须高度警惕&#xff01;短时间的强降雨可能导致积水、山区滑坡、城市内涝等问题&#xff0c;给社会和经济发展带来严重影响。今天&#xff0c;让我们一起探讨一些有效的防范措施&#xff0c;确保个人安全与减少灾害损失。关注天气预警&#xff0…

MyBatis查询数据库

1.MyBatis 是什么&#xff1f; MyBatis 是⼀款优秀的持久层框架&#xff0c;它⽀持⾃定义 SQL、存储过程以及⾼级映射。MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的⼯作。MyBatis 可以通过简单的 XML 或注解来配置 和映射原始类型、接⼝和 Java POJO&#…

groovy.lang.GroovyRuntimeException:Ambiguous method

目录 问题 根因及解决 问题 今天线上的计算脚本报了个问题&#xff0c;报警如下是 groovy 运行时异常。调用方法 org.springframework.util.CollectionUtils#isEmpty 出现了异常。异常原因是由于方法重载造成了歧义。无法确定如何调用方法 [null]&#xff0c;因为它同时匹配了…

UE4/5 PoseDriver 动画蓝图节点使用

PoseDriver节点可以进行Pose的比对&#xff0c;从而针对不同Pose生成不同权重数值&#xff0c;权重数值可应用至MorphTarget上使动画更加逼真&#xff0c;或应用至角色挂件上&#xff0c;制作出类惯性或弹簧的附加效果。 1.创建Pose 这里创建Box作为演示&#xff0c;下图大Bo…

《评论文章-无线纳米技术可以降低脊髓刺激成本和并发症,传统设备与无线刺激设备费用相比的回顾》

SCS治疗可能会出现并发症&#xff0c;并且管理这些并发症的费用很高。 慢性疼痛是促使人们寻求缓解的主要因素&#xff0c;也是阿片类药物研究的主要方向。 SCS治疗取得了突破性进展&#xff0c;在治疗背部手术失败综合征、神经性疼痛障碍、复杂区域疼痛综合征以及血管缺血引…

【数据库】将excel数据导入mysql数据库

环境&#xff1a;Windows10 mysql8以上 将你要导入的excel表另存为txt格式 打开txt格式文件&#xff0c;删除表头行并另存为并更改编码方式&#xff08;由于与数据库的编码不同&#xff0c;会导致导入报错&#xff09; 通过命令行登录数据库 winr cmd进入 进入装mysql的目录位…

Kafka3.0.0版本——Broker(总体工作流程)

目录 一、Kafka中Broker总体工作流程图解二、Kafka中Broker总体工作流程步骤解析 一、Kafka中Broker总体工作流程图解 总体工作流程图解 二、Kafka中Broker总体工作流程步骤解析 1、broker启动后在zk中注册&#xff0c;如下图所示&#xff1a; 2、controller谁先注册&…

【leetcode经典简单题】自食用||删除链表中倒数第k个结点

step by step. 题目&#xff1a; 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&a…

怎样在Apipost中设计出实用又好看的API文档

Apipost一直推荐文档先行的API设计理念&#xff0c;在Apipost中可以添加Markdown格式的文本&#xff0c;用以储备文档和API文档设计。 作为一种轻量级标记语言&#xff0c;Markdown在撰写文档、博客文章、README文件以及网站内容上被广泛使用。 如何在Apipost中设计出漂亮的文…

分享低成本非隔离PWM控制AC-DC开关芯片 YB5011

简介&#xff1a; YB5011系列是一款高性能低成本PWM控制功率开关&#xff0c;适用于离线式小功率降 压型应用场合&#xff0c;外围电路简单、器件个数少。同时产品内置高耐压MOSFET可提高 系统浪涌耐受能力,集成有完备的带自恢复功能的保护功能&#xff1a;VDD欠压保护、逐周期…