Bootstrap
博客内容搜索
Kaysama's Blog

async、await的实现原理

一、JavaScript 异步编程回顾

由于 JavaScript 是单线程执行模型,因此必须支持异步编程才能提高运行效率。异步编程的语法目标是让异步过程写起来像同步过程。

  1. 回调函数

    回调函数,就是把任务的第二段单独写在一个函数里面,等到重新执行这个任务的时候,就直接调用这个函数。

    1
    2
    3
    4
    5
    6
    7
    8
    const fs = require('fs') 
    fs.readFile('/etc/passwd', (err, data) => {
    if (err) {
    console.error(err)
    return
    }
    console.log(data.toString())
    })
继续阅读

PixiJS+自定义Shader实现不规则图片扫光效果

本来打算用原生WebGL来实现,但是水平有限,关于WebGL能讲的干货并不多,而且繁琐的准备工作对没有了解过的小伙伴也过于枯燥乏味,于是干脆用已经封装好大部分底层细节的PixiJS来实现了。

相信很多前端在做一些活动页面的时候都碰到过扫光效果的需求,有很多dom+css的奇技淫巧可以做到,比如

继续阅读

原神任意元素转换大法(误

标题党勿怪 ε=ε=ε=┌(; ・_・)┘

svg形变动画以前有翻译过一篇文章(SVG形变动画),不过那里的动画实现方式是 SMIL 和 css,两者的兼容性和局限性都不小,前者需要你有一定的设计能力,使用相同的锚点数来对图形进行转换,而且有被新标准废弃的趋势,后者有前面的所有缺点,唯二的优势是写起来清晰简洁,而且正在被浏览器逐步支持。

继续阅读

Vite+WebSocket+Express+quill跨端内容同步

最近经常碰到一种场景,手机复制粘贴一些文本等内容到电脑,或者电脑发到手机。

实现这个功能的方案很多,但是基本上要么是手机连上电脑,要么两端各安装一个什么应用,局限性还是很大。于是就有了一个想法,直接自己搞一个类似聊天室的网站不就好了,手机扫个码就能打开,电脑上只要有浏览器就行。websocket把编辑的内容实时同步到服务器,多方便😁——emmm….啊这,这不就是谷歌文档么😅。。。那就当自己玩玩吧,技多不压身嘛~而且自己搭的服务器,这些简单的功能也不用搞什么复杂的鉴权,用起来也方便~~

既然明确了目的就是玩,那就玩点新东西好了,首先尝试下vite:

创建vite工程sync-site

1
npm init vite@latest sync-site --template vue
继续阅读

前端实现旗帜飘动效果系列(Ⅴ):pixi.js实现

时隔两年,继续完成这个系列,现在回顾一下两年前的这篇文章 前端实现旗帜飘动效果系列 (Ⅳ):webgl实现 ,发现自己当初对webgl的理解不透彻,产生了很多纰漏,也走了不少歪路,实际上使用shader有更方便的实现方法,新的思路不再需要做复杂的仿射,只需通过简单的三角函数控制片元着色器的采样位置即可。

核心是pixi过滤器PIXI.Filter以及片元着色器。

① PIXI.Filter类可以忽略顶点着色器,因为pixi.js内置了一套默认的顶点着色器,如果传入空,就是用该着色器模板(pixi v5版):

继续阅读

用Spine2D+PIXI来实现可操控的live2D动画

vTuber行业越来越火爆,看着那些形形色色的皮套,忍不住自己实现一遍的冲动,说起2D骨骼动画软件,Spine2D首当其冲。这次就用它来耍一耍。

为啥我不用live2D?毕竟这是日本软件,英语的本地化翻译不知道靠不靠谱,与Spine价格也差不太多,看了一些教程,操作也比较复杂,感觉更倾向于给不熟悉编程的设计人员使用。

继续阅读

X96max+刷slimbox固件(救砖)

为什么要刷slimbox?

  1. 社区热度高,znds上有很多相关帖子,说明刷的人多,不然也不会有这么多去折腾的了;
  2. 官方更新频繁,对于爱高机的人来说,代表着有更多新鲜玩意;
  3. 原厂固件丑,不符合中国人的使用习惯大部分外贸盒子都是小厂,固件调教得都不大行,建议是能刷就都刷;
  4. 外贸盒子刷机方便。不用拆机找卡刷点,直接下载固件使用USB双公头线刷就行,救砖也容易,没啥心智负担
继续阅读

给电子垃圾续命——小米盒子3c刷精简版系统(救砖)

小米盒子3(mdz-16-aa)是2015年上市的,只有1G运存和4G闪存,要是你还升级到了最新的MIUI TV系统,那就是名副其实的电子垃圾,一堆广告,还占了已经不多的容量,新系统反向优化,性能还差。如果想让它焕发新生,就得精简系统。

网上精简系统的方法有很多,第一种是使用adb命令免root卸载,虽然我没试过,但是这个方法并不推荐,没有root过卸载内置的毒瘤应用基本只是清除数据,并不能治本;

第二种方法是先root,然后卸载应用,这种方法虽然可行,但是如果你的系统已经升级了(比如我),就得先降级到可以开启adb的版本,然后使用ROOT精灵等工具来获取root,然后就可以卸载毒瘤应用并安装第三方桌面了。但是我卡在了降级这一步,怎么按红外遥控器都进不了recovery,用了这个博主的方法,使用adb也进不去,不知道是不是手速的问题——遂放弃

继续阅读

人体时钟canvas版

不知道老网民们还记不记得这个魔性的时钟插件:

作为网上冲浪十数载的网虫,不久前看到这个图瞬间破防,直接梦回10年前的QQ空间,感叹一下岁月蹉跎、时光荏苒、青春不在、不胜唏嘘….

( ̄ε(# ̄)☆╰╮( ̄▽ ̄///)

继续阅读

刮刮乐模拟器

刚刚在开车群看到一个好玩的动图

正好新年也快到了,给家人做个“过年红包刮刮乐”的页面,增加点年味不也挺好。

说做就做,这里我们用canvas2D来实现效果,核心的API是 CanvasRenderingContext2D.globalCompositeOperation,主要是用来设定图形绘制前后的图层混合模式,详见该页。简单加上自己的理解翻译下:(ps:source 是将要绘制的图形,destination是指画布上已存在的图形)

继续阅读