NQ-CACHE 函数缓存,支持纯函数和返回值为Promise的函数
发布于 1 个月前 作者 qjzd 69 次浏览 来自 分享

NQ-CACHE

函数缓存,支持纯函数和返回值为Promise的函数

项目地址

https://github.com/nqdy666/nq-cache

特性

  • IE8+
  • 支持Typescript

文档

安装

安装npm包

npm install nq-cache

使用 pureFuncMemoryCache

add.js

import { pureFuncMemoryCache } from 'nq-cache'

export function add (a, b) {
  return a + b
}

export const addCache = pureFuncMemoryCache(add)

app.js

import { addCache as add } from './add'
add(1, 2) // 执行,并把结果缓存
add(1, 2) // 直接从缓存中获取结果

使用 promiseMemoryCache

request.js

import { promiseMemoryCache } from 'nq-cache'

export function request (data) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(data)
    }, 2 * 1000)
  })
}

export const requestCache = promiseMemoryCache(request)

app.js

import { requestCache as request } from './request'
// 执行,并把结果缓存
request({ name: 'bowl' }).then(res => {
  // 直接从缓存中获取结果
  return request({ name: 'bowl' }) 
})

使用 promiseSessionStorageCache

request.js

import { promiseSessionStorageCache } from 'nq-cache'

export function request (data) {
  return new Promise(resolve => {
    setTimeout(() => {
      resolve(data)
    }, 2 * 1000)
  })
}

export const requestCache = promiseSessionStorageCache(request, 'request')

app.js

import { requestCache as request } from './request'
// 执行,并把结果缓存
request({ name: 'bowl' }).then(res => {
  // 直接从缓存中获取结果
  return request({ name: 'bowl' }) 
})

CDN

仅包含 nq-cache

<!-- 使用最新版本 -->
<script src="https://unpkg.com/nq-cache@latest"></script>
<!-- 或指定某一个版本 -->
<script src="https://unpkg.com/nq-cache@0.0.3"></script>
<script>
  function add (a, b) {
    return a + b
  }
  addCache = cache.pureFuncMemoryCache(add)
  addCache(1, 2) // 执行,并把结果缓存
  addCache(1, 2) // 直接从缓存中获取结果
</script>

其他更多的方法,可以查看例子

提示,如果浏览器不支持 Promise 或者 JSON,你应该进行 polyfill

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
<!--[if lt IE 8]>
  <script type="text/javascript" src="https://cdn.bootcss.com/json2/20160511/json2.min.js"></script>
<![endif]-->

方法

  • pureFuncMemoryCache
  • promiseMemoryCache
  • promiseSessionStorageCache
  • clearCache
  • argToKey

本地开发

  • 安装依赖
npm install
  • 测试
npm test
  • 打包
npm run build
  • Flow
npm run flow
  • ESLint
npm run lint
  • 更新文档
npm run doc
  • 运行测试页面
npm run build
npm run example

然后用浏览器打开
http://localhost:5000/examples/
  • 发布
npm version [new version]
npm run build
npm publish
回到顶部