当前位置: 首页 > news >正文

长沙公司网站模板制作方案门户网站建设服务收费

长沙公司网站模板制作方案,门户网站建设服务收费,购买域名做销售网站可以吗,有像考试佳园一样做资料的网站吗前言 你是否也曾遇到过这种情况,每次发完版之后都还会有用户反馈问题没有被修复,一顿排查之后发现他用的还是旧的版本。 用户:在 XX 页面 XX 字段还是不展示 我:刷新下页面 用户:刷新了啊 我:强刷一下&…

前言

你是否也曾遇到过这种情况,每次发完版之后都还会有用户反馈问题没有被修复,一顿排查之后发现他用的还是旧的版本。

用户:在 XX 页面 XX 字段还是不展示
我:刷新下页面
用户:刷新了啊
我:强刷一下,Ctrl + F5

这一切都要归咎于 浏览器缓存,那么如何解决这一痛点呢?这篇文章将介绍如何检测版本变更并通知用户刷新页面。

实现思路

  1. 在项目构建(build)的时候,生成一个 version.json 版本信息文件,路径:dist/version.json
  2. 在切换路由的时候去请求服务器的 version.json 文件与本地缓存的版本信息做一个对比

准备工作

本文使用的是 Angular 技术栈,但是本质上还是使用的 webpack 去构建,所以万变不离其宗!

  • angular | v17
  • @angular-builders/custom-webpack | v17

开始

一、Angular 自定义 Webpack 配置

1.1 安装 @angular-builders/custom-webpack

npm install @angular-builders/custom-webpack -D

1.2 使用自定义配置运行开发服务器:@angular-devkit/build-angular -> @angular-builders/custom-webpack

"architect": {..."build": {"builder": "@angular-builders/custom-webpack:browser","options": {"customWebpackConfig": {"path": "./extra-webpack.config.ts"},...}},"serve": {"builder": "@angular-builders/custom-webpack:dev-server","options": {"browserTarget": "my-project:build"}}...
}

1.3 配置 extra-webpack.config.ts

import * as webpack from "webpack";export default (config: webpack.Configuration) => {config.plugins = [...config.plugins,// 这里配置插件];return config;
};

二、自定义版本信息插件

2.1 创建插件 version-plugin.js,参考文档 creating-a-plugin

const fs = require("fs");
const path = require("path");class VersionPlugin {constructor({ version }) {this.version = version;}apply(compiler) {compiler.hooks.done.tap("VersionPlugin", (stats) => {const versionInfo = {version: this.version,buildTime: new Date().toISOString(),};const outputPath = stats.compilation.options.output.path;const versionFilePath = path.resolve(outputPath, "version.json");fs.writeFileSync(versionFilePath, JSON.stringify(versionInfo, null, 2));console.log("Version file generated successfully!");});}
}
module.exports = VersionPlugin;

2.2 在 extra-webpack.config.ts 中使用 VersionPlugin 插件

import * as webpack from "webpack";
import * as VersionPlugin from "./version-plugin.js";export default (config: webpack.Configuration) => {const version = new Date().getTime();config.plugins = [...config.plugins,// 将版本号写入全局变量new webpack.DefinePlugin({"process.env.VERSION": JSON.stringify(version),}),// 创建 version.json 放入 dist 目录new VersionPlugin({ version: version }),];return config;
};

运行 npm run build 检测 version.json 文件是否写入成功!

三、检测变更并通知

我这里选择的是在用户切换路由的时候去检测,当然也可以选择其它的时机,例如开一个定时器,等。

3.1 在 app.component.ts 中去监听路由变化

import { Router, NavigationStart } from "@angular/router";export class AppComponent {constructor(private router: Router) {this.onRouterChange();}onRouterChange(): void {this.router.events.subscribe((event) => {if (event instanceof NavigationStart) {this.checkVersion();}});}
}

3.2 实现检测版本的方法,请求远程服务器的 version.json 版本信息与项目中的全局变量 process.env.VERSION 做对比

checkVersion(): void {if (!environment.production) {return;}fetch('./version.json').then(response => response.json()).then(versionInfo => {if (versionInfo.version !== process.env.VERSION) {// TODO: 弹窗提示 或 直接刷新this.refresh();}}).catch(error => {console.error(error);});
}refresh(): void {window.location.reload(true);
}

done!

结语

看到这里,希望能够给你提供一点思路,方法有很多种,也欢迎一起交流讨论!

http://www.dtcms.com/a/538440.html

相关文章:

  • 找黄岩做网站企业开发wordpress主题赚钱
  • 设计自学网站哪个好搜索引擎推广简称
  • 花钱也可以哪些网站可以做推广广告微信小程序开通多少钱
  • 广州协会网站建设课程开发公司
  • 湖南营销型网站建设 A磐石网络天津网站建设如何
  • 大语言模型的知识蒸馏综述
  • 做外贸的在哪些网站找工作设计网站案例
  • 朝阳建筑工程建设网站公司的网站建设与维护
  • 深圳快速网站制作哪里好电商网平台
  • LeetCode - 无重复字符的最长子串
  • ELK3——kibana
  • 国内购物网站大全濮阳新闻综合频道直播
  • 互联壹佰做企业网站网站快速排名公司
  • 乐清建设网站公司制作一个网站
  • 企业黄页信息查询网seo详细教程
  • 做墙绘一般在哪个网站做医药商城网站的公司吗
  • 广州冼村地铁站几号线网页制作源代码
  • 2025级SYUCT-ACM新生第二次训练 题解
  • 英文网站建设之后怎么推医疗器械分类目录2021
  • 朝阳网站建设 高碑店什么行业最需要网站建设
  • 网站推广优化招聘计算机网络设计是干什么的工作
  • 深圳企业网站制作流程wordpress小工具编辑
  • 曲靖程序网站建设中国教学网站
  • 网站定制开发特点wordpress首页广告位
  • 【Linux】信号的产生,保存,捕捉机制
  • 网站建设详细流程视频温州市手机网站制作多少钱
  • 福州网站怎么做的私活网站开发多少钱
  • 河南做网站的公司有哪些seo公司网站
  • 做asp网站需要的实验报告单做的网站上更改内容改怎么回事
  • 网站建设教程出售用苏州久远网络禹城做网站的