精选 Vue.js 框架 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。 精选 Vue 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。包含最重要概念、响应式系统、组件系统、路由等内容的 Vue 3 备忘单。更新至最新版本,适合初学者和高级用户。
掌握 Vue 3 的终极参考。
src/
├─ components/
├─ views/
├─ App.vue
├─ main.js
data() {
return {
count: 0,
message: "Welcome!"
};
},
methods: {
increment() {
this.count++;
}
}
<h1>{{ message }}</h1>
<button @click="increment">+</button>
| 指令 | 用途 |
|---|---|
v-bind / : |
绑定属性 |
v-model |
双向绑定 |
v-if / v-else |
条件渲染 |
v-show |
切换可见性 |
v-for |
列表渲染 |
v-on / @ |
事件处理 |
v-slot |
命名/作用域插槽使用 |
<input v-model="name" />
<p v-if="name">Hi, {{ name }}!</p>
<ul>
<li v-for="item in list" :key="item.id">{{ item }}</li>
</ul>
created() {},
mounted() {},
updated() {},
unmounted() {}
<button @click="sayHi">Click</button>
<input @keyup.enter="submit" />
computed: {
reversed() {
return this.message.split('').reverse().join('');
}
},
watch: {
count(newVal, oldVal) {
console.log(`Count changed from ${oldVal} to ${newVal}`);
}
}
app.component("Greeting", {
props: ["name"],
template: `<h1>Hello, {{ name }}!</h1>`
});
<Greeting name="Sumangal" />
props: ['modelValue'],
emits: ['update:modelValue']
<input
:value="modelValue"
@input="$emit('update:modelValue', $event.target.value)"
/>
import { ref, computed } from "vue";
export default {
setup() {
const count = ref(0);
const double = computed(() => count.value * 2);
const increment = () => count.value++;
return { count, double, increment };
}
};
npm install vue-router
import { createRouter, createWebHistory } from "vue-router";
import Home from "./views/Home.vue";
import About from "./views/About.vue";
const routes = [
{ path: "/", component: Home },
{ path: "/about", component: About }
];
export default createRouter({
history: createWebHistory(),
routes
});
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
const app = createApp(App);
app.use(router).mount("#app");
npm install pinia
import { defineStore } from "pinia";
export const useCounterStore = defineStore("counter", {
state: () => ({ count: 0 }),
actions: {
increment() {
this.count++;
}
}
});
const counter = useCounterStore();
counter.increment();
<!-- 默认 -->
<slot></slot>
<!-- 命名 -->
<slot name="header"></slot>
<!-- 作用域 -->
<slot :user="user"></slot>
npm install vitest @vue/test-utils
import { mount } from "@vue/test-utils";
import MyComponent from "@/components/MyComponent.vue";
test("renders", () => {
const wrapper = mount(MyComponent);
expect(wrapper.text()).toContain("Hello");
});
ref(),对对象使用 reactive()<script setup> 语法v-for 中始终定义 key