Description
Additionally jStorage is library agnostic, it works well with any other JavaScript library on the same webpage, be it jQuery, Prototype, MooTools or something else. Though you still need to have either a third party library (Prototype, MooTools) or JSON2 on the page to support older IE versions.
jStorage supports storing Strings, Numbers, JavaScript objects, Arrays and even native XML nodes which kind of makes it a JSON storage. jStorage also supports setting TTL values for auto expiring stored keys and - best of all - notifying other tabs/windows when a key has been changed, which makes jStorage also a local PubSub platform for web applications.
jStorage is pretty small, about 7kB when minified, 3kB gzipped.
jStorage alternatives and similar libraries
Based on the "Storage" category.
Alternatively, view jStorage alternatives based on common mentions on social networks and blogs.
-
js-cookie
A simple, lightweight JavaScript API for handling browser cookies -
localForage
💾 Offline storage, improved. Wraps IndexedDB, WebSQL, or localStorage using a simple but powerful API. -
jquery-cookie
A simple, lightweight jQuery plugin for reading, writing and deleting cookies. -
store.js
Cross-browser storage for all use cases, used across the web. -
NeDB
The JavaScript Database, for Node.js, nw.js, electron and the browser -
WatermelonDB
🍉 Reactive & asynchronous database for powerful React and React Native apps ⚡️ -
Lovefield
Lovefield is a relational database for web apps. Written in JavaScript, works cross-browser. Provides SQL-like APIs that are fast, safe, and easy to use. -
basket.js
A script and resource loader for caching & loading files with localStorage -
cookies.js
🍫 Tastier cookies, local, session, and db storage in a tiny package. Includes subscribe() events for changes. -
DB.js
db.js is a wrapper for IndexedDB to make it easier to work against -
awesome-web-storage
:sunglasses: Everything you need to know about Client-side Storage. -
Hadmean
Generate powerful admin apps in seconds with just `npx hadmean`. Stop building and maintaining admin apps that you can auto-generate. -
datavore
A small, fast, in-browser database engine written in JavaScript. -
crumbsjs
A lightweight vanilla ES6 cookies and local storage JavaScript library -
proxy-web-storage
Keep the type of storage value unchanged and change array and object directly. Supports listening to the changes and setting expires. -
JSON ODM
A JSON ODM (object document mapper) for JavaScript to use on the server or in the browser.
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of jStorage or a related project?
README
NB!
This project is in a frozen state. No more API changes. Pull requests for bug fixes are welcomed, anything else gets most probably ignored. A bug is something that breaks the application, outdated package file is not a bug.
jStorage
jStorage is a cross-browser key-value store database to store data locally in the browser - jStorage supports all major browsers, both in desktop (yes - even Internet Explorer 6) and in mobile.
Additionally jStorage is library agnostic, it works well with any other JavaScript library on the same webpage, be it jQuery, Prototype, MooTools or something else. Though you still need to have either a third party library (Prototype, MooTools) or JSON2 on the page to support older IE versions.
jStorage supports storing Strings, Numbers, JavaScript objects, Arrays and even native XML nodes which kind of makes it a JSON storage. jStorage also supports setting TTL values for auto expiring stored keys and - best of all - notifying other tabs/windows when a key has been changed, which makes jStorage also a local PubSub platform for web applications.
jStorage is pretty small, about 7kB when minified, 3kB gzipped.
Function reference
set(key, value[, options])
$.jStorage.set(key, value, options)
Saves a value to local storage. key needs to be string otherwise an exception is thrown. value can be any JSONeable value, including objects and arrays or a XML node.
Currently XML nodes can't be nested inside other objects: $.jStorage.set("xml", xml_node)
is OK but $.jStorage.set("xml", {xml: xml_node})
is not.
Options is an optional options object. Currently only available option is options.TTL which can be used to set the TTL value to the key $.jStorage.set(key, value, {TTL: 1000})
. NB - if no TTL option value has been set, any currently used TTL value for the key will be removed.
get(key[, default])
value = $.jStorage.get(key)
value = $.jStorage.get(key, "default value")
get retrieves the value if key exists, or default if it doesn't. key needs to be string otherwise an exception is thrown. default can be any value.
deleteKey(key)
$.jStorage.deleteKey(key)
Removes a key from the storage. key needs to be string otherwise an exception is thrown.
setTTL(key, ttl)
$.jStorage.set("mykey", "keyvalue");
$.jStorage.setTTL("mykey", 3000); // expires in 3 seconds
Sets a TTL (in milliseconds) for an existing key. Use 0 or negative value to clear TTL.
getTTL(key)
ttl = $.jStorage.getTTL("mykey"); // TTL in milliseconds or 0
Gets remaining TTL (in milliseconds) for a key or 0 if not TTL has been set.
flush()
$.jStorage.flush()
Clears the cache.
index()
$.jStorage.index()
Returns all the keys currently in use as an array.
var index = $.jStorage.index();
console.log(index); // ["key1","key2","key3"]
storageSize()
$.jStorage.storageSize()
Returns the size of the stored data in bytes
currentBackend()
$.jStorage.currentBackend()
Returns the storage engine currently in use or false if none
reInit()
$.jStorage.reInit()
Reloads the data from browser storage
storageAvailable()
$.jStorage.storageAvailable()
Returns true if storage is available
subscribe(channel, callback)
$.jStorage.subscribe("ch1", function(channel, payload){
console.log(payload+ " from " + channel);
});
Subscribes to a Publish/Subscribe channel (see demo)
publish(channel, payload)
$.jStorage.publish("ch1", "data");
Publishes payload to a Publish/Subscribe channel (see demo)
listenKeyChange(key, callback)
$.jStorage.listenKeyChange("mykey", function(key, action){
console.log(key + " has been " + action);
});
Listens for updates for selected key. NB! even updates made in other windows/tabs are reflected, so this feature can also be used for some kind of publish/subscribe service.
If you want to listen for any key change, use "*"
as the key name
$.jStorage.listenKeyChange("*", function(key, action){
console.log(key + " has been " + action);
});
stopListening(key[, callback])
$.jStorage.stopListening("mykey"); // cancel all listeners for "mykey" change
Stops listening for key change. If callback is set, only the used callback will be cleared, otherwise all listeners will be dropped.
Donate
Support jStorage development
Features
jStorage supports the following features:
- store and retrieve data from browser storage using any JSON compatible data format (+ native XML nodes)
- set TTL values to stored keys for auto expiring
- publish and subscribe to cross-window/tab events
- listen for key changes (update, delete) from the current or any other browser window
- use any browser since IE6, both in desktop and in mobile
Browser support
Current availability: jStorage supports all major browsers - Internet Explorer 6+, Firefox 2+, Safari 4+, Chrome 4+, Opera 10.50+
If the browser doesn't support data caching, then no exceptions are raised - jStorage can still be used by the script but nothing is actually stored.
License
Unlicense Since version 0.4.7
MIT (versions up to 0.4.6)
*Note that all licence references and agreements mentioned in the jStorage README section above
are relevant to that project's source code only.