我已经使用Angular 4构建了我的应用程序,并使用本地存储来存储用户会话。我想要的是,每当我发布我的应用程序时,用户本地存储都应该被重置,以便在发布之前的数据不会产生任何问题。
我该怎么做?
我已经使用Angular 4构建了我的应用程序,并使用本地存储来存储用户会话。我想要的是,每当我发布我的应用程序时,用户本地存储都应该被重置,以便在发布之前的数据不会产生任何问题。
我该怎么做?
使用应用程序版本控制。
免责声明:此解决方案不适用于Windows用户!
最佳实践是自动化版本控制,这样您就不必一遍又一遍地手动设置应用程序版本。
思路是:
这将为您提供当前提交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"
}
在代码中,我们通过这个变量获取它
process.env.REACT_APP_CURRENT_GIT_SHA
代码:
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();
}`
"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",
}
- Ihorconfig/app.php
return [
'version' => env('APP_VERSION', "1.0.0"),
在 ***.blade.php 中
<script>
var version_app = "{{ config('app.version') }}"
</script>
添加到 **.js
if(typeof localStorage.version_app === 'undefined' || localStorage.version_app === null) {
localStorage.setItem('version_app', version_app);
}
if(localStorage.version_app != version_app){
localStorage.clear();
}
当您更改版本时,脚本会自动删除localStorage数据
多平台使用案例和可选存储清除(以下是Paras的答案)。
由于npm的脚本Shell默认为CMD.exe,并且CMD.exe不支持命令替换。
所谓命令替换,是指将命令的返回值作为另一个命令的参数使用的语法。
REACT_APP_CURRENT_GIT_SHA=`git rev-parse --short HEAD`
npm config set script-shell "C:\\Program Files\\git\\bin\\bash.exe"
{
"start": "cross-env REACT_APP_CURRENT_GIT_SHA=$(git rev-parse --short HEAD) REACT_APP_CLEAR_STORAGE=${npm_config_clear_storage} react-scripts start",
"build": "cross-env REACT_APP_CURRENT_GIT_SHA=$(git rev-parse --short HEAD) REACT_APP_CLEAR_STORAGE=${npm_config_clear_storage} react-scripts build"
}
我添加了REACT_APP_CLEAR_STORAGE=${npm_config_clear_storage}
,这样我就可以在运行脚本时手动指定是否要清除localStorage。(如果您不想要这个功能,请不要添加)
请注意,只有当版本(REACT_APP_CURRENT_GIT_SHA)发生变化时,额外的参数才会起作用
我的代码现在看起来像这样
const APP_VERSION = process.env.REACT_APP_CURRENT_GIT_SHA;
const CLEAR_STORAGE = !!process.env.REACT_APP_CLEAR_STORAGE;
if (localStorage.APP_VERSION != APP_VERSION) {
if (CLEAR_STORAGE) {
localStorage.clear();
}
localStorage.setItem("APP_VERSION", APP_VERSION);
}
为了运行构建并清除localStorage,我执行npm run build --clear_storage
同时,为了运行构建而不清除localStorage,我只需执行npm run build
localStorage
没有任何关系,链接中的任何答案都没有提到jQuery O.o。 - Andreas