- 博客(12)
- 收藏
- 关注
原创 vite构建库如何生成类型声明文件
如果我们构建的前端库没有类型声明文件,当被其他使用typescript的项目引用时,类型提示会很不友好,所以打包库文件时一般需生成对应的类型声明文件。默认生成的类型声明文件和源文件的结构一致,如果想合并成一个,需要添加配置项。vite可以通过vite-plugin-dts插件自动生成类型声明文件。默认情况,生成的类型文件会跟随源文件结构。提供了汇总所有类型到一个文件的能力,只需安装。
2025-06-23 16:22:03
449
原创 vue/cli迁移至rsbuild——vue2项目
2、可以在sass插件中加入替换语法,编译时自动替换。A:rsbuild的plugin-sass不支持/deep/语法,需替换为::v-deep。rebuild内置SWC支持typescript,不需要额外配置相关babel插件。1、在项目业务代码种全局搜索,然后全量替换。Q:项目使用了vue-property-decorator时,装饰器语法不生效。Q:当项目中sass使用了/deep/ 语法时,编译会报错。Q:业务代码中使用了process相关的属性报错。Q:不使用babel时,组件库的按需加载问题。
2025-05-06 15:22:40
1194
原创 js中的位运算及原码、反码和补码
js中整数都是以二进制补码的形式存储,至于为什么是补码形式,后面会有解释。假设以8位二进制表示一个整数(一般是32位和64位,这里为了方便演示使用8位表示)。最高位是符号位,0表示正数,1表示负数。
2025-02-11 17:15:50
1555
原创 关于js对象的引用计数,及为什么循环引用计数无法为0
这段代码执行到return之前的栈内存和堆内存如下图所示:1、为什么数字,字符串等基础类型没有引用计数从上面的示意图中可以看出,数字、字符串等值类型(基本类型)的变量是直接在栈内存中保存变量值的,不存在引用关系。2、对象的引用计数具体是针对什么进行引用计数对于引用类型的变量(如数组、对象、函数等)在栈内存中保存的是一个引用地址,这个地址指向(图中箭头所示)的对象才是变量真正的值,而被指向的对象是保存在堆内存之中。图中的每一个箭头代表一次引用。所以引用计数是针对堆内存中的对象来计算。
2025-02-10 14:28:58
369
原创 关于vue的data是一个函数
那么当component1和component2这两个实例化的组件挂载在同一个页面中时,由于两个组件的data指向同一个引用地址,所以其中一个改变data的属性值,会同步到另一个组件的data,同时也会被另一个的observe捕捉到,引起错误的数据改变或页面显示内容的改变。2、当data是函数时,每次组件实例化都是一个新的函数返回值,所以每个实例的this.data都是一个全新的对象,不会互相影响。当组件在应用中只会存在一个实例时,data可以直接是对象形式。
2025-01-23 15:44:56
168
原创 前端兼容性处理
proxy有一个不完整的polyfill:proxy-polyfill,只实现了部分proxy的方法,而且初始化时对象的属性需要是确定的,类似于Object.defineProperty。vue3由于使用了proxy api,而proxy并没有完全匹配的polyfill,所以当浏览器版本不支持proxy时,无法做到兼容。平时我们通过vue-cli创建的项目都默认包含了babel-loader的配置,所以不需要额外处理。是一个 Babel 的插件,它会自动为你的代码添加所需的。
2024-04-12 10:52:06
2053
原创 发版后前端页面更新问题
2、在打开的页面跳转之前未打开过的页面(之前打开过的资源会缓存,如果是spa则js等已在内存中)会因为服务器资源不存在而报错。3、加入版本校验功能(解决第二类问题),具体操作可以前后端统一维护一个版本号,每次发版都新增,接口通过判断版本号是否一致来返回相应信息,前端获取到不一致标识之后主动刷新页面。2、对于spa页面,则可以在index.html加入不缓存的meta标签,确保每次打开都是最新的html文件(解决第一类问题)1、服务器将强缓存改为协商缓存或者不缓存(解决第一类问题)
2023-07-13 19:45:51
1430
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅