
Vue 3.0
文章平均质量分 74
Vue是一套构建用户界面的渐进式框架,它采用自底向上增量开发的设计。Vue 的核心库只关注视图层,容易学习,也容易与其它库或已有项目整合。另一方面,Vue 完全有能力采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
aiguangyuan
要全身心的投入,程序才会有些感觉!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Vue-Router简版手写实现
摘要:本文介绍了一个简化版Vue路由库的实现方案,包含核心文件结构设计及关键代码实现。使用TypeScript开发了RouterView、RouterLink组件,以及createRouter、useRouter等核心API,实现基本路由功能。通过injectionSymbols.ts管理注入状态,history.ts处理浏览器历史记录,并提供了示例应用展示如何使用该路由库。该实现涵盖了前端路由的基本原理和核心概念,包括路由匹配、导航守卫和组件渲染等功能。原创 2025-05-31 16:24:10 · 474 阅读 · 0 评论 -
Vue-Router 实现原理剖析
Vue-Router 4.3.3的核心实现包括三个关键部分:RouterView组件通过注入路由匹配信息和视图深度来动态渲染当前路由组件;RouterLink组件利用useLink钩子处理导航逻辑,生成带跳转功能的a标签;useRouter函数则通过依赖注入获取全局路由实例。整体架构通过createRouter创建路由实例,包含路由匹配器、状态管理及导航方法,并通过Vue的provide/inject机制实现全局共享。这些组件协同工作,提供了灵活的路由功能,支持动态视图渲染、导航控制和状态管理。原创 2025-05-31 15:21:29 · 468 阅读 · 0 评论 -
Vue 3.0 中的路由导航守卫详解
Vue-Router导航守卫机制详解:文章介绍了Vue-Router的导航守卫系统,包括全局守卫(beforeEach、beforeResolve、afterEach)、路由独享守卫(beforeEnter)和组件内守卫(beforeRouteEnter等)。详细解析了导航流程的执行顺序,从触发导航到DOM更新的12个步骤。同时讲解了路由元信息(meta)的使用方法,以及如何实现路由懒加载优化性能。这些守卫机制为开发者提供了完整的路由控制能力,可用于权限验证、数据预加载等多种场景。原创 2025-05-30 22:44:38 · 794 阅读 · 0 评论 -
Vue-Router 基础使用
VueRouter是Vue.js官方路由管理器,用于构建单页应用(SPA)。它通过URL与组件映射实现无刷新页面切换,支持动态路由、嵌套路由和多种导航方式。基础配置包括路由安装、组件映射和<router-view>占位。动态路由通过参数(如:id)匹配不同内容,嵌套路由用children配置子视图。导航可通过router-link、$router.push或Composition API的useRouter实现。还提供404路由捕获和命名路由等高级功能。原创 2025-05-29 23:42:45 · 917 阅读 · 0 评论 -
Vue-Router 动态路由的使用和实现原理
Vue-Router动态路由功能详解:通过定义带参数的路径(如/user/:id),可在组件中用this.$route.params访问参数值。文章介绍了定义动态路由、访问参数的方法,以及使用router.push或<router-link>导航的实现方式。其原理包括路由匹配、参数解析(转为正则表达式)和组件更新机制(复用组件时触发beforeRouteUpdate或$route监听)。该功能适用于用户/文章详情页等需要动态参数的场景,提升应用灵活性。原创 2025-05-29 22:34:26 · 353 阅读 · 0 评论 -
Vue-Router中的三种路由历史模式详解
Vue-Router提供三种路由模式:Hash模式通过URL的#部分管理路由,无需服务器配置但URL不美观;WebHistory模式利用HTML5 History API实现无#的URL,需要服务器支持;Memory模式用于非浏览器环境,如SSR。Hash适合简单项目,WebHistory适合SEO需求,Memory专用于服务端场景。原创 2025-05-29 21:57:28 · 1510 阅读 · 1 评论 -
Vue 3.0 状态管理Pinia详解
Pinia是Vue3的轻量级状态管理工具,相比Vuex具有API简洁(去掉Mutations)、TypeScript支持友好、插件机制灵活等优势。它采用单一状态树和模块化设计,核心概念包括State、Getters和Actions,支持响应式更新和异步操作。Pinia提供类似Vue组合式API的写法,推荐使用setup语法进行状态管理,并内置插件系统实现日志记录、状态持久化等功能。最佳实践建议将逻辑拆分为可复用的composition函数,提升代码可维护性。原创 2025-05-28 20:26:36 · 2040 阅读 · 1 评论 -
Vue 3.0 状态管理方案Vuex详解
Vuex是Vue的状态管理模式,用于解决组件间共享状态管理的复杂性。它采用单一状态树结构,通过响应式机制确保状态变更时组件自动更新。Vuex核心概念包括:state(状态源)、getters(派生状态)、mutations(同步修改状态)、actions(异步操作)。当应用规模扩大时,可通过模块化组织代码,支持命名空间避免命名冲突。Vuex强制规范状态变更流程,使代码更易维护,特别适合中大型单页应用开发。原创 2025-05-28 00:54:29 · 727 阅读 · 0 评论 -
Vue 3.0 中provide常见使用场景
Vue.js中的provide/inject API提供了一种跨组件层级的数据共享方案。主题切换示例展示了响应式主题变量通过provide传递,后代组件通过inject注入使用;语言切换示例则演示了多语言文本的动态更新。这种机制避免了繁琐的props逐层传递,特别适合全局配置如主题、多语言等场景。使用时可结合ref/reactive保持数据响应性,通过Symbol作为key增强安全性,并支持设置默认值。相比Vuex等状态管理工具,provide/inject更轻量,适用于特定范围的共享状态需求。原创 2025-05-27 22:44:51 · 766 阅读 · 0 评论 -
Vue 3.0 自定义 Composition API 管理状态
Vue3的CompositionAPI提供了一种封装状态逻辑的有效方式。摘要展示了两个典型示例:1) useDrag封装拖拽逻辑,管理元素位置和拖拽状态,通过事件监听实现交互;2) useAnimation封装动画逻辑,控制动画播放状态和时长。这两种封装都遵循了状态与视图解耦的原则,将相关状态和函数组合成可复用的逻辑单元,并通过setup函数在组件中使用。这种模式提高了代码的可维护性和复用性,是Vue3组合式API的典型应用场景。原创 2025-05-27 21:46:03 · 367 阅读 · 0 评论 -
Vue 3.0中复杂状态如何管理
Vue3管理复杂状态的核心方法与工具:1)使用CompositionAPI(reactive/ref/computed/watch)实现模块化状态管理;2)通过provide/inject实现组件间状态共享,避免Propdrilling;3)采用Pinia替代Vuex进行集中式状态管理,支持TypeScript;4)利用插件如pinia-plugin-persist实现状态持久化;5)结合RxJS等第三方库处理复杂异步场景。这些方法共同构成Vue3高效管理复杂状态的完整方案。原创 2025-05-26 23:23:19 · 800 阅读 · 0 评论 -
Vue 3.0 中状态管理Vuex 与 Pinia 的区别
Vuex与Pinia是Vue应用的状态管理工具,主要区别在于:Vuex采用Flux架构,强调单一状态树和严格的mutation同步更新机制;Pinia则更轻量灵活,支持模块化store和Composition API风格,允许直接修改状态。Pinia对TypeScript支持更好,性能更优,尤其适合大型应用;而Vuex社区成熟但类型系统较复杂。Pinia提供更现代化的开发体验,Vuex则生态更稳定。两者在API设计、类型支持和性能上存在显著差异。原创 2025-05-26 22:24:58 · 687 阅读 · 0 评论 -
Vue 3.0中自定义Composition API
Vue 3的Composition API通过函数式编程提升了代码复用性和可维护性。其核心优势包括:1)可组合性,通过独立函数复用逻辑;2)更好的逻辑组织,避免分散代码;3)减少命名冲突;4)天然支持TypeScript。自定义Hook进一步优化了状态管理,如计数器示例展示了如何封装带有增减、重置功能的Hook,并确保数值范围限制。其他实例如useCopy也体现了Hook的复用价值。相比mixin,自定义Hook具有更清晰的依赖关系、局部作用域和更好的类型支持,显著提升了开发体验。原创 2025-05-24 22:36:59 · 683 阅读 · 0 评论 -
Vue 3.0中自定义指令
本文详细介绍了如何在Vue中创建和使用自定义指令,强调了指令的钩子函数、参数和逻辑处理的重要性。通过一个简单的v-focus指令示例,展示了如何使input组件在初始化时自动获得焦点。文章还解释了指令钩子函数中的参数,如el、binding、vnode和prevNode,并说明了如何利用这些参数来编写有效的指令。此外,文章还探讨了v-model的双向绑定原理,以及Vue3的compiler-core和compiler-dom模块在模板编译中的作用。原创 2025-05-22 21:32:58 · 465 阅读 · 0 评论 -
Vue 3.0中异步组件defineAsyncComponent
在大型Vue3项目中,异步组件是优化性能的关键技术。通过defineAsyncComponent方法,可以将应用拆分为更小的块,仅在需要时从服务器加载相关组件,从而减少初始加载时间。异步组件通常与<Suspense>组件配合使用,后者在等待异步组件加载时显示加载状态。使用打包分析工具如rollup-plugin-visualizer,可以直观地看到异步组件如何减少主包体积,提升应用性能。异步组件的实现基于工厂函数返回的Promise,处理加载过程、错误状态和超时等。原创 2025-05-22 20:47:20 · 1795 阅读 · 4 评论 -
Vue 3.0中核心的Composition API
文章主要介绍了Vue.js中的响应式系统及其相关工具和生命周期函数。响应式基础部分包括ref、reactive、computed、readonly、watch、watchEffect、watchPostEffect和watchSyncEffect,分别用于创建响应式数据、监听数据变化等。响应式工具部分提供了isRef、unref、toRef、toValue、toRefs、isProxy、isReactive和isReadonly,用于检查和操作响应式对象。原创 2025-05-21 23:59:09 · 1288 阅读 · 2 评论 -
Vue 3.0 中 Teleport 详解
Teleport是Vue3.0引入的一个特性,允许将组件的部分模板“传送”到DOM中的其他位置,而不改变组件的逻辑结构。它特别适用于处理模态框、通知、加载提示等需要突破当前组件DOM层级的场景。Teleport支持与组件一起使用,并且可以通过disabled属性动态禁用。多个Teleport可以传送到同一目标,按顺序追加。原创 2025-05-20 23:49:54 · 567 阅读 · 0 评论 -
Vue 3.0 Transition 组件使用详解
Vue3.0的Transition组件为元素的进入/离开提供了简单的动画实现方式。通过<script setup>语法糖,可以轻松实现基础过渡效果,如淡入淡出。自定义类名前缀可避免样式冲突,JavaScript钩子则支持复杂动画逻辑。过渡模式(如out-in)适用于元素交替显示的场景,而TransitionGroup则用于列表元素的排序、添加、删除动画。此外,Vue3.0还支持与CSS动画库(如Animate.css)集成,快速实现专业级动画效果。原创 2025-05-20 20:06:13 · 1137 阅读 · 0 评论 -
Vue 3.0中slot插槽相关概念详解
Vue.js中的插槽(slot)机制是组件化开发中的关键特性,尤其在Vue 3.0中得到了进一步优化和增强。插槽允许父组件向子组件注入自定义内容,极大提升了组件的灵活性和复用性。本文系统性地介绍了Vue 3.0中插槽的相关概念,包括基础插槽、具名插槽、作用域插槽以及动态插槽名等高级特性。基础插槽通过<slot>元素实现内容分发,具名插槽则通过name属性为不同插槽分配唯一ID,作用域插槽则允许插槽内容访问子组件的数据。原创 2025-05-20 00:09:32 · 796 阅读 · 0 评论 -
Vue 3.0 中的slot及使用场景
Vue中的插槽(slot)是一种强大的功能,允许开发者在组件中定义动态内容的位置,从而提高组件的复用性和灵活性。插槽分为三种主要类型:默认插槽、具名插槽和作用域插槽。默认插槽用于在组件中插入任意内容,具名插槽则允许在一个组件中使用多个插槽,每个插槽可以有不同的名称。作用域插槽则允许子组件将数据传递给父组件,以便在插槽内容中使用这些数据。插槽的使用场景包括复用组件结构、动态内容插入、自定义渲染逻辑以及嵌套组件的布局。通过插槽,开发者可以更灵活地构建和扩展Vue组件。原创 2025-05-18 21:50:01 · 583 阅读 · 0 评论 -
Vue 3.0中响应式依赖和更新
本文介绍了响应式系统中的核心数据结构和关键函数。targetMap是一个WeakMap,用于全局存储所有响应式对象的依赖关系,其键为被代理的原始对象,值为一个Map,该Map的键是对象的属性名,值是一个Set,存储了与该属性相关的所有副作用函数。track函数在访问响应式对象的属性时触发,负责收集依赖,将当前活动的副作用函数与属性关联。trigger函数在修改响应式对象的属性时触发,负责执行所有相关的副作用函数,实现数据变化到视图更新的响应式机制。关键设计细节包括使用WeakMap避免内存泄漏、管理acti原创 2025-05-17 13:35:55 · 786 阅读 · 0 评论 -
Vue 3.0双向数据绑定实现原理
Vue3通过改进的响应式系统实现了数据双向绑定,主要使用Proxy对象替代了Vue2中的Object.defineProperty。Vue3提供了reactive和ref函数来创建响应式对象和基本数据类型的响应式值。双向绑定通过v-model指令实现,适用于表单元素和自定义组件。Vue3的响应式系统核心包括Proxy的实现、依赖收集与触发更新机制,以及ref和v-model的具体实现。这些改进使得Vue3的响应式系统更加灵活和高效。原创 2025-05-16 23:42:17 · 765 阅读 · 0 评论 -
后台管理系统全屏功能实现
后台管理系统中有一个比较常见的功能就是全屏显示,以方便用最大的屏幕查看系统,特别是在小屏模式下。对于 screenfull 而言,浏览器本身已经提供了对用的 API,点击这里即可查看,这个 API 中,主要提供了两个方法:1. Document.exitFullscreen():该方法用于请求从全屏模式切换到窗口模式;2. Element.requestFullscreen():该方法用于请求浏览器将特定元素置为全屏模式;但是该方法会存在一定的小问题,比如有些区域背景颜色为黑色。原创 2025-01-07 23:44:57 · 536 阅读 · 0 评论 -
后台管理系统引导功能的实现
引导页是软件中经常见到的一个功能,无论是在后台项目还是前台或者是移动端项目中。那么对于引导页而言,它是如何实现的呢?通常情况下引导页是通过聚焦的方式,高亮一块视图,然后通过文字解释的形式来告知用户该功能的作用。所以说对于引导页而言,它的实现其实就是:页面样式的实现。我们只需要可以做到:1. 高亮某一块指定的样式;2. 在高亮的样式处通过文本展示内容;3. 用户可以进行下一次高亮或者关闭事件;那么就可以实现对应的引导功能。原创 2025-01-07 00:24:14 · 583 阅读 · 0 评论 -
后台管理系统Hamburger组件实现
后台管理系统中几乎都会用到Hamburger组件,该组件主要用于折叠和展开左侧菜单栏,系统默认为展开菜单栏,当屏幕较小时可以折叠菜单栏,以便可以用更大的屏幕区域来查看系统数据区域。原创 2025-01-05 23:09:52 · 476 阅读 · 0 评论 -
后台管理系统动态面包屑Breadcrumb组件的实现
在后管理系统开发中,面包屑导航是一个非常常见的功能,通常是根据当前的 url 自动生成面包屑导航菜单,当跳转路由发生变化时,面包屑导航都会随之发生变化,即动态面包屑。要完成动态面包屑我们需要制作一个动态数组,数组中每个 item 都表示一个 路由信息,在这里我们使用到route.match 属性,该属性可以获取路由地址匹配的标准化的路由记录。原创 2025-01-05 20:51:17 · 599 阅读 · 0 评论 -
后台管理系统用户退出登录方案实现
退出登录一直是一个通用的前端实现方案,对于退出登录而言,它的触发时机一般有两种:1. 用户主动退出,即用户点击登录按钮之后退出;2. 用户被动退出,Token过期或被 其他人"顶下来"时退出;那么无论是什么退出方式,在用户退出时,所需要执行的操作都是固定的:1. 清理掉当前用户缓存数据;2. 清理掉权限相关配置;3. 返回到登录页;原创 2025-01-05 16:02:40 · 1766 阅读 · 0 评论 -
Vue 3.0 中封装icon组件使用外部SVG图标
通常在企业级项目开发时,所使用的 icon 图标,一共分为两类:1. element-plus 的图标2. 自定义的 svg 图标对于 element-plus 的图标我们可以直接通过 el-icon 来进行显示,但是自定义图标的话却无法正常显示,所以就需要一个自定义的组件,来显示我们自定义的 svg 图标。对于这个组件的话,它就需要拥有两种能力:1. 显示外部 svg 图标2. 显示项目内的 svg 图标原创 2025-01-02 23:43:25 · 876 阅读 · 0 评论 -
Vue 3.0 中 template 多个根元素警告问题
在 Vue 3.0 中开始支持 template 存在多个根元素了。出现这个问题的原因主要是: vetur 这个 VSCode 插件依然按照 Vue 2.0 的单一根元素逻辑进行检测,所以会出现提示错误的问题。在 Vue 2.0 中,template 只允许存在一个根元素,但是这种情况在 Vue 3.0 里发生了一些变化。但是大家要注意,虽然这样不太好看,但是该问题并不影响代码运行。按以上两种方式执行之后,多根元素就不会出现不好看的错误了。2. 重启 VSCode。原创 2025-01-01 21:58:59 · 553 阅读 · 0 评论