1.Vue JS
1.1 Vue介绍
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
1.2 Vue结构
1.3 Vue语法
1.3.1 Vue入门案例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>VUE入门案例</title>
</head>
<body>
<!--
入门案例步骤:
1.导入vue.js文件 html下部编辑
2.指定区域进行渲染 需要准备div vue.js代码
3.创建VUE.js对象 指定渲染区域 动态调用
-->
<!-- 2.指定区域 -->
<div id="app">
<!-- 在div中展现msg属性
插值表达式: {{key}}
-->
<h1>{{msg}}</h1>
</div>
<!-- 1.导入JS文件 -->
<script src="../js/vue.js"></script>
<!-- 3.创建VUE对象 -->
<script>
/**
* 语法:
* 1.const 定义常量的
* 2.let: 作用和var类似, 有作用域的概念
* 3.var 特点:没有作用域
*/
const APP = new Vue({
//1.指定区域
el: "#app",
//2.定义属性
data: {
//key:value
msg: "您好VUE"
}
})
</script>
</body>
</html>
1.3.1数据显示
数据显示命令:v-text、v-html、v-pre、v-once
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>数据显示</title>
</head>
<body>
<script src="../js/vue.js"></script>
<div id="app">
<!-- 特点: 如果页面没有渲染完成,则直接展现给用户
插值表达式需要直接显示
注意事项: 只有显示时采用,输入操作不可使用
1.v-text指令: 如果页面没有渲染完成,则不显示信息
-->
{{msg}}
<h1 v-text="msg"></h1>
<!-- 2.v-html 直接渲染html标签 -->
<div v-html="h3Html"></div>
<!-- 3.v-pre 跳过预编译 显示标签体本身 -->
<div v-pre>{{msg}}</div>
<!-- 4.v-once只渲染一次 -->
<div v-once>{{once}}</div>
</div>
<script>
const APP=new Vue({
el:"#app",
data:{
msg:"Hello Vue",
h3Html:"<tr>我需要h3Html的渲染</tr>",
once:"我只能被渲染一次"
}
})
</script>
</body>
</html>
1.4 双向数据绑定
1.4 .1 双向数据绑定案例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>VUE入门案例</title>
</head>
<body>
<!-- 1.导入JS文件 -->
<script src="../js/vue.js"></script>
<!-- 2.指定区域 -->
<div id="app" >
<!-- 双向数据绑定 v-model
1.数据端---页面
2.页面-----数据
-->
<input name="msg" v-model="msg"/><br/>
数量:{{msg}}<br/>
<input name="msg2" v-model="msg" /> <br />
数量:{{msg}}
</div>
<!-- 3.创建VUE对象 -->
<script>
const APP = new Vue({
el: "#app",
data: {
msg: "您好VUE"
}
})
</script>
</body>
</html>
1.4.2 MVVM设计思想
知识回顾: MVC模式 核心思想 减少代码的耦合性
M Model:封装的数据
V View 视图层: 数据的展现
C Contro 控制层 程序的流转的过程
衍生: 3层代码的结构 Controller—Service–Mapper/Dao
针对于: 后端服务器.
MVVM思想说明:
M: Model 封装的数据. 数据层
V: View 数据的展现 视图层
VM: viewModel视图数据的控制层 控制数据流转
MVVM设计思想是前端模拟后端为了解耦的一种设计思想.
双向数据绑定原理
原理步骤:
1.用户修改页面时,通过DOM的监听器感知用户的修改行为,之后通过虚拟DOM对象,第一时间更新Model中的属性.
2.当数据发生变化,由虚拟DOM根据数据绑定的规则,第一事件通知真实的DOM对象.至此页面数据发生变化.
1.4.3 事件绑定
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>VUE入门案例</title>
</head>
<body>
<script src="../js/vue.js"></script>
<div id="app" >
<!-- v-on: 事件绑定
1、语法: v-on:click=“函数、直接计算”
2、v-on:可以简化为@
-->
<h3>{{num}}</h3>
<button v-on:click="num++">自增</button><br/>
<button @click="num++">自增</button><br/>
<button @click="addNum()">计算</button><br/>
<button @click="addNum2()">减减</button>
<!-- 如果没有参数()可以省略 -->
</div>
<script>
const APP = new Vue({
el: "#app",
data: {
num : 100
},
methods:{
// K:V 方法名:方法体
addNum:function(){
this.num++
},
addNum2(){//方法简化--JS脚本支持
--this.num
}
}
})
</script>
</body>
</html>
1.4.4 按键触发
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>按键触发</title>
</head>
<body>
<script src="../js/vue.js"></script>
<div id="app" >
<h1>用户数据:{{num}}</h1><br />
<input v-model="num2"/><br>
<!-- 按钮实现触发-->
<button @click="math">提交</button><br />
<!-- 回车实现触发
@keydown 按下触发
@keyup 弹起来触发
@keypress 小键盘触发
-->
<input v-model="num2" @keyup.enter="math" /><br>
<input v-model="num2" @keyup.space="math" /><br>
</div>
<script>
const APP = new Vue({
el: "#app",
data: {
num:100,
num2:0
},
methods:{
math(){
this.num+=parseInt(this.num2)
}
}
})
</script>
</body>
</html>
1.4.5 计算器案例
<!DOCTYPE html>
<!--
-->
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="../js/vue.js"></script>
<div id="app">
<h1>计算器</h1>
<h2>和:{{count}}</h2>
num1:
<input v-model="num1" type="number"/><br/><br/>
num2:
<input v-model="num2" type="number" @keyup.enter="addNum()"/><br/>
<button @click="addNum">计算和</button>
</div>
<script>
const APP=new Vue({
el:"#app",
data:{
count:0,
num1:0,
num2:0
},
methods:{
addNum(){
this.count=parseInt(this.num1)+parseInt(this.num2)
}
}
})
</script>
</body>
</html>
1.4.6 按键修饰符
1.4.6.1 阻止冒泡 .stop / 阻止默认事件 .prevent
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script src="../js/vue.js"></script>
<div id="app" @click="num++">
<!--停止冒泡:@click.stop=""-->
<h1>数值{{num}}</h1><br/>
<button @click.stop="num++">提交</button>
<hr/>
<!-- 要求:点击标签不跳转,同时触发事件@click.prevent="" -->
<a href="http://baidu.com" @click.prevent="num">百度</a>
</div>
<script>
const APP=new Vue({
el:"#app",
data:{
num:100
},
methods:{
}
})
</script>
</body>
</html>
2.SpringMVC参数取值详细说明
2.2 对象方式
2.2.1 前端页面对象封装
<!DOCTYPE html>
<!-- ajax参数传递 :
1、简单传递:根据id=1 查询传递
-->
<html>
<head>
<meta charset="utf-8">
<title>springMVC参数传递</title>
<script src=../jquery-2.0.0.min.js></script>
<!-- 请求类型:
get
post
put
delete -->
<script>
// $(function(){
// let url="http://localhost:8090/run/test3"
// let user={
// id:1,
// name:"黑熊精",
// age:200,
// sex:"男"
// }
// $.get(url,user,
// function(result){//回调函数
// console.log(result);
// })
// })
$(function(){
let url="http://localhost:8090/run/test2"
let data={
id:6
}
$.get(url,data,
function(result){//回调函数
console.log(result);
})
})
</script>
</head>
<body>
</body>
</html>
2.2.1后端参数接收
@GetMapping("test2")
public User test2(Integer id)
{
User user = userService.selectById(id);
return user;
}
@GetMapping("test3")
public User test3(User user){
System.out.println(user);
return user;
}