script
标签引入即可<script src="https://unpkg.com/vue@3/dist/vue.global.js">script>
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Documenttitle>
<script src="https://unpkg.com/vue@3/dist/vue.global.js">script>
head>
<body>
<div id="app">div>
<script>
//使用Vue
const app = Vue.createApp({
template: `hello
`,
});
//挂载
app.mount("#app");
script>
body>
html>
<script src="./vue.js">script>
Model-View-ViewMode的简称
//使用Vue
const app = Vue.createApp({
data(){
return{
title:"Vue3.0"
}
}
});
//挂载
app.mount("#app");
//使用Vue
const app = Vue.createApp({
methods:{
myClick(){
//可以通过this访问data中声明的变量
console.log(123)
}
}
});
//挂载
app.mount("#app");
有些数据需要进行处理之后,再将其显示到页面中
<div id="app">
<div>{{numStr}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
computed: {
//计算属性的值都是函数
numStr() {
return this.arr.join("");
},
},
});
//挂载
app.mount("#app");
script>
用于侦听数据的变化,当数据发生变化的时候,需要执行特定的逻辑
<div id="app">
<div v-for="(item,index) in arr" :key="index">{{item}}div>
<button @click="arrChange">changebutton>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
watch: {
//监听的变量
//传入两个参数,newValue和oldValue
arr(newValue, oldValue) {
//对于对象的侦听,newValue, oldValue实际上是Proxy对象
console.log(newValue, oldValue);
//若想获取Proxy的原始数据,可以使用Vue.toRaw
console.log(Vue.toRaw(newValue));
},
},
methods: {
arrChange() {
this.arr = [1, 2, 3, 4];
},
},
});
//挂载
app.mount("#app");
修改对象的某个属性,需要进行特殊的配置,才可以侦听到,需要进行深度侦听
<div id="app">
<div v-for="(item,index) in arr" :key="index">{{item}}div>
<button @click="arrChange">changebutton>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
//进行监听
watch: {
arr: {
handler(newValue, oldValue) {
//此时你会发现,newValue和oldValue是一样的
//这是因为内存地址没有发生过变化,所以是一样的
console.log(newValue, oldValue);
},
//开启深度侦听
deep: true,
},
},
methods: {
arrChange() {
this.arr.push(4);
},
},
});
//挂载
app.mount("#app");
script>
第一次渲染的时候,默认是不会进行侦听的,可以通过immediate进行配置
<div id="app">
<div v-for="(item,index) in arr" :key="index">{{item}}div>
<button @click="arrChange">changebutton>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
watch: {
arr: {
handler(newValue, oldValue) {
//此时你会发现,newValue和oldValue是一样的
//这是因为内存地址没有发生过变化,所以是一样的
console.log(newValue, oldValue);
},
//开启深度侦听
deep: true,
//首次加载是否侦听
immediate: true,
},
},
methods: {
arrChange() {
this.arr.push(4);
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<input type="text" :value="message" @input="inputChange" />
<h2>{{message}}h2>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
message: "123",
};
},
methods: {
inputChange(event) {
this.message = event.target.value;
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<input type="text" v-model="message" />
<h2>{{message}}h2>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
message: "123",
};
},
});
//挂载
app.mount("#app");
script>
<input type="text" v-model.lazy="message" />
<input type="text" v-model.number="num" />
<input type="text" v-model.trim="message" />
Vue中特定的语法
<div id="app">
{{title}}
{{counter * 2}}
{{flag?true:false}}
{{myClick()}}
div>
只会渲染一次
<div id="app">
<div v-once>{{message}}div>
div>
用于更新元素的textContent
<div id="app">
<div>{{message}}div>
<div v-text="message">div>
div>
用于将html字符串转成相应的样式
<div id="app">
<div v-html="message">div>
div>
message = `<h2>hahahah2>`
用于跳过元素和子元素的编译过程,显示原始的Mustache标签
可以绑定一个或者多个属性值,或者向另外一个组件传递props值
<div id="app">
基本使用
<img v-bind:src="url">
简写
<img :src="url">
div>
<style>
.titleClass {
}
.textClass {
}
.abc{}
style>
<div id="app">
<div :class="{titleClass:true,textClass:flag}">div>
//会将普通的class进行合并
<div class="abc" :class="{titleClass:true,textClass:flag}">div>
div>
<style>
.titleClass {
}
.textClass {
}
.abc{}
style>
<div id="app">
<div :class="['titleClass','textClass']">div>
div>
<div id="app">
//普通写法
<div style="color:red">div>
<div :style="{color:textRed,fontSize:'30px'}">div>
div>
<div id="app">
<div :style="[colorObject,fontSizeObject]">div>
div>
<div id="app">
<div :[className]="[colorObject,fontSizeObject]">div>
div>
data(){
return{
className:"style"
}
}
v-bind = 'obj'
即可
<div id="app">
<div v-bind="infos">hellodiv>
div>
<div id="app">
<div v-on:click="divClick">hellodiv>
<div @click="divClick">hello2div>
<div @click="console.log(456)">hello3div>
<div @mousemove="divClick">hello4div>
<div @click="divClick" @mousemove="divMove">hello5div>
div>
<script>
//使用Vue
const app = Vue.createApp({
methods: {
divClick() {
console.log("click");
},
divMove() {
console.log("move");
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<button @click="divClick">123button>
div>
<script>
//使用Vue
const app = Vue.createApp({
methods: {
divClick(event) {
//默认参数event
console.log(event);
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<button @click="divClick('zhangcheng')">123button>
div>
<script>
//使用Vue
const app = Vue.createApp({
methods: {
divClick(data) {
//默认参数event
console.log(data);
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<button @click="divClick('zhangcheng',$event)">123button>
div>
<script>
//使用Vue
const app = Vue.createApp({
methods: {
divClick(data, event) {
//默认参数event
console.log(data, event);
},
},
});
//挂载
app.mount("#app");
script>
@click.stop="divClick"
进行使用在某些情况下,一些元素需要根据特定的条件进行显示
v-if v-else v-else-if v-show
<div id="app">
<div v-if="flag">flag为true显示div>
<div v-else>flag为false显示div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
flag: true,
};
},
});
//挂载
app.mount("#app");
script>
<template v-if="flag">
<div>flag为true显示div>
<div>flag为false显示div>
template>
v-if
与 v-show
的区别是
v-if
条件不成立的时候,DOM不会渲染或者被销毁掉v-show
的元素会被渲染,只是通过CSS的display进行控制v-if
支持template,但是 v-show
不能可以遍历可迭代对象
v-for
进行遍历<div id="app">
<div v-for="item in arr">{{item}}div>
<div v-for="(item,index) in arr">item:{{item}};index:{{index}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<div v-for="value in obj">{{value}}div>
<div v-for="(value,key,index) in obj">{{value}}-{{key}}-{{index}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
obj: {
name: "zhangcheng",
age: "18",
},
};
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<div v-for="value in str">{{value}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
str:"abcsde"
};
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<div v-for="value in 10">{{value}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
});
//挂载
app.mount("#app");
script>
<div id="app">
<div v-for="item in arr">{{item}}div>
<button @click="arrChange">changebutton>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
methods: {
arrChange() {
this.arr.push(4);
},
},
});
//挂载
app.mount("#app");
script>
<div id="app">
<div v-for="item in arr">{{item}}div>
<button @click="arrChange">changebutton>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
methods: {
arrChange() {
this.arr = this.arr.map(item=>item+"zc")
},
},
});
//挂载
app.mount("#app");
script>
通常在使用v-for的时候,需要搭配key一同使用
<div id="app">
<div v-for="item in arr" :key="item">{{item}}div>
div>
<script>
//使用Vue
const app = Vue.createApp({
data() {
return {
arr: [1, 2, 3],
};
},
});
//挂载
app.mount("#app");
script>
方便对代码进行跨平台操作以及diff算法