vue-vben-admin 解析一 vue-types 分析

本文将探讨vue-vben-admin项目中vue-types的使用,通过分析代码和提供示例,展示它如何替代Vue原生类型注解,增强代码的可读性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue-vben-admin 目前 vue3 的项目中技术栈包括代码都是顶尖的项目存在。
初学vue3-demo:https://github.com/Miofly/vue3-vite-vuex-demo
预览地址:https://vvbin.cn/next/#/dashboard/analysis

首先先分析下项目中的每一个 utils 的使用

propTypes.ts 的使用,对应官网 https://dwightjack.github.io/vue-types/#usage-example
这个文件主要是干什么的呢,他是一个替代 vue 原生 props 传值写法的一个库

源码分析如下

/**
 * @description: 在 TypeScript 项目中使用时,通过 .extend() 添加的验证器可能无法通过类型检查。
 *
 * 要向 TypeScript 说明您的自定义验证器,您可以使用以下模式:
 * 1. 首先创建一个模块来承载扩展的 VueTypes 对象:
 *  	VueTypesInterface: VueTypes 类定义的接口
 *  	VueTypeValidableDef: validation 对象所需的接口(interface)
 *
 * @date 2021/9/26 11:09
 * @example
 */
import { CSSProperties, VNodeChild } from 'vue';
import { createTypes, VueTypeValidableDef, VueTypesInterface } from 'vue-types';
export type VueNode = VNodeChild | JSX.Element;
/** 定义您的自定义 VueTypes 验证器接口 */
type PropTypes = VueTypesInterface & {
  /** 如果新类型将支持 `validate` 方法,使用 VueTypeValidableDef。 */
  readonly style: VueTypeValidableDef<CSSProperties>;
  readonly VNodeChild: VueTypeValidableDef<VueNode>;
  // readonly trueBool: VueTypeValidableDef<boolean>;
};
/**
 *  createTypes 它返回一个新的命名空间对象。
 *  PropTypes 类型作为类型参数传递给 propTypes 变量
 */
const propTypes = createTypes({
  func: undefined,
  bool: undefined,
  string: undefined,
  number: undefined,
  object: undefined,
  integer: undefined,
}) as PropTypes;
/**
 * @description: 可以通过 VueTypes.extend({...}) 扩展命名空间的 VueTypes 对象,如果要传递多个验证参数,将参数定义数组作为传递
 * @date 2021/9/26 10:59
 * @example
 * @param name: 必须传入.自定义类型的名称,将会暴露在 VueType.{name} 上
 * @param validate:	默认 false, 如果为 true 需要提供一个验证方法
 * @param getter:	默认 false,	如果为 ture 将被定义为访问器属性 (例如, VueTypes.string). 如果为 false,将被定义为一个方法 (例如 VueTypes.arrayOf()).
 */
propTypes.extend([
  {
    name: 'style',
    getter: true,
    type: [String, Object],
    default: undefined,
  },
  {
    name: 'VNodeChild',
    getter: true,
    type: undefined,
  },
]);

export { propTypes };

如何使用示例代码如下:

<template>
	<p>mioString:{{ mioString }}</p>
	<p>mioNumber:{{ mioNumber }}</p>
	<p>mioArray:{{ mioArray }}</p>
	<p>mioBoolean:{{ mioBoolean }}</p>
	<p>miotest:{{ miotest }}</p>
	<p>mioObject:{{ mioObject }}</p>
	<p>mioFunction:{{ mioFunction }}</p>
	<p>mioMix:{{ mioMix }}</p>
</template>

<script lang="ts">
import { defineComponent, PropType } from 'vue';
import { propTypes } from '@/utils/propTypes';

export default defineComponent({
	name: 'Child',

	props: {
		mioString: propTypes.string.def('600px'),
		mioBool: propTypes.bool.isRequired,
		mioNumber: propTypes.number,
		mioInteger: propTypes.integer,
		mioObject: propTypes.object,
		mioArray: propTypes.array,
		mioFunction: propTypes.func,
	},

	setup (props, { attrs, emit, slots }) {
		console.log('props:', props);
		console.log('props.mioString:', props.mioString);
	},

});
</script>
### Vben Admin框架介绍 Vben Admin款基于 Vue 3 和 TypeScript 构建的企业级管理后台模板。该框架集成了众多实用的功能模块和组件库,旨在帮助开发者快速搭建高效、美观的应用程序[^1]。 #### 主要特点 - **现代化技术栈**:采用Vue 3作为核心视图层框架,并全面支持TypeScript。 - **丰富的功能模块**:内置权限控制、多租户模式、国际化等功能。 - **完善的文档和支持**:提供详细的官方文档和技术社区的支持。 - **灵活定制化能力**:允许用户根据需求调整界面布局与业务逻辑。 ### 安装指南 为了开始使用 Vben Admin ,需要先完成项目的初始化工作: ```bash git clone https://github.com/vbenjs/vue-vben-admin.git my-project cd my-project npm install ``` 接着可以通过命令行工具来启动本地服务器查看效果: ```bash npm run dev ``` 这将会自动编译并热更新前端资源文件,在浏览器中访问 `http://localhost:9080` 即可看到应用首页[^2]。 ### 使用教程 当项目成功运行起来之后就可以着手于具体页面的设计实现了。下面是些常见的操作说明: #### 新增路由配置 在实际开发过程中经常涉及到动态加载不同路径下的页面内容,这时就需要修改路由表了。编辑位于 `/src/router/routes.ts` 文件中的数组项即可实现自定义导航条目添加: ```typescript { path: '/example', name: 'ExamplePage', component: () => import('@/views/example/index.vue'), } ``` #### 表格数据排序 对于表格类展示型控件来说,默认情况下可能并不具备良好的交互体验。通过设置 `sortFn` 属性可以轻松达成升序降序排列的效果[^3]: ```javascript // 自定义排序函数 sortFn: (sortInfo) => { return { field: sortInfo.field, order: sortInfo.order === 'descend' ? 'desc' : 'asc' }; }, ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wflynn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值