在angular2服务中包装localStorage?

时间:2017-10-21 18:47:59

标签: javascript angular typescript dependency-injection local-storage

将本地存储包装在angular2中的服务中是否明智?有没有争论为什么要这样做呢?显然它更整洁。将服务作为组件的依赖注入调用。我没有看到任何其他“专业人士”。

例如(服务中的本地存储)

setHost(value: string) {
    localStorage.setItem(STATIC_VARIABLE_KEY, value);
  }

  getHost(): string {
    return localStorage.getItem(STATIC_VARIABLE_KEY);
  }

1 个答案:

答案 0 :(得分:1)

好主意的主要原因是仍有浏览器,在私有模式下不支持var list = ["img1", "img2", "img3"]; function ChangeBackground () { document.getElementById('background').src = "images/"+list[i]; } window.setInterval(ChangeBackground(), 4000); ,并且通过使用这个抽象层,您可以简单地替换localStorage使用localStorage,当它不可用时。

例如,在最新的High Sierra发布之前,即使是隐身模式的MacOS Safari也不支持它。 Mobile Safari也有这个问题。 (我认为它仍然存在于iOS 11上,不确定。)

但我建议使用一些现成的解决方案,而不是从头开始。看看这个模块:

https://github.com/phenomnomnominal/angular-2-local-storage

这样做的另一个原因可能是与服务器端呈现的兼容性(通过角度/通用),因为cookie在服务器端根本不可用。