- 博客(11)
- 收藏
- 关注
原创 模块导出的三种模式
ES6模块系统提供了三种导出模式:默认暴露、分别暴露和统一暴露。默认暴露适用于单一功能模块,每个模块只能导出一个默认值,导入时可自定义名称。分别暴露允许导出多个具名值,适合工具库等需要多功能导出的场景。统一暴露是分别暴露的变体,将所有导出集中声明,提高代码可读性。三种模式各有特点,默认暴露适合组件和单例对象,分别暴露/统一暴露适合API集合和工具库。建议根据模块功能需求选择合适的导出方式,保持代码清晰和可维护性。
2025-07-03 11:23:47
453
原创 前端模拟token
调用CryptoJS.SHA256方法对拼接后的字符串进行哈希处理,SHA-256是一种安全哈希算法,它会将输入的字符串转换为固定长度(256 位)的哈希值,该哈希值即为最终生成的 Token。Token 验证:生成 Token 后,在后续的请求中需要在服务器端对 Token 进行验证,包括检查 Token 的有效性和是否过期。Date.now()返回当前时间的时间戳(单位为毫秒),通过将当前时间戳加上根据失效时间(分钟)换算后的毫秒数,得到 Token 的失效时间戳,用于后续判断 Token 是否过期。
2025-06-25 13:55:18
532
原创 vue+vite项目搭建(以v3为例)
如果你希望在运行npm run dev的时候自动在浏览器中打开应用,可以使用--open选项,两种方法,1.在电脑中创建一个文件夹,在文件夹中打开终端(或是在文件夹路径中输入cmd进如终端)方法一:在package.json文件中修改脚本。方法二:在终端运行项目的时候直接使用。3.之后选择你所需要应用的选项,进入项目中执行。
2025-06-20 15:19:20
399
原创 公共样式全局引入不生效
Vue项目中全局SCSS变量失效问题的解决方案 在Vue+Vite项目中使用SCSS时,直接在main.ts引入公共样式无法使变量和混合器全局生效,必须在组件内单独引入。原因在于:1) JS层面的import无法将SCSS编译特性注入组件作用域;2) scoped样式隔离机制导致全局样式无法自动应用。解决方案是在vite.config.ts中配置css.preprocessorOptions.scss.additionalData,自动将base.scss注入每个组件的SCSS编译过程。这样既保持了样式隔离
2025-06-20 14:29:05
596
原创 vue3+Pinia开发项目刷新导致页面空白的问题
动态路由刷新丢失问题的核心在于:仅持久化路由数据而未重新执行注入逻辑。Pinia存储的路由配置虽然通过localStorage保存,但刷新后需主动在路由守卫或初始化时调用router.addRoute重新载入。解决方案应包含两个关键步骤:1) 持久化路由数据;2) 应用启动时读取存储数据并重新注入路由系统,同时使用next({...to,replace:true})强制更新路由状态。是否需持久化应根据具体业务场景评估。(149字)
2025-06-20 11:09:50
480
原创 函数截流、防抖方法封装
每次触发事件的时候,如果定时器timer存在就清除timer,在启动一个新的定时器,延迟delay之后再执行callback函数,如果在这段时间内再次触发事件,定时器会被清除并重新启动,只有在不触发事件后,定时器才会到达结束点并开始执行callback函数。其工作原理是:当需要截流的函数第一次执行的时候会触发当前的截流函数,同时函数会启动一个定时器,时长是wait指定的时间,在等待时间内,无论函数触发多少次都不会再次被执行,直到时间结束,定时器会被重置,函数可以再次被执行。delay:防抖延迟的时间。
2024-08-22 14:45:51
497
原创 H5做物理返回按键拦截(只拦截一次)
浏览器没有提供用户退出事件的监听方法,因此我们可以通过history.pushState()的方法往浏览器中插一条历史记录,再通过window.addEventListener('popstate',()=>{})对浏览器的历史记录进行监听。
2023-12-15 18:12:26
1819
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人