mmjs-share
v0.4.5
Published
mmjs-share share
Readme
mmjs-share utils
Install
pnpm add mmjs-sharetsconfig.json
- (如果用 Vite/Webpack 等打包工具)
- moduleResolution set "node" 先 // @ts-ignore 将就一下, 不想改了
- 考虑更新到 "node16"、"nodenext" 或 "bundler"
{ "compilerOptions": { "moduleResolution": "Bundler" } }
近期更新
- Share
- memoize (
包含过期时间) - throttle (
主动cancel) - isObject
- isPlainObject
- structuredClonePolyfill
- parseUrlParams
- normalizeURL
- memoize (
Share
throttle
- Custom Cancel
const throttledFn = throttle(() => { console.log("Throttled function"); }, 500); // 手动取消节流 setTimeout(() => { throttledFn.cancel(); }, 2000);memoize
- TTL
const add = (a: number, b: number): number => { console.log("Calculating..."); return a + b; }; const memoizedAdd = memoize(add); console.log(memoizedAdd(1, 2)); // 输出计算日志 console.log(memoizedAdd(1, 2)); // 从缓存读取isObject
- 不要问我为什么不用lodash
isObject({}) // true isObject([]) // trueisPlainObject
isPlainObject({}) // true isPlainObject([]) // falsestructuredClonePolyfill
- deep clone
parseUrlParams
- 增强版URL参数解析,支持解析所有位置的查询参数
- Example
const url = 'https://example.com/?test=has#/path?without=value'; parseUrlParams(url) // {test: 'has', without: 'value'} parseUrlParams(url, { includeHashParams: false }) // {test: 'has'}normalizeURL
- 规范 URL
- Example
normalizeURL("https://example.com"); // "https://example.com"
normalizeURL("http://example.com"); // "http://example.com"
normalizeURL("//example.com"); // "http(s)://example.com" (取决于当前页面协议)
normalizeURL("/api/data"); // "http(s)://当前域名/api/data"
normalizeURL("data.json"); // "http(s)://当前域名/当前路径/data.json"