-
HTML模板错误常因标签嵌套非法、自闭合不当、条件逻辑残留或服务端注入干扰导致,浏览器会自动修复DOM结构,故应以Elements面板为准而非源码。
-
key必须加在map返回的顶层JSX元素上,优先用数据唯一ID,慎用index或随机值,确保同一层级兄弟节点中稳定且不重复。
-
FID必须用JavaScript主动监听计算上报,不能靠HTML控制;其本质是用户触发事件到浏览器开始处理的排队延迟,需用event.timeStamp减performance.now()近似计算,且监听须尽早注册并过滤后台事件。
-
JavaScript异步编程以Promise为基础抽象,async/await是其语法糖;Promise封装状态(pending/fulfilled/rejected),支持链式调用与并发方法;async/await简化书写与错误处理,二者定位不同、协同使用。
-
应直接使用<picture>实现AVIF/WebP适配,因其无需JS、不发额外请求、SEO友好且原生支持;srcset不识别格式,必须依赖<sourcetype>做MIME类型匹配,顺序为AVIF→WebP→JPEG,并确保各格式尺寸与质量一致。
-
border-spacing没反应最常见的原因是border-collapse被设为collapse,此时该属性被浏览器忽略;必须显式设置border-collapse:separate且作用于table元素,其第一个值控制列间距、第二个值控制行间距。
-
TailwindCSS适合什么项目?不适合什么项目?Tailwind不是“万能加速器”,它真正提效的前提是:你有至少3个中等复杂度页面,且团队愿意统一用原子类表达设计意图。小项目(比如单页登录表单、A/B测试页)硬套Tailwind,反而会因全量扫描content路径、加载未用类、热更新卡顿而拖慢开发。适合:中后台系统、Next.js/React/Vue项目、需要高度定制品牌色与间距体系的业务线不适合:仅需兼容IE11的老系统、静态营销页(bootstrap.min.css一行引
-
正确做法是用position:absolute;left:-9999px视觉隐藏文件输入框以保留可交互性,再通过按钮点击事件同步调用其click()方法触发选择对话框,并监听change事件获取FileList。
-
Map迭代天然无序,需显式排序构建有序字典:可通过key切片排序、维护插入顺序或使用有序map库实现,避免依赖偶然顺序。
-
正则{n,m}限制的是Unicode码点数而非字节数;若需校验UTF-8字节长度,必须配合后端编码计算,前端正则仅能粗略拦截。
-
Vue页面刷新数据丢失的根本原因是Vuex状态仅存于内存,需将关键信息如登录态、菜单、权限等持久化至sessionStorage;初始化时从sessionStorage读取并做类型转换,所有mutations中同步写入,推荐使用vuex-persistedstate插件实现可靠持久化。
-
生产环境Tailwind样式丢失主因是PurgeCSS误删class,需检查content配置是否覆盖动态class来源,正确设置safelist正则,并通过debug:true或临时禁用content验证。
-
闭包是构建跨平台适配层最轻量可靠的方式,通过在初始化阶段固化环境配置并捕获为自由变量,使函数调用无需运行时判断,支持多平台专属实例、行为封装及工厂函数动态创建。
-
多层<ul>嵌套导航混乱的根本原因是未重置默认样式和定位行为;必须统一设置margin:0、padding:0、list-style:none、position:relative;子菜单需absolute定位并精确控制top/left;移动端应避免纯嵌套结构,改用带ARIA属性的button触发折叠。
-
Object.defineProperties()专为精确控制多属性的configurable/enumerable/writable/get/set/value等行为设计,非批量赋值快捷方式;必须传入合法描述符对象,value/writable须成对出现且不可与get/set混用,configurable:false后属性不可删或重定义。