前端

IntelliJ IDEA 打包 Web 项目 WAR 包(含 Tomcat 部署+常见问题解决)

一、引言对于 IntelliJ IDEA 新手来说,Web 项目 WAR 包打包常因步骤多、配置深而卡壳,且多数教程仅讲“打包”却忽略“部署验证”和“问题排查”。本文将从前置准备→核心配置→打包验证→Tomcat 部署→问题解决,带你完整走通流程,避开 90% 的常见坑。 二、前置准备:确认基础配置(避免起步就错

react hooks深拷贝后无法保留视图状态

在使用useState做数据操作更新的时候,有一些复杂数据类型,一个对象数组里包含,函数,dom等等复杂数据类型,想要进行数据更新,并且视图更新的情况下,因useState的特性就必须进行深拷贝赋值。 方式 1、JSON.stringify配合JSON.parse 这个有限制,我们的数据类型包含,函数。它会丢失 2、Lodash 里的深拷贝方法 3、递归实现 我这里通过递归直接写的方法,发现拷贝

彻底搞懂盒子模型

一、简述 所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用。 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:Margin外边距,Border边框,Padding内边距,和Content实际内容。 盒模型允许我们在其它元素和周围元素边框之间的空间放置元素。 下面的图片说明了盒子模型(Box Model): 盒

Qwen3-VL-WEBUI游戏AI:视觉决策系统搭建

Qwen3-VL-WEBUI游戏AI:视觉决策系统搭建1. 引言:为何需要基于Qwen3-VL的视觉决策系统?在当前AI驱动的游戏自动化、智能NPC设计与玩家行为分析等场景中,传统的纯文本大模型已难以满足复杂交互需求。游戏界面本质上是高度结构化的多模态环境——包含图像、动态UI元素、空间布局和实时反馈机制。为此,阿里开源的 Qw

h5 IOS微信浏览器input输入账号键盘闪烁

问题 由项目需求 只能在手机微信浏览打开h5页面 在登录界面。输入账号时,ios手机软键盘反复闪烁 原因 因为微信浏览器的重绘行为; 简单理解就是,自ios11开始,苹果手机的浏览器就有了自动填充密码的功能, 具体来说就是一个手机号密码登录的页面,ios识别到当前页面有密码输入框,所以触发了自动填充密码的功能。 解决方案 autoComplete="off" 和 autoComplete="n

开箱即用:一键启动Qwen3-Reranker-4B的WebUI服务

开箱即用:一键启动Qwen3-Reranker-4B的WebUI服务你是否试过在本地部署Qwen3-Reranker-4B,却卡在vLLM不兼容、Gradio启动失败、端口冲突或模型加载报错的环节?别再反复调试环境了——这个镜像就是为“零配置启动”而生的。它跳过了所有常见的部署陷阱:不用手动改源码、不用编译适配补丁、不用查日志定位CUDA版本

Canvas vs WebGL:你真的搞懂浏览器图形渲染了吗?

前言:大多数前端工程师提到图形渲染就脑子一懵。Canvas?WebGL?好像懂,又好像不懂。这篇文章我们不装逼,从渲染原理、源码实现、性能差异、实战场景四个维度把它们拆得体无完肤,看完你就明白为什么大多数人都用错了。 Canvas为什么叫"画布"而不是"页面"? 问

前端vue:路由的基本使用

1. 路由 概念: Hash 地址与组件之间的对应关系 工作方式: 当用户点击页面上的路由链接 导致了 URL 地址栏中的 Hash 值发生了变化 前端路由就会监听到 Hash 地址的变化 前端路由把当前 Hash 地址对应的组件渲染都浏览器中 2. vue-router` vue-router 是 vue.js 官方给出的路由解决方案 2.1 vue-router 的基本用法 安装 vue-r

vue 函数化组件

Vue.js提供了一个functional的布尔值选项,设置为true可以使组件无状态和无实例,也就是没有data和this上下文。这样用render函数返回虚拟节点可以更容易渲染,因为函数化组件只是一个函数,渲染开销要小很多。 使用函数化组件时,Render函数提供了第二个参数context来提供临时上下文。组件需要的data、props、slots、children、parent都是通过这个上

解决element的Table表格组件的高度自适应问题

解决element的Table表格组件的高度问题( height只能是数字或者字符串 ),实现height: calc(100vh - 200px) 的效果 方式一: 注:也可直接将el-table的height属性绑定为字符串:calc(100vh - 200px) 实现为同样的效果, 200 是顶部和底部导航以及部分自定义布局 ;例:(这里使用了rem,一样的道理) 方式二:通过