version.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. // utils/version.js
  2. import axios from "axios";
  3. // 生成一个随机的字符串作为请求的查询参数
  4. import { nanoid } from "nanoid";
  5. import { ElMessageBox } from "element-plus";
  6. export async function isNewVersion() {
  7. // 构建了一个 URL,用于请求版本信息的 JSON 文件。这个 URL 包括当前页面的主机名和一个随机生成的长度为 10 的字符串作为查询参数。
  8. const url = `//${window.location.host}/version.json?id=${nanoid(10)}`;
  9. // 使用 Axios 发起了一个 get 请求,获取版本信息的 json 文件。
  10. try {
  11. const res = await axios.get(url);
  12. // 从响应数据中获取了版本号。
  13. const version = res.data.version;
  14. // 从本地存储中获取了之前保存的版本号
  15. const localVersion = localStorage.getItem("version");
  16. // 检查本地存储的版本号是否存在且与当前版本号不一致
  17. if (localVersion && localVersion !== version) {
  18. ElMessageBox.confirm("发现新的版本,请刷新页面后使用!", "系统提示", {
  19. confirmButtonText: "立即刷新",
  20. // cancelButtonText: this.$t('btn.cancel'),
  21. showCancelButton: false,
  22. closeOnClickModal: false,
  23. type: "warning",
  24. })
  25. .then(() => {
  26. localStorage.setItem("version", version);
  27. window.location.reload();
  28. })
  29. .catch(() => {});
  30. } else {
  31. // 如果没有发现新版本,则仅将当前版本号保存到本地存储中。
  32. // 这段代码的作用是在页面加载时检查是否有新版本可用,如果有新版本则重新加载页面以获取最新版本
  33. localStorage.setItem("version", version);
  34. }
  35. } catch (error) {
  36. console.log(error);
  37. }
  38. }