Vue3-TS-Lodash:理解Lodash / 常用方法积累

一、Lodash官网

Lodash 简介 | Lodash中文文档 | Lodash中文网

二、理解Lodash

Lodash 是一个一致性、模块化、高性能的 JavaScript 实用工具库。它提供了大量的函数来帮助你处理数组、数值、对象、字符串等,使你的代码更加简洁、易读和高效。Lodash 的设计哲学是让你能够使用函数式编程的方法来操作数据,同时避免修改原始数据(除非明确指定)。

三、Lodash具备哪些能力

序号能力解释
1数组 / Array如过滤、映射、排序、分块、去重、查找、比较等
2集合 / Collection如并集、交集、差集、子集、筛选等
3函数如柯里化、防抖、节流、合成、条件判断等;
4语言提供了一系列用于检查类型、验证值等的函数
5数学如求和、平均数、最大值、最小值、随机数等;
6数字clamp(number, [lower], upper)返回限制在 lower 和 upper 之间的值。
inRange(number, [start=0], end)检查 n 是否在 start 与 end 之间
random([lower=0], [upper=1], [floating])产生一个包括 lower 与 upper 之间的数
7对象如深拷贝、合并、遍历、转换、比较等
8SeqSeq 模块(或称为序列)提供了一种链式调用的方式来处理数据,同时支持惰性计算(Lazy Evaluation),这意味着只有在需要最终结果时,才会执行链中的操作。这种机制可以显著提高处理大数据集时的性能,因为它允许在数据实际被使用之前避免不必要的计算。
9字符串如切割、重复、填充、大小写转换、字符串匹配、转义等;
10实用函数
11Properties
12Methods
Lodash虽然提供了很多方法,但并不意味着在实际开发中一定要全部使用。在使用Lodash时,应根据实际需要选取合适的方法,以提高代码的可读性和执行效率。

四、vue3 ts 项目安装

4.1、安装

pnpm install lodash
pnpm install @types/lodash

4.2、全局引入

在项目的入口文件(main.ts)中全局引入Lodash,并将其挂载。
但请注意,这种方式虽然方便,但可能会增加项目的打包体积,因为Lodash是一个相对较大的库。

main.ts

import _ from 'lodash' 
app.config.globalProperties.$lodash = _ 
import { createApp, getCurrentInstance } from 'vue'
import './style.css'
import '@v3/assets/styles/tailwind.css'
import '@v3/assets/styles/reset.css'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
import router from './routers/index'
import { api } from './api/index'
import 'vue-global-api'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import _ from 'lodash' 

const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
const app = createApp(App)
app.use(ElementPlus)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}
app.use(pinia)
app.use(router)
app.config.globalProperties.$api = api
app.config.globalProperties.$lodash = _ 
app.mount('#app')

页面使用

<script setup lang="ts">
let Lodash = internalInstance && internalInstance.appContext.config.globalProperties.$lodash
getUser(params).then((res: any)=>{
    console.log('lodash', Lodash.hasIn(res, ['payload']))
    // true
}
</script>

感觉比较麻烦,后边找找看简便方法

出于性能和打包体积的考虑,通常不推荐全局引入Lodash。更好的做法是按需引入。 

4.3、按需引入

在组件或文件中,根据需要引入Lodash的特定函数。这样做的好处是可以只引入你需要的函数,从而减小项目的打包体积。

<script setup lang="ts">  
import { defineComponent } from 'vue'  
import { debounce } from 'lodash'  
  
// 使用debounce函数  
const handleInput = debounce((value: string) => {  
   console.log(value)  
}, 500)  
</script>  
  
<template>  
  <input type="text" @input="handleInput($event.target.value)" />  
</template>

五、配置TypeScript以支持Lodash

由于你已经安装了@types/lodash,TypeScript应该能够自动识别Lodash的类型定义。但是,如果你在使用TypeScript时遇到了与Lodash相关的类型错误或警告,请确保你的tsconfig.json文件配置正确。特别是,如果你的项目中使用了ES模块导入方式,并且遇到了默认导入的警告,你可能需要在tsconfig.json中添加以下配置

{  
  "compilerOptions": {  
    "allowSyntheticDefaultImports": true,  
    "esModuleInterop": true  
  }  
}

六、常用方法

6.1、hasIn

let result = hasIn(res, ['payload']) ? res.payload : []

对象路径正确 返回 true ,否则 false

<script setup lang="ts">
import { hasIn } from 'lodash'
getUser(params).then((res: any)=>{
    console.log('lodash-hasIn', hasIn(res, ['payload']))
    // true 测试成功
}
</script>

6.2、待补充

更多内容待补充

参考链接

lodash.hasIn | Lodash中文文档 | Lodash中文网

unplugin-auto-import 是一个用于自动导入模块的 Vite 插件,可以帮助我们快速导入组件、函数、变量等等。以下是在 Vue 3 + TypeScript 项目中使用 unplugin-auto-import 自定义导入路径的步骤: 1. 安装所需依赖: ```bash npm install -D vite-plugin-auto-import ``` 2. 在构建配置中添加插件,并配置自定义导入: ```javascript import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' export default defineConfig({ plugins: [ vue(), AutoImport({ // 配置需要自动导入的模块 imports: [ { // 导入组件 path: 'vue', // 定义导入的名称 imports: ['defineComponent'], }, { // 导入自定义组件 path: '@/components/MyCustomComponent.vue', // 定义导入的名称 imports: ['MyCustomComponent'], }, { // 导入函数 path: 'lodash/debounce', // 定义导入的名称 imports: ['debounce'], }, { // 导入变量 path: '@/config', // 定义导入的名称 imports: ['appConfig'], }, ], }), ], }) ``` 3. 在代码中使用自定义导入的模块: ```vue <template> <MyCustomComponent /> </template> <script lang="ts"> import { defineComponent } from 'vue' import { debounce } from 'lodash' import { appConfig } from '@/config' import { MyCustomComponent } from '@/components/MyCustomComponent.vue' export default defineComponent({ components: { MyCustomComponent, }, data() { return { searchText: '', } }, methods: { search: debounce(() => { console.log('searchText:', this.searchText) }, 500), }, }) </script> ``` 注意:在使用 unplugin-auto-import 插件时,需要在 tsconfig.json 文件中开启 "esModuleInterop": true,以支持模块导入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值