什么是 lockr?
lockr 是一款简单易用的本地存储 JavaScript 库,它可以在浏览器中使用,而不需要依赖任何其他库。
相比于原生 localStorage,lockr 更加方便易用,可以直接存储对象和数组等复杂数据类型,并且提供了加密、过期时间等功能。
安装 lockr
你可以使用 npm 来安装 lockr:
npm install lockr --save
或者,你可以直接从 CDN 引入 lockr:
<script src="https://cdn.jsdelivr.net/npm/lockr/dist/lockr.min.js"></script>
使用 lockr
存储数据
你可以使用 lockr.set()
方法来存储数据:
lockr.set('name', 'Lockr');
如果要存储对象或数组等复杂数据类型,可以直接传入:
lockr.set('user', { name: 'Lockr', age: 18 }); lockr.set('list', [1, 2, 3]);
获取数据
你可以使用 lockr.get()
方法来获取数据:
const name = lockr.get('name'); // 'Lockr' const user = lockr.get('user'); // { name: 'Lockr', age: 18 } const list = lockr.get('list'); // [1, 2, 3]
如果获取不存在的数据,则会返回 undefined:
const notExist = lockr.get('notExist'); // undefined
删除数据
你可以使用 lockr.rm()
方法来删除数据:
lockr.rm('name');
清空数据
你可以使用 lockr.flush()
方法来清空所有数据:
lockr.flush();
加密和解密
lockr 支持对存储的数据进行加密和解密操作。
加密数据
你可以在初始化 lockr 时设置加密钩子函数:
lockr.prefix = 'myPrefix'; // 设置前缀,避免与其他库冲突 lockr.hook.encrypt = function(value) { const salt = 'mySalt'; // 盐值,可以自行定义 return CryptoJS.AES.encrypt(JSON.stringify(value), salt).toString(); };
其中,hook.encrypt
函数接收一个参数,即要加密的数据,返回加密后的字符串。
解密数据
同样地,你也可以在初始化 lockr 时设置解密钩子函数:
lockr.prefix = 'myPrefix'; // 设置前缀,避免与其他库冲突 lockr.hook.decrypt = function(value) { const salt = 'mySalt'; // 盐值,必须与加密时使用的相同 return JSON.parse(CryptoJS.AES.decrypt(value, salt).toString(CryptoJS.enc.Utf8)); };
其中,hook.decrypt
函数接收一个参数,即要解密的字符串,返回解密后的数据。
过期时间
lockr 还支持设置过期时间,当数据过期时,会被自动清除。
你可以在存储数据时设置过期时间:
lockr.set('user', { name: 'Lockr', age: 18 }, { expires: 60000 }); // 过期时间为 1 分钟
你也可以在初始化 lockr 时设置默认的过期时间:
lockr.prefix = 'myPrefix'; // 设置前缀,避免与其他库冲突 lockr.defaultExpires = 60000; // 默认的过期时间为 1 分钟
示例代码
-- -------------------- ---- ------- ------ ----- ---- -------- -- ---- ----------------- --------- ----------------- - ----- -------- ---- -- --- ----------------- --- -- --- - -------- ----- --- -- ---- ----- ---- - ------------------ -- ------- ----- ---- - ------------------ -- - ----- -------- ---- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------