漆黑菌的博客

也许面向工资编程才是先进生产力的发展方向...

探究下 vue 中的 expose

缘起 在网络上发现了一种通过 expose 来实现组件封装的方法见vue组件二次封装-究极版。例子是 vue3 的,想知道 vue2.7 中是否也可以使用。 总结 经过测试发现,透传 props events slots 和正确设置 type 是可以的,但是需要注意以下几点: vue2.7 中的动态组件不支持 is 直接传入 h 函数。加上 vue2.x 中传递 slot/scope...

写给自己看的 Mac 提效软件

在日常的开发与工作中,Mac 上有一些高效且实用的软件,可以大大提升生产力。这里整理了一些我常用的工具,供大家参考。 1. Sourcetree — 代码管理工具 Sourcetree 是一款免费的 Git 和 Mercurial 图形化客户端。 可视化管理分支与提交历史 支持多种 Git 工作流 对新手和不想频繁敲命令行的开发者非常友好 2. uTools — 效率...

记一次类 ChatGPT 的网页模块开发

记一次类 ChatGPT 的网页模块开发 这次做的是一个“部分依赖 LLM 的类 ChatGPT 网页”。大部分内容还是传统接口提供,小部分走LLM,但是在页面表现上要有AI感。 大致工作内容 流式文字输出 依赖长时间接口内容“可中断、可恢复” 使用了SSE,同时准备好降级到轮询。 在成本控制上做了些许优化。 消息模型:按组件拼接,并且可以阻塞等待 背景:类似c...

window.close注意事项

现象 直接使用window.close()在一些情况下会触发Scripts may close only the windows that were opened by them.导致关闭失败。正常通过链接跳转或者新tab装了插件通过地址栏打开,都不会触发。但是如果在无痕中,没有tab插件直接在地址栏中输入后回车,就会触发限制导致tab无法被js关闭。

如何基于webpack配置可以使用tsx的vue2.7项目

引入ts支持 安装相关依赖typescript和ts-loader和vue-tsc。 vs code选手记得安装相关volar插件。 配置tsconfig.json。同时参考了vue cli创建的项目和create-vue的ts配置。主要起作用的还是vue cli的配置,直接复制,然后加上 "vueCompilerOptions": { "target": 2.7 } 允许使用j...

小探vue中的$slots和$scopedSlots

缘起 vue2.6.11的项目代码中试图通过$slots.slotName判断是否传递了自定义slot发现行为不合预期。 总结 在vue2.6和vue2.7中使用$scopedSlots,在vue3中使用$slots。 vue中的 useSlots vue2.7 见vm其实也是指向了$scopedSlots vue3 见slots: instance.slots,指向了slots ...

小探vue2.6和2.7和3中的setup的初始化时机

缘起 vue2.6.11 + composition-api setup中无法通过proxy获取computed中定义的值。 2.6.14 + composition-api 行为 从composition-api代码中initSetup(vm, vm.$props)我们可以看到,在beforeCreate时会把initSetup挂在初始化data之前。 从2.6.14的代码中ini...

写给自己看快速reset css代码片段

button .base-button { all: unset; cursor: pointer; box-sizing: border-box; appearance: none; -webkit-text-fill-color: currentcolor; // iOS 12以下文字显示会因为all: unset不能正确显示为color &:disa...

写给自己看的品字形布局main右侧内容和左侧滚动联动配置

描述 一种2023年很流行的页面布局方式。bilibili的视频播放页。知乎的文章页都是类似设计。类似品字大致可以分为 最顶部的内容 body主内容,分为左右两侧。 当页面主体部分小于一屏高度时,页面看上去和正常流式布局类似。 当页面主体部分大于一屏高度时。 如果是页面主体左侧大于一屏高度。当页面主体右侧滚动到浏览器顶部时会吸顶,并随之滚动。当主体右侧内容滚动到底时,吸...

小探vue2中为什么使用transition过渡元素时,元素不能show和key同时存在

缘起 如果有代码 <transition mode="out-in" > <div v-show="true" :key="game" class="tab-body-item" /> </transition> 在game值变化后,元素div.tab-body-ite...