装饰器, HTTP请求与Typescript
0. 简单的API封装封装如下API:GET /resource/{id}
Response
200 {
_id: string;
name: string;
}
404;POST /resource
Payload {
name: string;
}
Response
201 {
_id: string;
name: string;
}
403;实现:class Client {
client: AxiosInstance;
constructor (baseUrl: string) {
this.client = axios.create(...
Vue 3 服务端渲染(SSR)终极优化指南
最近在做的项目都需要做SSR优化搜索引擎索引和用户体验.如果只需要优化SEO那就直接挂个白屏屏蔽掉没加载完但是有内容的丑陋网页就行了, 搜索引擎能够抓取数据, 用户以为还在加载.但是如果需要优化用户体验, 那就需要下一些功夫了.这篇教程基于没有使用任何SSR框架(比如nuxt/vite-ssr), 纯手搓的SSR服务端, 其他框架请自行迁移学习, 难度应该不大, 实在不行我们可以改源码(x).0. 简单的SSR服务端核心逻辑如下:import { renderToString } from "@vue/server-render";
const initApp = ...
DIY一个给电脑显示器用的重力感应屏幕旋转装置
买了个能转的显示器当副屏, 然后因为买的太便宜, 没有带旋转感应的(不知道别的有没有). 然后觉得好像不大方便, 就想着写一个脚本, 能够一键切换屏幕旋转状态. 最后配合 MultiMonitorTool 的加载配置文件功能实现了一键切换布局. 我找到了内心的平静. 直到我发现, 这实在是太蠢了. 我每次都要找到脚本在哪, 再双击他切换布局. 于是我找了一个右键菜单编辑器, 把这个脚本放进了桌面的右键菜单里.然后在桌面右键点击两次就能切换旋转状态. 我找到了内心的平静. 直到我发现, 这实在是太蠢了. 为什么不能直接根据实际状态旋转呢? (xDIY 这样一个东西, 大...
Vue 3 中的服务端渲染(SSR)与异步数据获取
为了解决SEO问题, 我们通常会使用SSR.但是Vue的SSR对异步数据的渲染有不少门道, 故开一篇文章简单讲讲.以下内容基于完全使用setup script的情况下讲述.几个基本点:SSR渲染时, 生命周期钩子里只有beforeCreate和created会被触发. 意味着你不能在其他钩子里执行获取数据的逻辑.SSR渲染时, 响应式变量不会被触发更新, 渲染状态以逻辑执行时的数据为准. 意味着如果你使用空数据占位, 等到数据到达时更新数据的做法会在SSR时失效.几个建议:如果你在用响应式变量控制组件的加载状态(isLoading), 替换成Suspense和Async Setup. 因...
联想ThinkBook 2021(或者更早的型号以及其他机型的任意型号) 空闲时自动关闭键盘灯
需要电脑已经安装Lenovo Vantage, 如果按下Fn+空格能够切换键盘灯则已经安装. 仅在ThinkBook 15 2021款测试过, 其他机型可能略有不同甚至不受支持.较旧的机型使用其他方式控制键盘灯, 脚本并未做支持.base_path各个系统可能不同, 可以尝试自行寻找有IdeaNotebookPlugin.dll和Contract_Keyboard.dll的目录.timeout单位为秒.将代码保存为Powershell脚本(.ps1)并设置开机自动启动即可, 无需管理员特权.PowerShell脚本:$base_path = "C:\ProgramData\L...
在骁龙845设备上的Windows里原生运行Minecraft Java Edition
傻逼都知道微软他妈的不会做移动端的东西, 傻逼才他妈会用ARM设备上的Windows搞半天想要原生运行Minecraft就是为了他妈提高效率, 结果他妈的微软没给他妈的845的显卡驱动做他妈的OpenGL, 还得去下载他妈的兼容包转成他妈的DirectX 12才能他妈的跑.典型的跨平台跨了他妈个寂寞.越想越气, 懒得写了.简单说一下:从https://bell-sw.com/pages/downloads/#/java-17-current下载JRE 17, 选择Windows ARM64.从微软商店下载OpenCL™ 和 OpenGL® 兼容包, 安装完成后无需重启.建议使用HMCL启...
C.H.I.P. Archives
NXT Chip是一个仅$9的迷你开发板, 拥有46个GPIO和2.4G Wi-Fi和蓝牙4.0模块, 公司已经跑路, 板子闲鱼可能有售.PocketChip是Chip的带屏幕, 电池及键盘版本.Chip resource mirror: http://chip.jfpossibilities.com/调整电源芯片(AXP209)设置: i2cget 0 0x34 [addr] / i2cset 0 0x34 [addr] [value]解除电池充电电流限制: i2cset -y -f 0 0x34 0x33 0xcf && i2cset -y -f 0 0x34 0x3...
ref<T>() / ref(T) / ref() as Ref<T>? Vue3中的Ref类型体操
Ref的四种写法这是一个ref:const refA = ref();什么都没有, 所以是一个Ref<any>可以这样:refA.value = 123;
refA.value = "123";
refA.value = ["123", 123];这是另一个ref:const refB = ref(1);这时候, 他就是一个Ref<number>, 所以:refB.value = 2;
refB.value = -1;
refB.value = {}; // Error: Type '{}' is not assignabl...
解决JetBrains系工具无法使用WSL 1内Git的问题
WSL 1存在一个奇怪的bug, 最早在2019年就提出来了.在宿主机上通过wsl命令执行容器内命令的结果会被随机截断, 具体参考这里:https://youtrack.jetbrains.com/issue/IDEA-242469这就导致JetBrains系工具无法使用WSL 1内的Git. JetBrains会默认使用宿主机上的Git, 但是如果Git上有commit hook, 就会出现找不到命令的尴尬情况.但是在上面那个链接里提供了一个简单的trick去解决这个问题:在IDE注册表里启用WSL1内Git的支持: 顶栏->帮助->查找操作->注册表(Registr...
在Kindle上运行Minecraft服务器
警告本教程所使用的Java版本为8u73, 在此版本的Java上未默认禁止远程代码加载, 可能会导致Log4J远程代码执行漏洞被利用请确保您使用的是最新版本的Spigot或者Paper服务端, 或者避免将服务器暴露在不信任的环境.众所周知, Kindle是一个水墨屏的电子阅读器.但是, 他有Shell.所以也能拿来开服.png今天的受害者主角是一块Kindle Paperwhite 3, 拥有512M超大运存和一颗高性能的ARMv7处理器, 还有一块4G海量容量的EMMC, 用来开服真是再合适不过了.Kindle Paperwhite 2 及之前的设备只有256M内存(甚至更少), 难以...
为 Windows 10 笔记本电脑添加充电提示音
Android和iOS阵营都有给设备充电的提示音, 但是Windows没有, 感觉少了点仪式感. 所以就想着给Windows也加一个充电提示音.@2021/09/12 更新重新组织了一下代码, 修复了将充满识别成断开电源的问题.\#0 获取充电状态第一反应是通过Windows日志获取电源状态更改事件, 然后用计划任务去播放声音.结果实际测试下来这种方法延迟很高(约5秒), 体验不大行, 所以直接使用VBScript去实现查询.我也不知道为什么要这样实现, 四处搜刮得到的代码, 能用就行.pngSet WMI = GetObject("winmgmts:\\.\root\WMI...