Vue 插件与组件的区别
插件 (Plugin)
插件是全局功能的扩展,通常通过 Vue.use() 安装。插件可以添加全局方法、指令、混入或组件,例如 Vue Router、Vuex。插件通常包含 install 方法,在安装时执行初始化逻辑。
组件 (Component)
组件是可复用的 Vue 实例,用于构建用户界面。组件通过局部注册(单文件组件)或全局注册(Vue.component())使用,专注于模板、逻辑和样式的封装。
核心差异
- 作用范围:插件影响整个应用,组件仅影响局部视图。
- 功能类型:插件提供工具类功能(如路由),组件提供UI功能(如按钮、表单)。
- 注册方式:插件需显式调用
Vue.use(),组件通过注册后以标签形式使用。
Vue2 与 Vue3 的五大核心区别
响应式系统
- Vue2:基于
Object.defineProperty,无法检测对象属性的添加/删除,需使用Vue.set。 - Vue3:改用
Proxy,支持全范围的响应式追踪,包括动态属性。
组合式 API (Composition API)
- Vue2:选项式 API(
data,methods,computed分块)。 - Vue3:引入
setup函数,逻辑可按功能组织,代码复用更灵活。import { ref, computed } from 'vue'; export default { setup() { const count = ref(0); const double = computed(() => count.value * 2); return { count, double }; } };
生命周期钩子
- Vue2:
beforeCreate,created,beforeMount等。 - Vue3:钩子名变更(如
beforeDestroy→onBeforeUnmount),并支持在setup中使用:import { onMounted } from 'vue'; setup() { onMounted(() => console.log('Component mounted')); }
片段与多根节点
- Vue2:模板必须单根节点。
- Vue3:支持多根节点(Fragment),减少无用包裹元素。
性能优化
- Vue2:虚拟 DOM 全量比对。
- Vue3:引入静态标记(Patch Flag),编译时优化,跳过静态节点比对。
其他关键差异
- TypeScript 支持:Vue3 代码库完全用 TS 重写,提供更好的类型推断。
- 打包体积:Vue3 通过 Tree-shaking 减少生产环境体积。
- Teleport 组件:Vue3 新增
<teleport>,便于将子组件渲染到 DOM 其他位置。
以上区别涵盖了开发体验、性能及架构层面的核心变化,供升级或选型时参考。

被折叠的 条评论
为什么被折叠?



