-
答案:通过JavaScript结合FileReader、Canvas和Blob实现图片上传前的压缩与预览。首先利用FileReader读取图片并生成base64预览,再通过Canvas绘制并缩放图片,调用toDataURL方法按质量压缩,最后将压缩后的base64数据用于预览或转为Blob上传,有效减少文件体积,提升上传效率与用户体验。
-
JavaScript作用域是变量和函数可访问的范围,分全局和函数作用域:全局作用域唯一且长期存在,变量挂载window对象;函数作用域临时私有,执行完销毁,支持作用域链查找。
-
装饰器是JavaScript中用于修改类、方法、访问器或参数行为的语法特性,本质为接收目标对象等参数并返回新定义的函数;目前处于TC39Stage3提案阶段,未正式标准化,但已被TypeScript和Babel广泛支持。
-
字符串不可变性导致频繁拼接开销大,应使用Array.join()或模板字符串提升性能;2.正则表达式需复用实例并简化模式以降低执行成本;3.截取方法slice和substring选择语义清晰者即可,避免高频调用;4.处理长字符串宜分块或流式处理,结合生成器减少内存占用;5.核心是根据场景避免低效操作,尤其在热路径中优化拼接与正则匹配。
-
可通过四种CSS方案实现图片横向滚动:一、CSS动画+translateX无缝循环;二、scroll-snap手动滑动;三、废弃但兼容的<marquee>标签;四、CSSGrid多行同步滚动。
-
统一使用同一CDN(如cdnjs.cloudflare.com)加载所有前端依赖,可减少TCP/TLS连接开销、提升弱网环境下的加载稳定性,并降低因多源CDN被劫持或污染带来的安全风险。
-
用gap实现卡片等间距排列:gap控制网格项间空隙,justify-content仅调整整组行列在容器中的对齐;正确写法为display:grid+gap,外边距用padding配合。
-
JavaScript操作剪贴板主要使用异步的navigator.clipboardAPI,需在HTTPS/localhost安全上下文及用户手势(如click)中调用writeText()或readText(),旧版浏览器可降级使用document.execCommand('copy')。
-
答案:通过查询DOM并检查返回值判断元素是否存在。1.querySelector根据选择器返回首个匹配元素,未找到返回null;2.getElementById通过ID获取元素,找不到返回null;3.getElementsByClassName和querySelectorAll返回类数组对象,需检查length属性是否大于0;4.已获取元素引用时可用document.body.contains判断其是否存在于页面中。核心是判断返回值是否为null或length是否大于0,依场景选择合适方法。
-
HTML5拖拽API通过draggable属性启用拖拽,配合dragstart设置数据、dragover阻止默认行为、drop执行放置逻辑,并用dragenter/leave等事件优化交互反馈。
-
AOP在前端可用于日志记录与性能监控,通过函数包装、装饰器或Proxy实现。1.用高阶函数封装日志逻辑;2.利用Axios拦截器自动输出API日志;3.包装路由方法监控页面跳转耗时并上报数据;4.注意避免侵入过强、异常影响主流程及调试复杂度,合理控制采样以保障性能。
-
使用CSS框架如Bootstrap、TailwindCSS和Foundation可有效减少重复代码,通过预定义组件和网格系统提升开发效率与样式一致性,推荐结合BEM等规范扩展自定义样式以增强可维护性。
-
JavaScript是网页的“行动力”来源,负责交互响应、动态更新内容、控制页面元素、与服务器交换数据、构建前端应用,并借助Node.js等拓展至服务端与桌面端。
-
IIFE是定义后立即执行的函数表达式,用于创建独立作用域、避免全局污染;需用括号或运算符强制解析为表达式,支持传参,现代可用模块和块级作用域替代,但老项目、循环绑定索引等场景仍适用。
-
代码分割通过动态import和路由懒加载按需加载模块,减少初始负载;2.TreeShaking剔除未使用代码,需用ES6模块和按需引入;3.压缩混淆借助Terser和Gzip降低文件体积,生产环境禁用sourcemap;4.优化第三方依赖选用轻量库、去重并利用CDN缓存,结合分析工具持续监控包大小。