Basil.js 一个 JavaScript 的数据持久化层库

Basil.js 是一个 JavaScript 的数据持久化层库,实现了统一的 LocalStorage、Cookie 和 Session 存储。

Basil.js 一个 JavaScript 的数据持久化层库

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

以上是 Basil.js 一个 JavaScript 的数据持久化层库 的全部内容, 来源链接: utcz.com/p/232652.html

回到顶部