1. ES 6 基本语法
1.1 对象简写
- 对象简写
- 规则1:变量名和key如果重名,变量名可省略,且key不能使用引号
- 规则2:如果值是函数,“: function” 可省略
// 1 对象简写
// 1.1 回顾 js对象格式
// 1.1.1 定义:
var username = 'jack'
var password = '6666'
var obj = {
"username": username,
"password": password,
getAge: function() {
console.info('年龄18')
}
}
// 1.1.2 调用
console.info(obj.username)
obj.getAge()
// 1.2 对象简写
// 规则1:变量名和key如果重名,变量名可省略,且key不能使用引号
// 规则2:如果值是函数,“: function” 可省略
var obj2 = {
username,
password,
getAge() {
console.info('年龄19')
}
}
console.info(obj2.username)
obj2.getAge()
1.2 箭头函数
-
箭头函数标准格式
var e1 = (x) => { return x * x }
-
省略格式:
- 省略1:参数列表只有一个,小括号可省略
- 省略2:如果函数体只有一条语句,大括号可省略。如果此语句是return语句,return关键字必须省略。
var e2 = x => x*x
// 箭头函数:简单理解,对匿名函数的省略写法。
//1.1 回顾 函数定义 function 函数名(参数列表) { ... }
function show() {
}
//1.2 回顾 匿名函数的定义 var 别名 = function() {}
var a = function () {
console.info("a函数")
}
a()
// 箭头函数的标准语法
var b = () => {
console.info("b函数")
}
b()
// 1.3 定义带参数的
var c = (s1,s2) => {
console.info(`c函数: ${s1} , ${s2} `)
}
c('a','b')
// 1.4.1 省略1:参数列表只有一个,小括号可省略
var d1 = s1 => {
console.info(`d1函数: ${s1} `)
}
d1('6呀')
// 1.4.2 省略2:如果函数体只有一条语句,大括号可省略。如果此语句是return语句,return关键字必须省略。
var d2 = () => console.info(`d2函数 `)
d2()
var d3 = () => "哈哈"
console.info( d3() )
// 1.4.3 省略的整合写法:一个参数、一个返回语句,且是return语句
// 标准写法
var e1 = (x) => {
return x * x
}
console.info( e1(5) )
// 省略写法
var e2 = x => x*x
console.info( e2(6) )
1.3 循环遍历
// 循环遍历
var arr = ['暄桑','潘酱','O桑']
//1 普通循环
for(var i = 0 ; i < arr.length ; i ++) {
console.info(arr[i])
}
//2 使用map()处理数据
// map() : 对已有数组数据的再加工,返回一个新数组。
var newArr = arr.map( (s) => { return s.toLowerCase() } ).reverse().join('-->')
console.info(newArr)
//3 数据遍历forEach() 函数
arr.forEach( s => console.info(s) )
2.Axios基本操作
2.1 搭建后端环境
2.1.2 步骤
- 创建maven项目:day19_axios
- 导入坐标
- 编写启动类
- 编写JavaBean
- 编写Controller
2.1.3 实现
-
创建maven项目:day19_axios
-
导入坐标
<!--确定spring boot版本--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.5.RELEASE</version> <relativePath/> </parent> <dependencies> <!--web开发启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
编写启动类
package com.czxy; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class Day19Application { public static void main(String[] args) { SpringApplication.run(Day19Application.class, args); } }
-
编写JavaBean
package com.czxy.domain; public class User { private String uid; private String username; private String password; public String getUid() { return uid; } public void setUid(String uid) { this.uid = uid; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public User() { } public User(String uid, String username, String password) { this.uid = uid; this.username = username; this.password = password; } @Override public String toString() { return "User{" + "uid='" + uid + '\'' + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }
-
编写Controller
package com.czxy.controller; import com.czxy.domain.User; import org.springframework.web.bind.annotation.*; import java.util.ArrayList; import java.util.List; @RestController @CrossOrigin //解决跨域问题 @RequestMapping("/user") public class UserController { /** * 查询所有 * @return */ @GetMapping public List<User> selectAll() { List<User> list = new ArrayList<>(); list.add(new User("u001","jack","1234")); list.add(new User("u002","肉丝","6666")); return list; } /** * 添加用户 * @param user * @return */ @PostMapping public String save(@RequestBody User user) { System.out.println(user); return "添加成功"; } /** * 修改用户 * @param user * @return */ @PutMapping public String update(@RequestBody User user) { System.out.println(user); return "修改成功"; } /** * 通过id删除用户 * @param uid * @return */ @DeleteMapping("/{id}") public String delete(@PathVariable("id") Integer uid) { System.out.println(uid); return "删除成功"; } }
2.2 Axios 概述
-
axios底层使用Promise对象
-
Promise对象处理异常程序一种编程方式。
//基本语法 new Promise(....异步代码).then(成功回调函数).catch(失败回调函数) // new Promise(....异步代码) .then((response响应)=>{成功回调代码}) .catch((error错误) => {失败回调代码})
-
什么是axios?
- 用于发送ajax工具。另一种称号“HTTP 客户端”
2.3 发送各种请求
- 前提:导入axios.js 类库
//请求方式:get、post、put、delete
axios.请求方式(请求路径,请求参数).then( 成功 ).catch( 失败 )
2.3.1 get请求
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/axios.js"></script>
<script>
// 发送ajax请求
// get请求格式:axios.get(url).then().catch()
var url = 'http://localhost:8080/user'
axios.get(url)
.then(response => {
// 响应数据
console.log(response.data)
})
.catch(err => {
console.error(err);
})
</script>
</head>
<body>
</body>
</html>
2.3.2 post 请求
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/axios.js"></script>
<script>
var user = {
username: 'jack',
password: '1234'
}
// 发送post请求
var url = 'http://localhost:8080/user'
axios.post(url, user)
.then( response => {
console.info(response.data)
})
.catch( error => {})
</script>
</head>
<body>
</body>
</html>
2.3.3 put请求
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/axios.js"></script>
<script>
var url = 'http://localhost:8080/user'
var user = {
"uid":"u001",
"username":"杰克",
"password":"1234"
}
axios.put(url, user)
.then( response => {
// 响应结果
console.info(response.data)
})
.catch( error => {})
</script>
</head>
<body>
</body>
</html>
2.3.4 delete请求
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/axios.js"></script>
<script>
var url = 'http://localhost:8080/user/u001'
axios.delete(url)
.then(response=> {
// 响应结果
console.info(response.data)
})
.catch(error => {})
</script>
</head>
<body>
</body>
</html>
3.Vue基本语法
3.1 什么是vue
- vue : js框架,构建用户界面
- 将学习vue众多技术,称为vue全家桶:vue、spa、vue-router、vuex、element-ui 等
3.2 入门案例
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
{{message}}
</div>
</body>
</html>
<script>
new Vue({
el: "#app",
data:{
message: 'O哥真棒'
}
})
</script>
- 注意:
- 必须导入vue类库 vue.js
- 内容显示区域:
<div id="app">vue显示代码</div>
- vue js 代码,必须放在html页面的最后
3.3 MVVM模式
- MVVM 对mvc升级模式
- Model 数据层,用于存放数据
- View 视图层,用于显示或搜集数据
- ViewModel:视图模型,业务逻辑层,用于完成MVVM核心功能
- MVVM核心功能:数据的双向绑定。
- 数据层 --> 视图层:
数据层
的数据发生改变时,视图层
的数据自动更新。 - 视图层 --> 数据层:
视图层
的数据发生改变时,数据层
的数据自动更新。
- 数据层 --> 视图层:
3.4 基本语法
3.4.1 插值表达式
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
{{msg1 + msg2}} <br/>
{{1 + 2 + 3}}
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
msg1: 'Hello',
msg2: 'world'
}
})
</script>
3.4.2 v-text和v-html
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<!-- v-text 以文本的方式显示内容到标签体中 -->
<div v-text="msg1"></div>
<div v-text="msg2"></div>
<!-- v-html 以html的方式,显示内容到标签体中 -->
<div v-html="msg1"></div>
<div v-html="msg2"></div>
<!-- 插值表达式与 v-text一致 -->
<div>{{msg2}}</div>
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
msg1: "哈哈",
msg2: "<a href=''>哈哈</a>"
}
})
</script>
3.4.3 v-for 循环
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<div v-for="(s,i) in arr">
{{i}} -- {{s}}
</div>
<div v-for="(user,index) in userList">
{{index}} --{{user.username}},{{user.password}},{{user.age}}
</div>
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
arr: ['徐酱','达咩','杨桑酱'],
userList: [
{
"username":"jack",
"password":"1234",
"age":"18"
},
{
"username":"rose",
"password":"5678",
"age":"21"
}
]
}
})
</script>
3.4.4 v-bind 和 :
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<a v-bind:href="url">访问官网</a> <br/>
<a :href="url">访问官网</a> <br/>
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
url : 'http://www.czxy.com'
}
})
</script>
3.4.5 v-show和v-if
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
<div v-show="flag1">show flag1 </div>
<div v-show="flag2">show flag2 </div> <!--样式隐藏-->
<div v-if="flag1">show flag1 </div>
<div v-if="flag2">show flag2 </div>
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
flag1 : true,
flag2 : false,
}
})
</script>
3.4.6 v-model
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
<script src="js/vue.js"></script>
</head>
<body>
<div id="app">
显示数据: {{username}} <br/>
<input type="text" v-model="username">
</div>
</body>
</html>
<script>
new Vue({
el: '#app',
data:{
username: 'jack'
}
})
</script>