DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
{{title}}
<p>欢迎{{user.username}}p>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app', //css3选择器语法,element的简写
data: {
title: '第一个vue程序',
user: {
username: 'hellen',
age: 18,
},
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<a v-bind:href="site">{{company}}a>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
company: '尚硅谷',
site: 'http://www.atguigu.com',
},
})
script>
body>
html>
双向绑定(属性变,数据模型变。数据模型变,属性也变)
v-model:(注意,只用在与用户交互的dom对象中)
可以简略写为:
练习
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<input type="text" :value="company" />
<input type="text" v-model:value="company" />
<a v-bind:href="site">{{company}}a>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
company: '尚硅谷',
site: 'http://www.atguigu.com',
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<button v-on:click="hello">点击事件button>
<button @click="hello">点击事件button>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
methods: {
hello() {
alert('hello')
},
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<p>{{message}}p>
<p>翻转字符串:{{ message.split('').reverse().join('')}}p>
计算属性:{{reverseMessage}}
方法:{{reversed()}} {{reversed()}} {{reversed()}}
方法:{{reverseMessage()}}
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
message: 'hello',
},
methods: {
reversed() {
console.log('方法被调用')
return this.message.split('').reverse().join('')
},
},
//属性方式(只会调用一次)
computed: {
reverseMessage() {
return this.message.split('').reverse().join('')
},
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
姓: <input placeholder="First Name" v-model="firstName" /><br />
名: <input placeholder="Last Name" v-model="lastName" /><br />
全名:{{fullName1}}
姓名1(单向): <input placeholder="Full Name1" v-model="fullName1" /><br />
姓名2(双向): <input placeholder="Full Name2" v-model="fullName2" /><br />
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
firstName: 'Helen',
lastName: 'Yao',
},
computed: {
fullName1() {
console.log('计算fullName1')
return this.firstName + ' ' + this.lastName
},
fullName2: {
get() {
console.log('计算fullName2')
return this.firstName + ' ' + this.lastName
},
//当给fullName2指定新值时自动调用:实现双向绑定
set(value) {
console.log('fullName2 的 setter')
const names = value.split(' ')
this.firstName = names[0]
this.lastName = names[1]
},
},
},
})
script>
body>
html>
<body>
<div id="app">
姓: <input placeholder="First Name" v-model="firstName" /><br />
名: <input placeholder="Last Name" v-model="lastName" /><br />
姓名: <input placeholder="Full Name" v-model="fullName" /><br />
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
firstName: 'Helen',
lastName: 'Yao',
// fullName: 'Helen Yao',
},
watch: {
//当firstName改变时自动调用
firstName(value) {
console.log('watch firstName')
this.fullName = value + ' ' + this.lastName
console.log(this.fullName)
},
//当lastName改变时自动调用
lastName(value) {
console.log('watch lastName')
this.fullName = this.firstName + ' ' + value
}
},
})
script>
body>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<input type="checkbox" v-model="ok" />是否同意许可协议<br />
<button v-if="ok">下一步button>
<button v-else disabled>下一步button>
<button v-show="ok">yes下一步button>
<button v-show="!ok">no上一步button>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
ok: 'false', //是否同意许可协议
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<ul>
<li v-for="(item, index) in userList">
{{index}} {{item.username}} {{item.age}}
li>
ul>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
userList: [
{ username: 'helen', age: 18 },
{ username: 'peter', age: 28 },
],
},
})
script>
body>
html>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<h3 id="h3">{{ message }}h3>
div>
<script src="vue.js">script>
<script>
new Vue({
el: '#app',
data: {
message: '床前明月光',
},
// 页面在内存中已经初始化完毕:
// 可以操作 data 中的数据、调用methods中的方法
// 但是数据尚未被渲染到页面中:用户看不见
created() {
console.log('created')
//可以操作 data 中的数据
console.log(this.message)
//可以调用methods中的方法
this.show()
//无法取出dom节点取数据,说明用户无法在浏览器中看见这个内容
console.log(document.getElementById('h3').innerText)
},
// 数据已经被渲染到页面中
mounted() {
// 第四个被执行的钩子方法
console.log('mounted')
//可以取出dom节点取数据,说明用户已经在浏览器中看见内容
console.log(document.getElementById('h3').innerText)
},
methods: {
show() {
console.log('show方法被调用')
},
},
})
script>
body>
html>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
package com.atguigu.mybatisplus.controller;
import com.atguigu.mybatisplus.entity.User;
import com.atguigu.mybatisplus.service.UserService;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/user")
@CrossOrigin
public class UserController {
@Resource
private UserService userService;
@GetMapping("/list")
public List<User> list(){
//运用mybatisplus
return userService.list();
}
}
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
head>
<body>
<div id="app">
<table>
<tr>
<td>序号td>
<td>姓名td>
<td>年龄td>
<td>emailtd>
tr>
<tr v-for="(item,index) in userList">
<td>{{index+1}}td>
<td>{{item.name}}td>
<td>{{item.age}}td>
<td>{{item.email}}td>
tr>
table>
div>
<script src="vue.js">script>
<script src="axios.js">script>
<script>
new Vue({
el: '#app',
data: {
userList: [],
},
//对象创建完立马发送ajax请求
created() {
this.showUserList()
},
methods: {
showUserList() {
//通过axios访问远程接口
const request = axios.create({
baseURL: 'http://localhost:8080',
})
request({
method: 'get',
url: '/user/list',
})
.then((response) => {
console.log('获取数据成功', response)
this.userList = response.data
})
.catch((error) => {
console.log('获取数据失败', error)
})
},
},
})
script>
body>
html>
<link
rel="stylesheet"
href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"
/>
<script src="vue.js">script>
<script src="axios.js">script>
<script src="https://unpkg.com/element-ui/lib/index.js">script>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<link
rel="stylesheet"
href="https://unpkg.com/element-ui/lib/theme-chalk/index.css"
/>
head>
<body>
<div id="app">
<div>
<el-button>默认按钮el-button>
<el-table :data="userList" stripe border style="width: 100%">
<el-table-column type="selection" width="55">el-table-column>
<el-table-column
type="index"
width="55"
label="序号"
>el-table-column>
<el-table-column prop="name" label="姓名">el-table-column>
<el-table-column prop="age" label="年龄">el-table-column>
<el-table-column prop="email" label="email">el-table-column>
el-table>
div>
div>
<script src="vue.js">script>
<script src="axios.js">script>
<script src="https://unpkg.com/element-ui/lib/index.js">script>
<script>
new Vue({
el: '#app',
data: {
userList: [],
},
//对象创建完立马发送ajax请求
created() {
this.showUserList()
},
methods: {
showUserList() {
//通过axios访问远程接口
const request = axios.create({
baseURL: 'http://localhost:8080',
})
request({
method: 'get',
url: '/user/list',
})
.then((response) => {
console.log('获取数据成功', response)
this.userList = response.data
})
.catch((error) => {
console.log('获取数据失败', error)
})
},
},
})
script>
body>
html>