在线教育项目02_前端知识(es6、vue)


一、统一异常处理的另外两种情况

1.1 特殊异常(特定异常处理)

  1. 统一异常处理类添加处理特定异常的方法@ExceptionHandler(ArithmeticException.class)

1.2 自定义异常处理

  1. 创建自定义异常类,继承异常类RuntimeException
  2. 在统一异常处理类中添加自定义异常的方法
  3. 在逻辑代码中需要手动捕获抛出自定义类异常

二、统一日志处理

日志级别:ERROR、WARN、INFO、DEBUG

# 设置日志级别
#logging.level.root=

1.Logback日志工具

用法
第一步:删除application配置文件中的日志配置信息
第二步:resource中创建logback-spring.xml,并在文件中添加固定内容

将错误信息打印到指定日志

  1. 在全局异常处理类中添加注解:@Slf4j//将错误信息会打印到指定日志中
  2. 在需要的异常处理方法中添加这一段代码

log.error(e.getMessage());//Logback会将这个信息写到日志文件中去

三、ECMAScript 6.0(es6)入门

自学参考:http://es6.ruanyifeng.com/

ECMAScript是一套标准,JavaScript是实现这套标准的脚本语言

3.1 基本语法

1、let声明变量

// var 声明的变量没有局部作用域
// let 声明的变量  有局部作用域
{
var a = 0
let b = 1
}
console.log(a)  // 0
console.log(b)  // ReferenceError: b is not defined
// var 可以声明多次
// let 只能声明一次
var m = 1
var m = 2
let n = 3
let n = 4
console.log(m)  // 2
console.log(n)  // Identifier 'n' has already been declared

2、const声明常量(只读变量)

// 1、声明之后不允许改变    
const PI = "3.1415926"
PI = 3  // TypeError: Assignment to constant variable.

// 2、一但声明必须初始化,否则会报错
const MY_AGE  // SyntaxError: Missing initializer in const declaration

3、解构赋值

//1、数组解构
// 传统
let a = 1, b = 2, c = 3
console.log(a, b, c)
// ES6
let [x, y, z] = [1, 2, 3]
console.log(x, y, z)

//2、对象解构
let user = {name: 'Helen', age: 18}
// 传统
let name1 = user.name
let age1 = user.age
console.log(name1, age1)
// ES6
let { name, age } =  user//注意:结构的变量必须是user中的属性
console.log(name, age)

4、模板字符串

模板字符串相当于加强版的字符串,用反引号 `,除了作为普通字符串,还可以用来定义多行字符串,还可以在字符串中加入变量和表达式。

// 1、多行字符串
let string1 =  `Hey,
can you stop angry now?`
console.log(string1)
// Hey,
// can you stop angry now?

// 2、字符串插入变量和表达式。变量名写在 ${} 中,${} 中可以放入 JavaScript 表达式。
let name = "Mike"
let age = 27
let info = `My Name is ${name},I am ${age+1} years old next year.`
console.log(info)
// My Name is Mike,I am 28 years old next year.

// 3、字符串中调用函数
function f(){
    return "have fun!"
}
let string2 = `Game start,${f()}`
console.log(string2);  // Game start,have fun!

5、声明对象简写

const age = 12
const name = "Amy"

// 传统
const person1 = {age: age, name: name}
console.log(person1)

// ES6
const person2 = {age, name}
console.log(person2) //{age: 12, name: "Amy"}

6、定义方法简写

// 传统
const person1 = {
    sayHi:function(){
        console.log("Hi")
    }
}
person1.sayHi();//"Hi"


// ES6
const person2 = {
    sayHi(){
        console.log("Hi")
    }
}
person2.sayHi()  //"Hi"

7、对象拓展运算符

// 1、拷贝对象
let person1 = {name: "Amy", age: 15}
let someone = { ...person1 }
console.log(someone)  //{name: "Amy", age: 15}

// 2、合并对象
let age = {age: 15}
let name = {name: "Amy"}
let person2 = {...age, ...name}
console.log(person2)  //{age: 15, name: "Amy"}

8、箭头函数

箭头函数提供了一种更加简洁的函数书写方式。基本语法是:
参数 => 函数体

// 传统
var f1 = function(a){
    return a
}
console.log(f1(1))


// ES6
var f2 = a => a
console.log(f2(1))

// 当箭头函数没有参数或者有多个参数,要用 () 括起来。
// 当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,
// 当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
var f3 = (a,b) => {
    let result = a+b
    return result
}
console.log(f3(6,2))  // 8

// 前面代码相当于:
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>
        // 创建一个vue对象
        new Vue({
            el: '#app',//绑定vue的作用范围
            data: {
                message: 'Hello Vue!'
            } 
        })
    </script>
</body>

2. 抽取代码片段(代码中相同部分)

在vs code中创建代码片段:
文件 => 首选项 => 用户代码片段 => 新建全局代码片段/或文件夹代码片段:vue-html.code-snippets

{
	"vue htm": {//在其他地方使用此代码的快捷键 vuehtml
		"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 库
(点击不同显示不同内容,类似导航菜单)

  1. 添加vue.router的js文件
  2. 编写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>
        // 1. 定义(路由)组件。
        // 可以从其他文件 import 进来
        const Welcome = { template: '<div>欢迎</div>' }
        const Student = { template: '<div>student list</div>' }
        const Teacher = { template: '<div>teacher list</div>' }
    
        // 2. 定义路由
        // 每个路由应该映射一个组件。
        const routes = [
            { path: '/', redirect: '/welcome' }, //设置默认指向的路径
            { path: '/welcome', component: Welcome },
            { path: '/student', component: Student },
            { path: '/teacher', component: Teacher }
        ]
    
        // 3. 创建 router 实例,然后传 `routes` 配置
        const router = new VueRouter({
            routes // (缩写)相当于 routes: routes
        })
    
        // 4. 创建和挂载根实例。
        // 从而让整个应用都有路由功能
        const app = new Vue({
            el: '#app',
            router
        })
    
        // 现在,应用已经启动了!
    </script>
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值