Basil.js 一个 JavaScript 的数据持久化层库
Basil.js 是一个 JavaScript 的数据持久化层库,实现了统一的 LocalStorage、Cookie 和 Session 存储。
Basil.js 的目标是简化开发人员的前端存储管理。它努力做到完美,并处理禁用的 cookie、全本地存储和其他不必要的本机存储异常。
当您尝试存储某些数据时,Basil.js 将自动查看所有可用的存储机制,并找到最适合存储您的数据的机制。它还可以使用 json 处理复杂 javascript 对象的存储。
基本用法
basil = new window.Basil(options);
// basic methods
basil.set('foo', 'bar'); // store 'bar' value under 'foo' key
basil.set('abc', 'xyz'); // store 'xyz' value under 'abc' key
basil.get('foo'); // returns 'bar'
basil.keys(); // returns ['abc', 'foo']
basil.keysMap(); // returns { 'abc': ['local'], 'foo': ['local'] }
basil.remove('foo'); // remove 'foo' value
// advanced methods
basil.check('local'); // boolean. Test if localStorage is available
basil.reset(); // reset all stored values under namespace
高级使用
Storages
basil = new window.Basil(options);
// force storage on the go through basil
// set 'bar' value under 'foo' key in localStorage
basil.set('foo', 'bar', { 'storages': ['local'] });
// set 'bar' value under 'foo' key.
// try first to store it into cookies and if not possible into localStorage
basil.set('foo', 'quux', { 'storages': ['cookie', 'local'] });
// set 'xyz' value under 'abc' key in memory
basil.set('abc', 'xyz', { 'storages': ['memory'] });
// set value without JSON encoding
basil.set('foo', '{ "bar": "baz" }', { raw: true }); // will save { "bar": "baz" } as string
// retrieve keys
basil.keys(); // returns ['foo', 'abc']
basil.keys({ 'storages': ['memory'] }); // returns ['abc']
// retrieve keys map
basil.keysMap(); // returns { 'foo': ['local', 'cookie'], 'abc': ['memory'] }
basil.keysMap({ 'storages': ['memory'] }); // returns { 'abc': ['memory'] }
Native storages
// Access native storages
// With basil API, but without namespace nor JSON parsing for values
// cookies has specific options
Basil.cookie.get(key);
Basil.cookie.set(key, value, {
'expireDays': days,
'domain': 'mydomain.com',
'secure': true,
'sameSite': 'strict'
});
// localStorage
Basil.localStorage.get(key);
Basil.localStorage.set(key, value);
// sessionStorage
Basil.sessionStorage.get(key);
Basil.sessionStorage.set(key, value);
命名空间
basil = new window.Basil(options);
// store data under default namespace
basil.set('hello', 'world');
// store data under a given namespace
basil.set('hello', 42, { 'namespace': 'alt' });
basil.set('abc', 'def', { 'namespace': 'alt', 'storages': ['memory'] });
// retrieve data
basil.get('hello'); // return 'world'
basil.get('hello', { 'namespace': 'alt' }); // return 42
// retrieves keys
basil.keys(); // returns ['hello']
basil.keys({ 'namespace': 'alt' }); // returns ['hello', 'abc']
// retrieves keys map
basil.keysMap(); // returns { 'hello': ['local'] }
basil.keysMap({ 'namespace': 'alt' }); // returns { 'hello': ['local'], 'abc': ['memory'] }
// remove data under a given namespace
basil.remove('hello', { 'namespace': 'alt' });
basil.get('hello'); // return 'world'
basil.get('hello', { 'namespace': 'alt' }); // return null
// reset data under a given namespace
basil.reset({ 'namespace': 'alt', 'storages': ['local', 'memory']});
配置
这是整个options
对象,可以提供给Basil:
options = {
// Namespace. Namespace your Basil stored data
// default: 'b45i1'
namespace: 'foo',
// storages. Specify all Basil supported storages and priority order
// default: `['local', 'cookie', 'session', 'memory']`
storages: ['cookie', 'local']
// expireDays. Default number of days before cookies expiration
// default: 365
expireDays: 31
// keyDelimiter. The value used delimt the namespace from the key name
// default: '.'
keyDelimiter: '.'
};
兼容性
- Firefox 3.5+
- Internet Explorer 7 (requires json2.js)
- Internet Explorer 8+
- Chrome 4+
- Safari 4+
插件
List plugin
这个插件模仿 Redis Lists 方法和行为。下面是(尚未)支持的方法。
basil = new window.Basil(options);
basil.lindex(key, index);
basil.linsert(key, where, pivot, value);
basil.llen(key);
basil.lpop(key);
basil.lpush(key, value);
basil.lrange(key, start, stop);
basil.lrem(key, count, value);
basil.lset(key, index, value);
basil.ltrim(key, start, stop);
basil.rpop(key);
basil.rpush(key, value);
Set plugin
这个插件模仿 Redis Sets 方法和行为。除了sscan之外,所有的方法都实现了。
basil = new window.Basil(options);
basil.sadd(key, member [members ...]);
basil.scard(key);
basil.sdiff(key [keys ...]);
basil.sdiffstore(destination, key [keys ...]);
basil.sinter(key [keys ...]);
basil.sinterstore(destination, key [keys ...]);
basil.sismember(key, member);
basil.smember(key);
basil.smove(source, destination, member);
basil.spop(key);
basil.srandmember(key, [count]);
basil.srem(key, member [members ...]);
basil.sunion(key [keys ...]);
basil.sunionstore(destination, key [keys ...]);
相关链接
github 地址:https://github.com/Wisembly/basil.js
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论