1

我的 Web 应用程序有一个场景,我想就如何更好地设计它提出建议。

我必须对我的应用程序进行步骤:收集和分析。当有一个收集发生时,用户需要知道这个收集正在进行,分析也是如此。系统还显示用户最近执行的 10 次收集和分析。

当用户与系统交互时,正在进行的收集和分析(因此,最后的收集/分析)会不断变化。因此,在考虑了存储这些信息以正确显示它们的不同方式之后,因为它们是如此动态,我选择使用 HTML5 的localStorage,并且我正在使用 JavaScript 做所有事情。

以下是它们的存储方式:

  • 正在进行的收集:(由接收 ITEMNAME 的名为 addItem 的函数设置)

    • 键:c_ITEMNAME_Storage

    • 值:c_ITEMNAME

  • 集合完成或错误:(由一个名为 editItem 的函数设置,该函数还接收 ITEMNAME 并更改相应键的值)

    • 键:c_ITEMNAME_Storage

    • 值:c_Finished_ITEMNAME 或 c_Error_ITEMNAME

  • 最后 10 个集合中的集合(由一个名为 addItemLastCollections 的函数设置,该函数接收 ITEMNAME 并使用当前日期和时间准备密钥)

    • 键:ORDERNUMBER_c_ITEMNAME_DATE_TIME

    • 值:c_ITEMNAME

注意:订单号是从0到9,每次收集结束时收到数字0。同时,调用addItemLastCollections函数时删除数字9。

因为分析几乎相同,唯一改变的是“c”变成了“a”。

无论如何,我想你理解了这个想法,但如果有什么不清楚的地方,请告诉我。

我想要的是其他方法的意见和建议,因为我认为这是低效和不切实际的,即使它工作正常。我想要一些容易维护的东西。我认为坚持使用 localStorage 可能是最好的,但不是这样。我对 JavaScript 中设计模式的使用不是很熟悉,尽管我在 Java 中经常使用其中的一些。如果有人可以帮我解决这个问题,那就太好了。

编辑:即使是我也很难准确地解释为什么我觉得它效率低下。我想主要原因是因为对于每种情况(进度、完成、错误、上次集合)我必须调用一个方法并修改字符串(添加下划线和更多信息),并且让我访问任何数据(比如说,他们每个人的名称或日期)我需要测试以查看是哪种情况,然后继续使用split( _ )。我知道这不是很简单,但我想整个方法可以设计得更好。由于我独自在软件的这一部分工作,我没有可以与之讨论的任何人,所以我认为这里是一个交流想法的好地方 :)

提前致谢!

4

1 回答 1

2

不完全确定您在寻找什么。通常,我使用 localStorage 只是为了存储适合我的应用程序的对象的字符串化版本。我没有为 localStore 中的每个变量设置各种不同的键,而是将对象的字符串化版本转储到 localStorage 中的一个键中。这样,无论数据来自服务器作为 JSON 还是我从本地提取数据,数据都是相同的结构。

您可以使用 JSON.stringify(object) 和 JSON.parse('string from store') 快速保存或检索深度嵌套的对象/数组;

示例:我的应用程序对象作为 JSON 从服务器发送(我意识到这不是正确引用的 JSON)

var data={ foo: {bar:[1,2,3], baz:[4,5,6,7]},
  foo2: {bar:[1,2,3], baz:[4,5,6,7]}
}
saveObjLocal( 'app_analysis', data);

function saveObjLocal( key, obj){
   localStorage.set( key, JSON.stringify(obj)
}

function getlocalObj( key){
   return JSON.parse( localStorage.get(key) );
}

var analysisObj= =getlocalObj('app_analysis');
alert( analysisObj.foo.bar[2])
于 2013-10-31T22:55:07.057 回答