vue原生实现
Vue 原生实现方法
Vue 原生实现指的是不依赖第三方库,直接使用 Vue.js 的核心功能完成开发需求。以下是几种常见的原生实现方式:
响应式数据绑定
通过 data 选项声明响应式数据,Vue 自动跟踪依赖并在数据变化时更新视图。例如:
new Vue({
data() {
return { message: 'Hello Vue!' }
}
})
指令系统
Vue 提供内置指令如 v-model(双向绑定)、v-for(列表渲染)、v-if(条件渲染)等。例如实现一个简单列表:
<ul>
<li v-for="item in items" :key="item.id">{{ item.text }}</li>
</ul>
事件处理
使用 v-on(或简写 @)绑定原生 DOM 事件:
<button @click="handleClick">Click</button>
方法定义在 Vue 实例的 methods 选项中。
组件化开发
单文件组件 (SFC)
通过 .vue 文件组合模板、逻辑和样式:
<template>
<div>{{ msg }}</div>
</template>
<script>
export default {
data() {
return { msg: 'Component' }
}
}
</script>
<style scoped>
div { color: blue; }
</style>
Props 通信
父组件通过 props 向子组件传递数据:

// 子组件
props: ['title'],
// 父组件
<child-component title="From Parent" />
自定义事件
子组件通过 $emit 触发父组件监听的事件:
// 子组件
this.$emit('custom-event', payload)
// 父组件
<child-component @custom-event="handleEvent" />
状态管理
小型应用状态共享
对于简单场景,可以使用 Vue.observable 创建跨组件共享的响应式对象:
const state = Vue.observable({ count: 0 })
事件总线
通过空的 Vue 实例作为中央事件总线:
const bus = new Vue()
// 发送事件
bus.$emit('event', data)
// 接收事件
bus.$on('event', callback)
路由与动态组件
动态组件
通过 <component :is="currentComponent"> 实现组件动态切换,配合 keep-alive 缓存状态。

Hash 路由
监听 window.onhashchange 实现简单路由:
window.addEventListener('hashchange', () => {
const route = window.location.hash.slice(1)
// 根据 route 渲染不同组件
})
性能优化技巧
计算属性缓存
使用 computed 替代模板内复杂表达式,避免重复计算:
computed: {
filteredList() {
return this.list.filter(item => item.active)
}
}
函数式组件
对于无状态的展示组件,使用 functional: true 提升渲染性能:
Vue.component('functional-comp', {
functional: true,
render(h, { props }) {
return h('div', props.text)
}
})
手动控制更新
对非响应式数据变更,使用 Vue.set 或 this.$forceUpdate() 触发更新。
以上方法均基于 Vue 2.x 核心功能实现,无需额外库支持。根据项目复杂度,可逐步引入 Vuex、Vue Router 等官方生态库。






