皮皮网
皮皮网

【小程序 文章源码】【物流官网源码】【idea标为源码】iview 项目源码_iview源码分析

来源:asp源码 学籍 发表时间:2024-11-25 10:48:57

1.elementui源码学习之仿写一个el-timeline
2.聊一聊实现Vue路由组件缓存遇到的目源码’坑‘
3.Vue封装组件并发布到npm仓库

iview 项目源码_iview源码分析

elementui源码学习之仿写一个el-timeline

       本文记录了仿写el-timeline组件的细节,以深入理解饿了么UI组件的源码实现机制。本系列文章将持续更新,分析深入探讨elementui源码的目源码学习与实践。可访问开源仓库,源码通过npm start运行代码,分析小程序 文章源码结合注释辅助理解。目源码

       时间线组件构成包括:时间线小圆点、源码时间线竖线条、分析时间戳与具体内容详情四个部分。目源码如图所示。源码

       时间线组件主要需求包括:按时间线正序或倒序展示、分析自定义时间线小圆点样式与颜色、目源码使用小图标替代时间线小圆点、源码物流官网源码控制时间戳与具体内容详情的分析位置、时间戳的显示与隐藏。

       对官方组件的见解包括:提供与注入可以简化、时间戳位置优化、简约封装参考其他库组件。Antd与iview的时间线组件参数较为精简。

       回顾知识点:数组方法的使用,如this.$slots.default.reverse();以及`:style`中的四元表达式应用,如`:style="border: ${ elementIcon} ${ borderColor}"`。

       组件代码示例如下:`myTimeline`、`myTimelineItem`。完整代码在开源仓库,欢迎访问并star。idea标为源码

       若本文对您有所助益,期待您的star,感谢支持!

聊一聊实现Vue路由组件缓存遇到的’坑‘

       项目背景介绍

       在进行公司后台管理系统开发时,遇到了一个在使用keep-alive和vue-router实现的路由组件缓存不生效的问题。该项目基于iview-admin@2.0进行开发,全局状态管理采用vuex分module实现,路由配置采用vue-router进行表方式实现。项目属于基于RBAC的后台管理系统,涉及多用户多角色的权限控制和动态系统菜单功能。

       问题解决

       梳理问题并核对官方文档后,发现基本用法和组件缓存原理均无误。但深入检查后发现,安卓跳棋源码问题出现在keep-alive的include参数设置上。iview-admin@2.0中通过路由meata参数——notCache控制组件缓存。官方文档指出,当设为true时,页面在切换标签后不会缓存,但若需要缓存,则无需设置notCache字段,并确保页面组件的name属性与路由配置的name一致。项目中路由配置由后台功能决定,修改无法缓存页面的路由配置的name即可解决。

       研究iview-admin源码

       研究发现,iview-admin中将navTagList、menuList等数据保存在全局vuex的网页源码中按钮app模块中,navTagList动态更新当前打开的标签页,menuList根据路由记录的meta参数的access字段过滤。cacheList作为getters,计算出需要keep-alive缓存的组件name数组。通过动态修改keep-alive组件的exclude值来更新路由缓存规则。

       iview-admin的局限性

       iview-admin的权限路由控制采用路由meta参数的access数组来标记路由可访问的用户角色,根据路由记录计算用户菜单。这种实现存在不足,需要优化。

       优化方案

       对iview-admin的权限控制和路由配置进行优化,将路由分为基础路由和业务路由。基础路由直接配置到router中,业务路由动态注册。在vuex的user模块中添加获取用户路由配置的action,在用户登录成功后动态注册路由。

       进一步研究

       未来计划深入研究vue-router的view部分源码,理解router-view与keep-alive的关联。后续更新将在此分享。

Vue封装组件并发布到npm仓库

       使用Vue框架进行开发时,组件封装是一个非常常规的操作。封装好的组件可以在项目的任意地方使用,甚至可以直接从npm仓库下载别人封装好的组件进行使用,比如iview、element-ui等组件库。然而,每个公司的业务场景可能不同,开发人员仍需要封装自己的组件。如果换了新项目,只能复制组件代码到新项目中,这样略显繁琐。其实可以将组件上传到npm仓库,需要时可以直接从npm安装使用。

       封装Vue组件的好处主要有两点:

       环境准备

       由于此次封装的是Vue组件,因此直接在Vue脚手架项目中进行封装即可。

       初始化Vue项目

       运行项目

       组件封装

       步骤1:新建package文件夹

       在src下面新建一个package文件夹,存放所有需要上传的组件。

       打算封装两个组件:pig-button、pig-input,分别在package文件夹下新建存放两个组件代码的文件夹。

       步骤2:编写组件代码

       以pig-button组件为例,编写代码,然后引用到App.vue组件验证组件可用性。

       最终效果显示组件可用。

       步骤3:使用Vue插件模式

       封装组件的关键步骤,使用Vue提供的install方法,使得插件在使用Vue.use(plugin)时被调用,实现全局注册。

       在package目录下新建index.js文件,配置组件的全局注册。

       组件打包

       完成组件封装后,需要进行打包。

       修改package.json文件,配置打包命令。

       执行打包命令,生成打包后的文件。

       发布到npm

       初始化package.json文件。

       注册npm账号,切换npm源。

       添加npm用户。

       在pig-ui目录下执行发布npm命令。

       发布成功后,可在npm官网查看发布的npm包。

       从npm安装使用

       执行安装命令。

       在main.js中引用注册。

       修改App.vue文件,直接使用组件。

       总结起来,Vue组件封装发布到npm仓库的整体难度不大,关键在于理解Vue的install方法以及打包相关知识。最重要的是如何封装一个适用范围广、扩展性高的公用组件。此项目源码已公开。

相关栏目:知识