没有javascript app数据库的离线/本地存储选项

时间:2014-01-14 21:51:34

标签: javascript node.js local-storage offline html5-filesystem

以下是我的情景:

我熟悉Javascript,并希望创建一些简单的应用程序,无论是在个人工作中使用还是作为概念的证明,然后再进一步使用并获得实际的Web服务器空间。但是,我不想在我的机器上设置实际的数据库。如果可能,我希望读/写本地JSON文件。这是我有点卡住的地方,因为我的大多数查询都在html 5 FileSystem API或Node.js(已经安装在我的机器上)或现在可能存在的任何其他内容之前显示旧信息。

是否有人知道创建具有无数据库存储或类似内容的离线MVP的教程?或者只是关于如何开始的一般建议?

我一直在阅读HTML 5 Filesystem API和Node.js FS的东西但是没有一个例子我发现很难知道从哪里开始。

2 个答案:

答案 0 :(得分:4)

  

2014年4月24日上,W3C正式将FileSystem API成熟为 Working Group Note ,使用此技术的开发应该谨慎进行,不确定是否或者它会坚持多久。

IndexedDB正在寻找一个有前途的替代/解决方案,或许可以查看html5 rocks tutorial。留下我的初步答案,因为它仍然有效,但想对文件系统API保持谨慎。

<小时/> 我看到你得到了答案,但我想给文件系统api(你也问过)的解决方案。对于你有一个大小限制的cookie,但是为了回答问题的另一面,以下是{{3 }

文件系统api中的其他所有内容都围绕获取对文件的引用,然后创建编写器,读者等。特定于该文件实例。当文件编写者,读者,引用完成加载时,将传递/执行回调函数。

请求存储配额/获取对FileSystem的引用

var onInitFs = function(fs){
    fileSystem = fs;//set global reference to the filesystem
};
var errorHandler = function(e){console.log('Error', e);};
navigator.webkitPersistentStorage.requestQuota(1024*1024*1024*5, function(grantedBytes) {
    window.webkitRequestFileSystem(PERSISTENT, grantedBytes, onInitFs, errorHandler); 
}, errorHandler);

制作文件

fileSystem.root.getFile("filepathtoJSON", {
            create: true
}, callback, errorHandler);

将JSON写入文件

fileSystem.root.getFile("filepathtoJSON", {create: true}, function(fileEntry) {
        fileEntry.createWriter(function(writer) {
            writer.onwriteend = function(e) {
                writer.onwriteend = function(e){
                    callbackFunction();
                }
                writer.onerror = function(e3){console.log(e3);}
                var blob = new Blob([JSON.stringify(targetJSONobj)]);
                writer.write(blob);
            };
            writer.onerror = function(e3) {console.log(e3);};
            writer.truncate(0);
        }, errorHandler);
   }, errorHandler);

从文件读取JSON /创建fileReader(在回调函数中传递JSON对象)

fileSystem.root.getFile("filepathtoJSON", {creation:false}, function(fileEntry){
        fileEntry.file(function(file){
            var reader = new FileReader();
            reader.onloadend = function(e) {
               callback(JSON.parse(this.result));
            };
            reader.readAsText(file);
        }, errorHandler)
    }, errorHandler);

答案 1 :(得分:1)

您可以通过将对象转换为字符串并将其存储为cookie或使用本地存储来自行编写:

var data = { 'example': 324324 };
document.cookie = JSON.stringify(data);
var loaded = document.cookie.split(';');
console.log(JSON.parse(loaded [0]));

或者使用可以为您完成的库!

http://brian.io/lawnchair/