vue 实现手册
Vue 实现手册
Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是一些关键实现方法和最佳实践。
安装与初始化
通过 npm 或 yarn 安装 Vue.js:
npm install vue
# 或
yarn add vue
在项目中引入 Vue 并初始化一个实例:
import Vue from 'vue';
new Vue({
el: '#app',
data: {
message: 'Hello Vue!'
}
});
组件化开发
创建单文件组件(.vue 文件):
<template>
<div>{{ message }}</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello from component!'
};
}
};
</script>
<style scoped>
div {
color: blue;
}
</style>
注册并使用组件:
import MyComponent from './MyComponent.vue';
new Vue({
components: {
MyComponent
}
});
数据绑定与响应式
使用 v-model 实现双向数据绑定:
<template>
<input v-model="message">
<p>{{ message }}</p>
</template>
<script>
export default {
data() {
return {
message: ''
};
}
};
</script>
条件与循环渲染
v-if 和 v-for 的用法:
<template>
<div v-if="showMessage">{{ message }}</div>
<ul>
<li v-for="item in items" :key="item.id">{{ item.name }}</li>
</ul>
</template>
<script>
export default {
data() {
return {
showMessage: true,
items: [
{ id: 1, name: 'Item 1' },
{ id: 2, name: 'Item 2' }
]
};
}
};
</script>
事件处理
使用 v-on 或 @ 绑定事件:
<template>
<button @click="handleClick">Click me</button>
</template>
<script>
export default {
methods: {
handleClick() {
alert('Button clicked!');
}
}
};
</script>
生命周期钩子
常用生命周期钩子示例:
export default {
created() {
console.log('Component created');
},
mounted() {
console.log('Component mounted to DOM');
},
beforeDestroy() {
console.log('Component about to be destroyed');
}
};
状态管理(Vuex)
安装并配置 Vuex:
npm install vuex
创建 store:
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++;
}
},
actions: {
incrementAsync({ commit }) {
setTimeout(() => {
commit('increment');
}, 1000);
}
}
});
export default store;
在组件中使用:
export default {
computed: {
count() {
return this.$store.state.count;
}
},
methods: {
increment() {
this.$store.commit('increment');
},
incrementAsync() {
this.$store.dispatch('incrementAsync');
}
}
};
路由(Vue Router)
安装并配置 Vue Router:
npm install vue-router
路由配置:
import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
Vue.use(VueRouter);
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = new VueRouter({
routes
});
export default router;
在组件中使用路由:
<template>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
<router-view></router-view>
</template>
表单验证
使用 Vuelidate 进行表单验证:
npm install vuelidate
示例:
import { required, minLength } from 'vuelidate/lib/validators';
export default {
data() {
return {
form: {
name: '',
email: ''
}
};
},
validations: {
form: {
name: { required, minLength: minLength(3) },
email: { required }
}
}
};
模板中使用:
<template>
<form @submit.prevent="submit">
<input v-model="form.name">
<div v-if="$v.form.name.$error">Name is required</div>
<input v-model="form.email">
<div v-if="$v.form.email.$error">Email is required</div>
<button type="submit">Submit</button>
</form>
</template>
性能优化
使用 v-once 和 v-memo:
<template>
<div v-once>{{ staticContent }}</div>
<div v-memo="[dependency]">{{ computedContent }}</div>
</template>
懒加载组件:
const LazyComponent = () => import('./LazyComponent.vue');
测试
单元测试示例(使用 Jest):
import { shallowMount } from '@vue/test-utils';
import MyComponent from './MyComponent.vue';
describe('MyComponent', () => {
it('renders a message', () => {
const wrapper = shallowMount(MyComponent, {
propsData: {
message: 'Hello'
}
});
expect(wrapper.text()).toMatch('Hello');
});
});
部署
构建生产版本:
npm run build
部署到静态服务器:
scp -r dist/* user@server:/var/www/html/
常用插件
推荐插件列表:
vue-router:官方路由管理器vuex:状态管理库axios:HTTP 客户端vuelidate:表单验证vue-i18n:国际化vue-meta:管理 HTML meta 标签
以上内容涵盖了 Vue.js 的核心功能和常见使用场景,可以作为实现手册参考。






