0%

前言

想把markdown的图片都上传到图床上,方便管理引用;刚好手里有个七牛云的对象存储空间,所以就动手接入七牛的SDK,将图片上传到存储空间。

由于单纯地利用客户端的SDK并不能直接上传文件到七牛云空间中,还需要服务端的SDK返回上传token后才能进行上传操作,因此要配置一个服务端接口来获取上传的token

阅读全文 »

前言

关于vertical-align属性被用得最多的场景就是用于对一些内联元素的垂直居中显示,然而事情永远不是我们想的那样简单,给了一个middle就能永远如我们所愿,很多时候基本就会发现图片和文字压根就没有垂直居中对齐……这个时候基本上都不知道为啥,试了一些其他属性值之后如果未果那么基本上就会用上flex布局暴力居中了,我一般就是这样做的  ̄□ ̄||。

阅读全文 »

前言

在掘金上看到一篇文章,大意是如何让a === 1 && a === 2 && a === 3等于true;一开始确实一脸懵逼,不过后来想到了访问修饰符能够解决这个问题,毕竟每访问一次值就加上1就好了;当然,我居然忘了全局变量本身就是window的一个属性这个点,有点疏忽大意。

1
2
3
4
5
6
7
8
let val = 1
Object.defineProperty(window, 'a', {
get () {
return this.val++ // 这里的this就是全局对象window
}
})

console.log(a === 1 && a === 2 && a === 3) // true

不过,我又想到貌似对象还有一些方法能够改变访问到的值;比如:

  • Object.prototype.valueOf()
  • Object.prototype.toString()
  • [Symbol.toPrimitive](hint)

然而,经过折腾发现这三种方法并不像访问修饰符那样的机制,在使用全等号===进行判断时并没有触发:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let a = {
valueOf () {
return 1
},
toString () {
return '2'
},
[Symbol.toPrimitive] () {
return 3
}
}

console.log(a === 1) // false
console.log(a === '2') // false
console.log(a === 3) // false

所以,心里自然就有疑问,这几个方法到底在什么时候才会触发?

阅读全文 »

前言

webGL中,纹理有两种类型,一种是2d的,另一种是天空盒类型的。纹理除了用于给物体表面贴图之外,还可以用于数据传输,十分有用。

纹理数据的来源可以是图片、视频、帧缓冲、canvas甚至还可以是数组,对于着色器而言,纹理就是一类特定的数据,在着色器可以使用取样器来进行数据取样(解析)。

阅读全文 »