每当我发布新代码时如何从客户端清除本地存储

Pra*_*wat 2 javascript local-storage angular

我已经在 Angular 4 上构建了我的应用程序,并且我正在使用本地存储来存储用户会话。我想要的是每当我发布我的应用程序时,用户本地存储应该被重置,以便发布前的数据不会造成任何问题。

我怎么做?

Par*_*Roy 6

使用版本控制,在客户端保留一个额外的密钥,它将拥有最后一个版本。如果版本匹配,则表示没有发布新代码,如果版本不匹配,则表明新代码已通过,则只需使用一个实用程序来清除本地存储。


phi*_*her 6

使用应用程序版本控制

免责声明:此解决方案不适合 WINDOWS 用户!

最佳实践是自动进行版本控制,这样您就不必一次又一次手动设置应用程序版本。

这个想法是

  1. 获取当前的 git SHA,如果没有找到旧的 SHA,则将其存储在本地存储中。
  2. 如果找到旧的 SHA,则比较 SHA,如果不相等,则清除存储,在本地存储中设置新的 SHA。

这将为您提供当前提交 SHA 的当前简短版本。

git rev-parse --short HEAD

在你的package.json中

"scripts": {     
      "build": "REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD` react-scripts build",     
      "start": "REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD` react-scripts start" 
 }
Run Code Online (Sandbox Code Playgroud)

在代码中,我们通过以下方式获取这个变量

process.env.REACT_APP_CURRENT_GIT_SHA
Run Code Online (Sandbox Code Playgroud)

代码:

const APP_VERSION = process.env.REACT_APP_CURRENT_GIT_SHA;

if (typeof localStorage.APP_VERSION === 'undefined' || localStorage.APP_VERSION === null) {
    localStorage.setItem('APP_VERSION', APP_VERSION);
}

if (localStorage.APP_VERSION != APP_VERSION) {
    localStorage.clear();
}`
Run Code Online (Sandbox Code Playgroud)