漆黑菌的博客

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

小探vue2中的$attrs是如何生成的

缘起 vue2中传递给组件的props,如果不在子组件的props设置中,会被添加到子组件的$attrs 过程 <template> <HelloWorld :test123="'test233'" :test233="'1234'" v-bind="{ test233: '123' }" /> </template> template在2....

新版chrome使用新版安卓媒体选择器处理HEIC问题记录and如何科学处理移动端HEIC图片

问题 新版chrome在部分新版安卓(13及以上)灰度了新版图片选择器。可参考https://www.androidcentral.com/apps-software/android-13-photo-picker-chrome-105 在此种模式下浏览器选择图片即使设置了accept为jpeg+png,也可以选择heic。并且会将heic后缀改成accept中设置的格式,但是编码并没有...

小探vue2中的动态组件

缘起 当前vue2项目中存在jsx和template混用的情况。发现可以通过 <component :is="{ render: $slots.default }" /> 向component is中传递一个有render属性的render函数在template中渲染jsx生成的组件。 总结 当向is中传入object时,vue2会调用vue.extend创建...

写给自己看的postcss-preset-env配置攻略

默认安装 安装postcss-preset-env,并添加配置文件。按照文档来就可以。 启用有副作用插件 本次想要降级has选择器,这是一个有副作用的插件,默认不会开启,并且需要手动映入js。 在配置文件中直接写好’css-has-pseudo’: {}, 在需要降级的地方引入import cssHasPseudo from ‘css-has-pseudo/browser’...

写给自己看的lint规则

依赖 基于vue-cli+Airbnb规则+typescript生成模版,加入eslint-plugin-import、eslint-plugin-jsonc和eslint-plugin-lodash。eslint-plugin-lodash可以通过lodash/import-scope提示使用import functionName from ‘lodash/functionName’ 的...

利用shared worker实现浏览器关闭全部tab后登出用户

效果 用户在在关闭全部浏览器中的tab页后,清除用户信息。传统实现遇到的新问题。 把用户信息塞到没有过期时间的cookie中。现代浏览器有个会话保持功能,打开后无过期时间cookie并不会自动清空。 把用户信息塞入sessionStorage。现代浏览器有个新安全策列,通过a标签直接打开的tab不共享sessionStorage。导致新开页丢失用户登录信息。 如何share...

qiankun webpack-hot-reload 失效

依赖版本 新版webpack-dev-server(4.8.1)获取更新数据方式是通过fetch获取一个xxxxx-.hot-update.json/js的文件来更新,所以如果因为fetch等问题导致无法获取文件的话,hot reload会失效。 dev server CORS qiankun中父应用需要使用fetch拉取子应用的数据,但是子应用在开发时不在同一端口,有跨域问题,所以需要设...

如何交付一个带有nginx+brotli的前端镜像

啥是brotli 一种比gzip效率更高的新压缩格式。在Chrome>=50、Firefox>=44等浏览器上支持(详情见“brotli” | Can I use),在现在这个时间点(2022年)已经有了广泛的支持,而且浏览器在请求时会告诉服务器自己支持的压缩格式,老浏览器可以很方便的回落到gzip,可以说没啥理由不上。 nginx+brotli的docker镜像 gzip在n...

一些字体渲染的总结

编写一个够用的body默认样式 body { font-family: 'Nunito', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', '微软雅黑', Arial, sans-serif; font-weight: 400; font-size: 13px; // Fixme 用于覆盖extend文档站中...

单vue技术栈+qiankun全局状态管理

vue2+qiankun+vuex全局状态管理 基于他人项目改造的,有用的部分是main + app-vue-history + app-vue-history2。项目链接:https://github.com/DarknessChaser/qiankun-global-test vue3+qiankun+pinia全局状态管理 基于他人项目改造的,有用的部分是main + huge-sp...