当前位置: 首页 > news >正文

1. vue-sy-admin: 基于vue3+TypeScript的全局过滤器(filters) 封装及示例

在vue3中使用全局filters已经不是必须,有很多种替代方案(直接定义函数即可)。如果项目中使用了unplugin-auto-import插件完全可以将filters导出函数使其在全局自动引入/声明。当然在这里就不说插件的使用了。下面就详细说说如何实现

题外话: 强烈推荐使用 vueuse,该库由vue核心成员开发,封装了各种常用hooks,能够省很多不必要的开发时间,且其中的封装hooks思想也很值得学习参考

最终效果如下图所示

Snipaste_2023-10-13_11-55-00.png

1. filters工具函数建立及类型参数声明

src/filters目录下新建 index.tstypes.ts 分别用于全局filters的注册及全局参数声明

// index.ts// useDateFormat 为 vueuse 提供的时间格式化hooks,内部实现基于dayjs
import { useDateFormat } from '@vueuse/core';import type { App } from 'vue';export default function filters(app: App) {app.config.globalProperties.$filters = {dateFormat: (date, format = 'YYYY-MM-DD hh:mm:ss', options = {}) => {return useDateFormat(date, format, options).value;},};
}
// types.ts
import type { MaybeRefOrGetter,  DateLike, UseDateFormatOptions } from '@vueuse/core';export interface Filter {dateFormat: (date: MaybeRefOrGetter<DateLike>,format?: MaybeRefOrGetter<string>,options?: UseDateFormatOptions) => string;
}

注:types.ts导出接口声明主要用于在vue组件的ComponentCustomProperties中作声明使用

2. 注册全局filters

在入口文件 main.ts中引入并注册即可

// main.ts
import { createApp } from 'vue';
import filters from './filters';const app = createApp(App);
app.use(filters);
app.mount('#app');

注册完之后就可以在页面中使用了,不过因为目前还没有添加类型提示,页面会爆红。

3. 为.vue文件添加filters类型声明

// global-properties.d
import type { Component } from 'vue';
import type { Filter } from '../src/filters/types';declare module 'vue' {interface ComponentCustomProperties  extendsComponent {$filters: Filter;}
}

注:别忘了将该文件加入tsconfig.json的include配置项中,否则在.vue文件的template中使用将不会出现类型提示。

在线代码可查看:vue-sy-admin
简易模板可查看:vue-vite-template

http://www.lryc.cn/news/196380.html

相关文章:

  • 操作系统监控:守护您的计算机系统稳定运行的坚实防线
  • PostgreSQL | CTE | 使用with子句的通用表达式
  • A Close Look into the Calibration of Pre-trained Language Models
  • 【控制台】报错:Uncaught ReferenceError: process is not defined
  • Android自定义AppGlideModule,DataFetcher ,ModelLoaderFactory,ModelLoader,Kotlin(1)
  • uni-app--》基于小程序开发的电商平台项目实战(五)
  • 新型的终端复用器 tmux
  • 标准化后端向前端传来的Json数据
  • java 两个list比较,删除相同的元素
  • 7-3 zust-sy4-10 回文诗
  • 【数据结构】排序--插入排序(希尔排序)
  • “探寻服务器的无限潜能:从创意项目到在线社区,你会做什么?”
  • 5年经验之谈 —— 深入了解性能测试:方法、工具和最佳实践!
  • 动态加载sprite是multiple模式(即该sprite包含了很多小图)里的小图
  • 大数据 DataX 详细安装教程
  • 微信小程序开发之会议oa(首页搭建)
  • 了解主启动类怎么运行
  • 【LeetCode】31. 下一个排列
  • 支持语音与视频即时通讯项目杂记(一)
  • 文档:htm格式转txt
  • 电子邮件地址注册过程详解
  • 深度学习——卷积神经网络(CNN)基础二
  • R语言进度条:txtProgressBar功能使用方法
  • Maven实战-声明周期和插件
  • ebpf的快速开发工具--libbpf-bootstrap
  • 万界星空科技/生产制造执行MES系统/开源MES/免费MES
  • 螺纹快速接头在卫浴行业中的应用提高产量降低生产成本
  • 通达OA 2016网络智能办公系统 handle.php SQL注入漏洞
  • parameter的各种用法以及localparam的用法
  • 网络社区挖掘-图论部分的基本知识笔记