一、统一异常处理的另外两种情况
1.1 特殊异常(特定异常处理)
- 统一异常处理类添加处理特定异常的方法@ExceptionHandler(ArithmeticException.class)
1.2 自定义异常处理
- 创建自定义异常类,继承异常类RuntimeException
- 在统一异常处理类中添加自定义异常的方法
- 在逻辑代码中需要手动捕获抛出自定义类异常
二、统一日志处理
日志级别:ERROR、WARN、INFO、DEBUG
# 设置日志级别
#logging.level.root=
1.Logback日志工具
用法: 第一步:删除application配置文件中的日志配置信息 第二步:resource中创建logback-spring.xml,并在文件中添加固定内容
将错误信息打印到指定日志
- 在全局异常处理类中添加注解:@Slf4j//将错误信息会打印到指定日志中
- 在需要的异常处理方法中添加这一段代码
log.error(e.getMessage());//Logback会将这个信息写到日志文件中去
三、ECMAScript 6.0(es6)入门
自学参考:http://es6.ruanyifeng.com/
ECMAScript是一套标准,JavaScript是实现这套标准的脚本语言
3.1 基本语法
1、let声明变量
{
var a = 0
let b = 1
}
console.log(a)
console.log(b)
var m = 1
var m = 2
let n = 3
let n = 4
console.log(m)
console.log(n)
2、const声明常量(只读变量)
const PI = "3.1415926"
PI = 3
const MY_AGE
3、解构赋值
let a = 1, b = 2, c = 3
console.log(a, b, c)
let [x, y, z] = [1, 2, 3]
console.log(x, y, z)
let user = {name: 'Helen', age: 18}
let name1 = user.name
let age1 = user.age
console.log(name1, age1)
let { name, age } = user
console.log(name, age)
4、模板字符串
模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。
let string1 = `Hey,
can you stop angry now?`
console.log(string1)
let name = "Mike"
let age = 27
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info)
function f(){
return "have fun!"
}
let string2 = `Game start,${f()}`
console.log(string2);
5、声明对象简写
const age = 12
const name = "Amy"
const person1 = {age: age, name: name}
console.log(person1)
const person2 = {age, name}
console.log(person2)
6、定义方法简写
const person1 = {
sayHi:function(){
console.log("Hi")
}
}
person1.sayHi();
const person2 = {
sayHi(){
console.log("Hi")
}
}
person2.sayHi()
7、对象拓展运算符
let person1 = {name: "Amy", age: 15}
let someone = { ...person1 }
console.log(someone)
let age = {age: 15}
let name = {name: "Amy"}
let person2 = {...age, ...name}
console.log(person2)
8、箭头函数
箭头函数提供了一种更加简洁的函数书写方式。基本语法是: 参数 => 函数体
var f1 = function(a){
return a
}
console.log(f1(1))
var f2 = a => a
console.log(f2(1))
var f3 = (a,b) => {
let result = a+b
return result
}
console.log(f3(6,2))
var f4 = (a,b) => a+b
四、Vue入门
1.入门案例
第一步:创建html页面 第二部:引入vue的js文件 第三步:在html页面创建div标签,给div添加id属性 第四步:编写vue代码,固定结构 第五部:使用插值表达式获取data里面定义的值{{名称}}
<body>
<div id="app">
<!-- {{}} 插值表达式,绑定vue中data的数据 -->
{{message}}
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
})
</script>
</body>
2. 抽取代码片段(代码中相同部分)
在vs code中创建代码片段: 文件 => 首选项 => 用户代码片段 => 新建全局代码片段/或文件夹代码片段:vue-html.code-snippets
{
"vue htm": {
"scope": "html",
"prefix": "vuehtml",
"body": [
"<!DOCTYPE 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>",
"</head>",
"",
"<body>",
" <div id=\"app\">",
"",
" </div>",
" <script src=\"vue.min.js\"></script>",
" <script>",
" new Vue({",
" el: '#app',",
" data: {",
" $1",
" }",
" })",
" </script>",
"</body>",
"",
"</html>",
],
"description": "my vue template in html"
}
}
3. 基本语法
v-bind:单项绑定
<body>
<div id="app">
<!-- v-bind指定
单向数据绑定
一般使用在标签属性里面,获取值
-->
<h1 v-bind:title="message">
{{content}}
</h1>
<!-- 简写方式 -->
<h2 :title="message">
{{content}}
</h2>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
content: '我是标题',
message: '页面加载' + new Date().toLocaleString()
}
})
</script>
</body>
v-model双向绑定
该地方的值发生变化,也会影响其他地方的值;
<div id="app">
<input type="text" v-bind:value="searchMap.keyWord">
<!-- 双向绑定 -->
<input type="text" v-model="searchMap.keyWord">
<p>{{searchMap.keyWord}}</p>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
searchMap:{
keyWord: '尚硅谷'
}
}
})
</script>
事件绑定
<div id="app">
<button v-on:click="search()">查询</button>
<button @click="search2()">查询</button>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
searchMap:{
keyWord: '尚硅谷'
},
result:{}
},
methods:{
search(){
console.log('这里是serch...')
},
search2(){
console.log('这里是serch2...')
}
}
})
</script>
修饰符
v-on:submit.prevent ;
<div id="app">
<form action="save" v-on:submit.prevent="onSubmit">
<input type="text" id="username" v-model="user.username">
<button type="submit">保存</button>
</form>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
user:{}
},
methods:{
onSubmitForm(){
if(this.user.name){
console.log('提交表单')
}else{
alert('请输入用户名!')
}
}
}
})
</script>
条件渲染
v-if指令
<div id="app">
<input type="checkbox" v-model="ok"/>是否同意
<h1 v-if="ok">同意,通过面试</h1>
<h1 v-else=>同意,通过面试薪资加倍</h1>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
ok:false
}
})
</script>
v-for指令(遍历数组)
<div id="app">
<ul>
<li v-for="n in 10">{{n}}</li>
</ul>
<ol>
<li v-for="(n,index) in 10">{{n}}----------{{index}}</li>
</ol>
<hr/>
<table>
<tr v-for="user in userList">
<td>{{user.username}}</td>
<td>{{user.id}}</td>
<td>{{user.age}}</td>
</tr>
</table>
</div>
<script src="vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
userList: [
{ id: 1, username: 'helen', age: 18 },
{ id: 2, username: 'peter', age: 28 },
{ id: 3, username: 'andy', age: 38 }
]
}
})
</script>
五、vue进阶
5.1 组件(重点 )
组件(Component)是 Vue.js 最强大的功能之一; 组件可以扩展 HTML 元素,封装可重用的代码; 组件系统让我们可以用独立可复用的小组件来构建大型应用; 写js组件
Vue.component('Navbar',{
template:'<ul><li>首页</li><li>学员管理</li><li>讲师管理</li></ul>'
})
引入全局组件并当标签使用
Vue.component('Navbar',{
template:'<ul><li>首页</li><li>学员管理</li><li>讲师管理</li></ul>'
})
5.2 实例的声明周期
重点两个方法 beforecreate:在页面渲染数据之前完成 mounted:在数据渲染之后执行 beforedestroyed destroyed
5.3 vue的路由
Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA)。 Vue.js 路由需要载入 vue-router 库 (点击不同显示不同内容,类似导航菜单)
- 添加vue.router的js文件
- 编写html代码
<div id="app">
<h1>Hello App!</h1>
<p>
<!-- 使用 router-link 组件来导航. -->
<!-- 通过传入 `to` 属性指定链接. -->
<!-- <router-link> 默认会被渲染成一个 `<a>` 标签 -->
<router-link to="/">首页</router-link>
<router-link to="/student">会员管理</router-link>
<router-link to="/teacher">讲师管理</router-link>
</p>
<!-- 路由出口 -->
<!-- 路由匹配到的组件将渲染在这里 -->
<router-view></router-view>
</div>
<script src="vue.min.js"></script>
<script src="vue-router.min.js"></script>
<script>
const Welcome = { template: '<div>欢迎</div>' }
const Student = { template: '<div>student list</div>' }
const Teacher = { template: '<div>teacher list</div>' }
const routes = [
{ path: '/', redirect: '/welcome' },
{ path: '/welcome', component: Welcome },
{ path: '/student', component: Student },
{ path: '/teacher', component: Teacher }
]
const router = new VueRouter({
routes
})
const app = new Vue({
el: '#app',
router
})
</script>
|