记一次动态注册路由导致的路由跳转阻塞问题
背景 最近在写的项目遇到这样一个问题: 页面在登录后,查询一个接口获取租户 ID,然后异步刷新页面,把获取到的租户 ID 挂载在路由路径里 在获取到租户 ID 后的这次刷新页面的路由守卫(Router Guard)的钩子里,代码会动态下载一段脚本并执行,该脚本会调用 Vue Router 的 addRoute() 方法动态注册路由 之后执行路由守卫的 next() 放行本次跳转 问题 问题来了,由于该次刷新页面是异步操作,而且动态下载脚本也是异步操作,有一定的几率,addRoute() 和 next()在同一个 Vue 的刷新任务队列里执行,然后就会发生路由跳转停止,反映到页面上,就是 页面点击登录后不再跳转到主页面 解析 之前有同事跟我说,这是因为 addRoute() 会打断路由跳转,所以我们写了一些代码来规避这件事 总的思路是,在这次异步 next() 之前发送事件通知脚本延后执行 addRoute(),这样做有一个问题,即延后多久执行 addRoute(),我们原先设定的是200ms,但结果是仍然有概率与 next() 运行在同一个任务队列里,再延长这个时间其实也不是最好的办法 ...
从 Vue2 到 Vue3(二):语法
从 Vue2 到 Vue3(二):语法 其实讲了那么多原理,目前还是不知道怎么写 Vue3,由是简单分享一下如何写的问题 起步 这是 Vue2 的写法 1234import Vue from 'vue'import App from './App.vue'new Vue({el: '#app', render: (h) => h(App)}) Vue3 的组合式 API 使用函数而不是声明选项的方式书写 Vue 组件,这也反应在了创建 Vue 实例上,工具方法需要引入,而不是直接挂载在 Vue 类上,这样做也有利于打包时的 TreeShaking 精确判断不必要的代码片段并将之移除 12345import { createApp } from 'vue'import App from './App.vue'const app = createApp(App)app.mount('#app') 选项式到组合式 组合式 API ...
从 Vue2 到 Vue3(一):响应式
近来终于有了实战 Vue3 的机会,我当然不能放过。恰好 UED 提出使用新的依赖于 Vue3 的组件库,一拍即合,开搞。 一开始,确实碰到了许多深坑,有时莫名其妙地报红,有时又莫名其妙地变好了,有时纠结在如何组织代码架构,有时又发现想了很多到头来既不简洁也不完备。原来我一心憧憬的 TypeScript 也就那样,它并不如期待的像 Java 那样可以很好的发挥强类型的优势,而且有时不能像 Java 那样,只考虑架构的易用,还需要考虑性能问题 比如,Java 传递数据时,可以随意重新新建实例承接数据,而运行在性能堪忧的浏览器端的 JavaScript,则没办法这么潇洒的处事,具体到这次的项目中,由于涉及 AI,后端的语言无疑首选 Python,Python 的变量风格是下划线,如user_data,而我当时已经写了多半的 TypeScript 代码,内部组件之间传递的数据,均仍然遵从原有的驼峰命名法,如userData,如果现在全部改变风格,时间和可能出现的报错都是棘手的问题,而如果全部使用一个工具方法,批量地将下划线格式的变量转换成驼峰命名,则会有两个问题,其一无意义的数据转换拖慢了性 ...
一个简单的签到脚本的编写
最近恰好遇到一个需要频繁签到的系统,为了省下周末还要惦记着却还总是忘记签到的精力,宁可花点时间整个自动签到脚本 原本是想用可以打包成可执行文件的 Python 写的!可是吧,好久没写 Python 了,而且需要引用网络网络请求包,想来也不那么简洁,干脆用我的拿手语言 JavaScript 得了 初版,实现自动签到 首先映入眼帘的是网络请求使用 axios,核心其实就两个接口调用,签到 + 登录,首先画出签到流程图如下 封装 axios 对于网络请求部分,一般情况下,认为登录和签到是同一个系统,有统一的请求和响应格式。使用 axios 的实例,可以一次配置,多次使用,于是配置 axios 实例及拦截器如下 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051// sign.jsconst axios = require("axios");const { logError, logInfo } = require(& ...
《授滕王李元婴金州刺史诏》
最近突发奇想喜爱上了唐朝诏书,于是找了篇范文想探究一下它的格式。于是找到这篇《读贞观十八年<授滕王李元婴金州刺史诏>》,把其中的文本对照原石刻的格式用html实现了一下授滕王李元婴金州刺史诏>
再记法喜寺
再记法喜寺 茶道多艰难,一步一汗滴。 林广石龙众,壑险落叶深。 停歇逢农忙,复进遇同行。 青苔染前路,如临深渊冰。 峰回路转处,忽闻大雷音。 缘起自在度,性空无菩提。 业火烧凡体,始悟普覆心。 更有高山净,云卷云舒晴。
vscode: 将文件 eol 的 CRLF 转为 LF 从而避免 git 变更
设置 vscode 行尾符为 lf 在 vscode 的设置文件中加入 1"files.eol": "\n" 禁用git自动转换行尾 12345git config core.autocrlf falsegit rm --cached -r . # 命令结尾有个点git reset --hard
再游西湖
再游西湖 平湖秋色月 断桥残雪缘 柳浪闻莺处 云水光中现 作于2023.3.18
写在抒怀后
当这篇文章发布的时候,我想我已经完全摆脱了她的影响。 我一股脑的把之前写的月信发布出来,只为了能彻底地从我的本地里删去,原本想要坦然地不设密码地发布,但是转念一想,出于对她隐私的考虑,还是设置一下密码为好。 这一年半,我想我其实还是没适应好这段戛然而止的感情,我想我一开始确实是脑子一热分手的,我想我确实还在念想着。 然し、每次深思熟虑之后,还是坚定了自己的判断。我曾怀疑,我是否是在意气用事?答案是,是的,我确实是在意气用事;那么我这么做,结果是对的吗?我想,结果是对的。 曾经我为了见她的家长,准备了一个礼拜。期间跟她沟通了很多细节,甚至最后打印出了简历,写好了发言稿并背下来,也确定了到时候她应该站在我这一侧发言这件事。我一度信心满满。但是当时的她,似乎忧心忡忡,我当时仅仅以为这是紧张而已。 但是为了万事俱备,我还是咨询了很多朋友、甚至我的老板和舅舅。所有人给我的回答总结为一句话就是: 感情的事情最终取决于双方的意思,如果双方无法维系,那么所有的外部因素都只是在推波助澜而已。 见面后的结果还算能够接受,至少她家里没有直接反对。这让我俩陷入一个误判,以为稳了。 但是第二次电话,她告诉我她父 ...
每月家书-210825
87d3d05fda2e4d1bc875ec9580706f1e6c59a0405844df49b60ea1d6d0e1e4609fb405917b14978091af3b03bcbf72bf9632893b39f5b89dff98879249f3147715831e10ccf0be617a0819c65ee1acc1a5c7dfd824f4a254d5ccf54fc4acf0e0702656366689fd0fa0836131e4468cdb48967e07a78c35050a3f03e4c62a34c9551ec2d8de34afafc794da0b7434bc2d840587a11f0fa177b7c2e0805e35494164f0eb74102460770c05a295792d9dfa88a712a375609cecaf228fa4e2aa3eda6ecbb452f18f7960eae9482954ed7c7c30011345b715a0bb333d278359941a4b7e250db672bdaced721d88a43137e9f6def8661ba9493a089 ...
每月家书-210725
87d3d05fda2e4d1bc875ec9580706f1e6c59a0405844df49b60ea1d6d0e1e46027d0d43087b7d244196883c92d1f429b60b975eb8545d999937e59e4977eaa09009fd270b9e1f23d541c1292292508cc696bddc64620554b2ca1bc475065b422efbeb303405cb8cab9f9532ae0aa7b3409f375be9427468110ef229ad2e3240f3b1a76abf5b0704ee78339e29f3a7f574fc2699929c4c76136d3391bf524e49f4cfffcbe65e65f8b0a1d08207f1af14ccefdd306e7495e047e87d8238b48b9c73bb7ed69c36ffc98a812c2097df6542f5127856aea4264dbfd3c2a6f00560ee43a43959eac49cf146b183c4af2d955a3da99edc4024ec870b ...
每月家书-210625
87d3d05fda2e4d1bc875ec9580706f1e6c59a0405844df49b60ea1d6d0e1e460870faca730087d444a8fb670cda08c4482add33d287013f69b2573926895fc861b8870b1b807c36ea44545512a2b52bdd6fec9215180535588c9a21e01fcd7e456c41c5e748668d14731a703dbf2d7ae1053f39de4c236d7b67a6ba2f3a1d4f4ececfbeebd1c4e3eeff530e77d7679188e0a47e8ad022ad67a95ae67aa93cbfea1aa67809b4b6fb7a8ee615da7b31d421f689e42563e86f494e2c093c3df20720388fb84a8054524c222c6b1b5f13cc398ba511166cc0795f6be26204e164b42043448d9369120d98a86cc31497cf2fdda992b8c437387508 ...








Mosu is located on the shore of Mosu Lake, facing the vast Chu Sea, backed by the Yihan Mountains. Thousands of miles of Mosu Desert can not erode the Mosu Valley. Thus the Mosu Empire was established.

