随着前端技术的不断演进,工具库的作用已不再局限于提供便捷的函数集合。很多工具库代表了一种前端开发的最佳实践,反映的是当前的开发趋势和设计理念。
所以说,咱们今天就来看一下目前前端比较知名的工具库,来看下他们的设计理念。
具体包含:
- js 工具库:es-toolkit
- react 工具库:react-use
- vue 工具库: vue-use
一、es-toolkit:现代 JavaScript 工具库的轻量化和功能取舍
轻量与现代化的设计方案
es-toolkit 的设计理念可以视作对 lodash、underscore 传统工具库的一种反思。
在 lodash 诞生之初,JavaScript 语言的功能相对比较弱,因此它提供的工具函数显得极为实用。然而,随着 ES6+ 标准的逐步普及,许多过去需要工具库完成的操作,如数组和对象操作、字符串处理等,都已内置于语言特性中。
因此,es-toolkit 的关键在于轻量化与现代化,摒弃不必要的功能,同时充分利用 JavaScript 的最新特性。也符合当前 “工具即服务” 的开发理念。
1. 数组和对象操作:应对数据复杂性
现代前端开发中,前端状态管理框架如 Redux、Vuex 等进一步提升了应用的复杂性,特别是嵌套的数组和对象结构频繁出现。
es-toolkit 提供的 chunk、flatten 和 deepClone 等功能简化了数据的操作:
import { deepClone } from 'es-toolkit';
const original = { a: 1, b: { c: 2 } };
const copy = deepClone(original);
2. 轻量化的字符串操作:减少无谓的代码
es-toolkit 提供的字符串操作如 camelCase 等,定位明确——仅在简化代码逻辑、减少正则处理负担的情况下使用:
import { camelCase } from 'es-toolkit';
console.log(camelCase('Hello World'));
二、reactuse:更高效的状态管理和事件抽象
更多 hooks 的补充
reactuse 的诞生从某种程度上来说,是对 React Hooks 和 Vue 组合式 API 的提升。
React 本身提供了很多相对基础的钩子函数,如 useState、useEffect,这些钩子在一定程度上帮助我们去构建响应式代码。
但在大型应用中,我们往往还需要更高阶的逻辑封装,而 reactuse 恰好填补了这个需求。
1. 状态和逻辑复用
React 的基础钩子允许开发者在组件中定义状态和逻辑,但在复用逻辑时会出现限制。
reactuse 的 useToggle、useCounter 等 hook,针对最常见的状态管理场景进行了抽象,同时在复用逻辑的过程中减少了组件间的耦合。
import { useToggle } from 'reactuse';
const [isActive, toggle] = useToggle();
2. 事件抽象与性能优化
高频事件处理是前端性能的瓶颈之一。
reactuse 的 useEventListener 和 useDebounce 等 hook 设计,既能处理事件抽象,又提供了节流和防抖的优化方式,从而在简化代码的同时提高了应用性能:
import { useDebounce } from 'reactuse';
const debouncedValue = useDebounce(value, 300);
三、vueuse:Vue 哲学的功能扩展和声明式编程
提升 composition api 的应用场景
Vue3 的核心思想之一是 composition api ,而 vueuse 则进一步扩展了这一理念。
它通过封装大量与 DOM、事件、状态相关的功能,让我们可以直接在composition api 中调用这些方法,达到类似于 react hooks 的效果。
1. 在状态管理上实现高内聚
vueuse 提供的 useToggle、useCounter 等函数,无缝衔接 Vue 的响应式系统,避免了大量模板内的冗余代码:
import { useCounter } from '@vueuse/core';
const counter = useCounter();
2. 封装浏览器 API:功能和语义的统一
vueuse 对浏览器 API 的封装有很多,例如 useClipboard 等封装浏览器 API 的函数:
import { useClipboard } from '@vueuse/core';
const { copy } = useClipboard();
copy('Hello VueUse!');
3. 实时数据和时间管理
动态应用越来越流行,而 vueuse 通过封装常用的实时数据和时间管理功能,如 useNow 和 useIntervalFn:
import { useNow } from '@vueuse/core';
const now = useNow();