Vue条件渲染
概述
使用v-if、v-show指令根据指定条件渲染元素
v-if
根据条件渲染元素,满足元素直接消失
v-show
根据条件渲染元素,满足调价display=none
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue条件渲染</title>
</head>
<body>
<div id="app">
<span v-if="flag">
这是一个span
</span>
<span v-show="flag">
这是二个span
</span>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
flag: false
}
})
</script>
</html>
Vue属性绑定
概述
使用’v-bind:属性”指令给元素的属性赋值,也可简写成":属性名"
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue属性绑定</title>
</head>
<body>
<div id="app">
<input type="text" v-bind:value="name"><br>
<input type="text" :value="name"><br>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el:"#app",
data:{
name : "小李子"
}
})
</script>
</html>
Vue案例之计算器
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue案例之计算器</title>
</head>
<body>
<div id="app">
<input type="text" v-model="num1">
<select v-model="operate">
<option value="+">加</option>
<option value="-">减</option>
<option value="*">乘</option>
<option value="/">除</option>
</select>
<input type="text" v-model="num2">
= <span v-text="result">结果</span><br>
<button @click="fn1()">计算</button>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
num1: 1,
operate: "+",
num2: 1,
result: 2
},
methods: {
fn1() {
console.log(this);
var result = eval(this.num1 + this.operate + this.num2);
console.log("result : " + result);
this.result = result;
}
}
})
</script>
</html>
Vue之表单操作
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue案例之表单操作</title>
</head>
<body>
<div id="app">
<form @submit.prevent="fn1()">
姓名:
<input type="text" name="username" v-model="user.username"/><br><br>
密码:
<input type="text" name="password" v-model="user.password"/><br><br>
性别:
<input type="radio" name="sex" value="male" v-model="user.sex">男
<input type="radio" name="sex" value="female" v-model="user.sex">女<br/><br>
爱好:
<input type="checkbox" value="java" name="hobbys" v-model="user.hobbys">javase
<input type="checkbox" value="javame" name="hobbys" v-model="user.hobbys">javame
<input type="checkbox" value="javaee" name="hobbys" v-model="user.hobbys">javaee<br/><br>
职业:
<select name="job" v-model="user.job">
<option value="javase工程师">javase工程师</option>
<option value="javame工程师">javame工程师</option>
<option value="javaee工程师">javaee工程师</option>
</select><br><br>
个人简介
<textarea name="introduce" v-model="user.introduce"></textarea> <br><br>
<input type="submit" value="提交修改"/>
</form>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
user: {
username: "",
password: "",
sex: "female",
hobbys: [],
job: "javase工程师",
introduce: ""
}
},
methods: {
fn1(){
//使用正则表达式对表单中的数据格式进行校验
var flag = true;
if (flag) {
console.log(this.user)
}
}
}
})
</script>
</html>
Vue监听器
- 概述
- 用于监听Vue变量的改变
- 分类
- ①监听普通变量
- ②监听对象变量
- ①监听普通变量## Vue生命周期
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue监听器</title>
<!--普通变量-->
</head>
<body>
<div id="app">
<input type="text" v-model="msg"><br>
<span v-text="msg"></span>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: ""
},
watch: {
/**
* 监听变量msg的变化
* @param newVal
* @param oldVal
*/
msg(newVal, oldVal) {
console.log("新值 : " + newVal + " , 老值 : " + oldVal);
}
}
})
</script>
</html>
②监听对象变量
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue监听器</title>
<!--对象变量-->
</head>
<body>
<div id="app">
<input type="text" v-model="user.username"><br>
<span v-text="user.username"></span>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
user: {
username: ""
}
},
methods: {},
watch: {
"user.username": {
handler: function (newVal, oldVal) {
console.log("新值 : " + newVal + " , 老值 : " + oldVal);
}
}
}
})
</script>
</html>
Vue生命周期
代码实现
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Vue生命周期</title>
</head>
<body>
<div id="app">
<span id="spn">{{msg}}</span><br>
<button @click="updateMsg()">修改msg</button>
</div>
</body>
<script src="js/vue.js"></script>
<script>
var vue = new Vue({
el: "#app",
data: {
msg: "hello"
},
methods:{
show(){
console.log("show show show");
},
updateMsg(){
this.msg = "fuck";
}
},
beforeCreate(){//data和methods还没有初始化
console.log("----------------------beforeCreate----------------------");
console.log(this.msg);
this.show();
},
created(){//data和methods已经初始化
console.log("----------------------created----------------------");
console.log(this.msg);
this.show();
},
beforeMount(){//生成虚拟dom树
console.log("----------------------beforeMount----------------------");
var spanEle = document.getElementById("spn");
console.log(spanEle.innerText);
},
mounted(){//生成真实dom树
console.log("----------------------mounted----------------------");
var spanEle = document.getElementById("spn");
console.log(spanEle.innerText);
},
beforeUpdate(){//修改后,生成虚拟dom树
console.log("----------------------beforeUpdate----------------------");
//发生修改之前,已经有真实dom树(hello),发生修改之后,生成虚拟dom树(fuck)
var spanEle = document.getElementById("spn");
console.log(spanEle.innerText);
},
updated(){//修改后,生成真实dom树
console.log("----------------------updated----------------------");
var spanEle = document.getElementById("spn");
//虚拟dom树(fuck) 变成了 真实dom树(fuck)
console.log(spanEle.innerText);
}
})
</script>
</html>
Xml
Xml概述
-
概述
- extensive markup language : 可扩展标签语言
- html文件中的标签是预设好的,而xml文件中的标签是可以随意写的。
-
作用
- 用于传输数据,但是因为结构过于复杂,所以已经被json代替
- 用于存储数据(配置文件),这个还在使用
-
代码实现
<?xml version="1.0" encoding="UTF-8" ?><!--声明xml文档-->
<bookstore>
<book category="magic">
<title lang="english">Harry Potter</title>
<author>J K.Rowling</author>
<year>2005</year>
<price>29.9</price>
</book>
</bookstore>
Xml组成
组成
- 元素
- 属性
- 文本
- xml文档声明
Xml约束概述
-
概述
- 在xml文件中,可以随意写任何标签,会导致解析出现问题,从而导致数据出现问题。可以使用xml约束来规定xml文件中可以使用哪些标签、属性等等。
-
分类
- dtd约束 : 可以写哪些标签、哪些属性
- schema约束 : 可以写哪些标签、哪些属性,可以规定标签内容、属性值
DTD约束
-
概述
- 规定xml文件中,可以写哪些标签,可以写哪些属性
-
①内部结合
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students [
<!ELEMENT students (student*)>
<!ELEMENT student (name,age,sex)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ATTLIST student id CDATA #REQUIRED>
<!ATTLIST student classname CDATA #IMPLIED>
]>
<students>
<student id="1">
<name>张三</name>
<age>18</age>
<sex>男</sex>
</student>
</students>
②外部结合
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml文件中有一个根节点students,students下可以有n个student子节点(包括0个) -->
<!ELEMENT students (student*)>
<!-- student节点下,可以有name节点、age节点和sex节点,且name节点、age节点和sex节点是按照先后顺序出现 -->
<!ELEMENT student (name,age,sex)>
<!-- 定义name节点,且节点内容的类型为字符 -->
<!ELEMENT name (#PCDATA)>
<!-- 定义age节点,且节点内容的类型为字符 -->
<!ELEMENT age (#PCDATA)>
<!-- 定义sex节点,且节点内容的类型为字符 -->
<!ELEMENT sex (#PCDATA)>
<!-- 给节点student设置属性,属性名称为id,属性的类型为CDATA(字符), #REQUIRED指本属性是必须的 #IMPLIED指属性是可选的 -->
<!ATTLIST student id CDATA #REQUIRED>
<!-- 给节点student设置属性,属性名称为classname,属性的类型为CDATA(字符), #REQUIRED指本属性是必须的 #IMPLIED指属性是可选的 -->
<!ATTLIST student classname CDATA #IMPLIED>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE students SYSTEM "students.dtd">
<students>
<student id="-1">
<name>张三</name>
<age>-18</age>
<sex>男</sex>
</student>
</students>
Schema约束
-
概述
- 可以规定xml文件:哪些标签可以写、哪些属性可以写、标签内容可以是什么、属性值可以是什么.
-
代码实现
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/students"
elementFormDefault="qualified">
<!-- element:申明元素,包括根元素和子元素 这里就是申明根元素class -->
<element name="students">
<!-- 复杂元素 -->
<complexType>
<!-- squence:子元素按照顺序 1,子元素如果只有一种,那么就写一个,比如student元素 2,子元素如果有多种,那么就按想要的顺序写,比如:name,age,sex -->
<sequence>
<!-- 申明子元素student minOccurs:最少出现次数 maxOccurs:最大出现次数,数值或unbounded(无限大) -->
<element name="student" minOccurs="0" maxOccurs="unbounded">
<!--复杂元素-->
<complexType>
<sequence>
<!-- 申明子元素name -->
<element name="name" type="string"></element>
<!-- 申明子元素age simpleType:元素age是一个简单元素 restriction:age的取值范围在1~150之间 -->
<element name="age">
<!--简单元素-->
<simpleType>
<restriction base="integer">
<minInclusive value="0"></minInclusive>
<maxInclusive value="150"></maxInclusive>
</restriction>
</simpleType>
</element>
<!-- 申明子元素 sex restriction:取值范围在"男"和"女" -->
<element name="sex">
<simpleType>
<restriction base="string">
<enumeration value="男"></enumeration>
<enumeration value="女"></enumeration>
</restriction>
</simpleType>
</element>
</sequence>
<!--
定义了一个属性id
use="required":属性是必须的
<pattern value="java_\d{4}"></pattern>:id的值必须满足这个正则表达式:以java_开头,后面跟四个数字
-->
<attribute name="id" use="required">
<simpleType>
<restriction base="string">
<pattern value="java_\d{4}"></pattern>
</restriction>
</simpleType>
</attribute>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
<?xml version="1.0" encoding="UTF-8" ?>
<students xmlns="http://www.example.org/students">
<student id="java_1234">
<name>张三</name>
<age>18</age>
<sex>男</sex>
</student>
</students>
总结
- dtd : mybatis框架
- schema : spring框架
Dom4j解析
-
概述
- 用于获取xml文件中的配置信息
-
开发步骤
- ①创建核心解析对象SAXReader
- ②读取xml文件,并获取文档对象Document
- ③获取根节点
- ④获取根节点下所有子节点
- ⑤获取所有子节点的信息(属性信息、标签信息),并将信息封装到java对象中
-
代码实现
-
`/**
-
解析spring.xml
*/
public class Demo01 {public static void main(String[] args) throws Exception {
//1,创建核心解析对象
SAXReader saxReader = new SAXReader();
//2,读取spring.xml,获取document对象
Document document = saxReader.read(“spring.xml”);
//3,获取根节点
Element rootElement = document.getRootElement();
//4,获取根节点下的所有子节点对象
List beanEles = rootElement.elements(“bean”);List<User> userList = new ArrayList<>(); for (Element beanEle : beanEles) { //获取id属性值 String id = beanEle.attributeValue("id"); //获取name标签内容 String name = beanEle.elementText("name"); //获取age标签内容 String age = beanEle.elementText("age"); User user = new User(); user.setId(id); user.setName(name); user.setAge(Integer.parseInt(age)); userList.add(user); } System.out.println("userList = " + userList);
}
}`