AkiraZ's blog

愿键盘的余温传递到更遥远的将来

中文 / English
0%

最近工作中遇到了 nginx 的代理相关问题,于是就了解了一下正向代理 / 反向代理相关内容,简单记一下

概括

在用户使用浏览器访问某网页的情景下

正向代理由客户端配置,对服务器透明,常用于游戏加速等场景

反向代理由服务器配置,对客户端透明,常用于负载均衡、镜像站等场景

阅读全文 »

Base64

之前写过一个方案,是通过转成 blob 再通过 FileReader 实现的,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function(base64) {
// 传进来的是一个 base64 编码的字符串
// 转成二进制
const byteString = atob(base64);
const u8Arr = new Uint8Array(byteString.split('').map(x => x.charCodeAt(0)));
// 生成二进制对象
const blob = new Blob([u8Arr]);
// 使用 reader 读取并下载
const reader = new FileReader();
reader.readAsDataURL(blob);
reader.onload = function(e) {
const a = document.createElement('a');
a.download = e.target.result;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
}
}
阅读全文 »

现象

element-ui 下拉框选项改变后没有立即更新值,而是在下一个选项被选择之后,上一个选项的值才会被更新。查了资料最后确定应该是 Vue 的双向数据绑定上的问题,简单说就是如果直接更改对象,Vue 会对其中所有 key 进行监听,如果直接插入一个 key-value,则不会。

阅读全文 »

功能,在发出上一个请求还没返回的时候,为了防止有连续多个请求返回,对上一个未返回的请求执行取消操作。

底层是 axios 调用了 XMLHttpRequest abort() 操作,取消上一条请求

XMLHttpRequest.abort() - Web API 接口参考 | MDN (mozilla.org)

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const cancel = null;

function request() {
// 检查是否有 cancelToken,有就会执行
// 背后的调用做过处理
// 如果请求已经返回或者已经被取消就不会执行
if (cancel) {
cancel();
}
this.axios({
method: 'get',
url: '...',
// 请求时配置,将 cancelToken 保存至一个全局变量,之后使用
cancelToken: new this.axios.CancelToken(ct => {
token = ct;
})
})
.then(...)
.catch(...);
}

比较容易理解

需求是遇到一个需要保留两位小数,但是出现了预期之外的结果

1
2
(15.845).toFixed(2);		// 15.85
(16.845).toFixed(2); // 16.84

显然是不符合四舍五入规则的,最后的原因在官方文档中已写明,而且根本不是特殊的四舍五入规则的原因。

阅读全文 »

由于最近的业务原因,又开始使用 jQuery,jQuery 的组件虽然丰富,但是感觉不太协调,各管各的,配置起来也比较麻烦,这里先说个遇到的问题

业务场景是这样的,需要在页面显示数量变更的时候自动切换到第一页,但是如果是默认的配置不会有这样的功能。

阅读全文 »

由于项目的原因,最近又开始用 ajax 了,遇到了一个问题就记个笔记。

关于传值

传值到底是传 formDara 还是 JSON 就不谈了,主要看后端需求

阅读全文 »

FormData 对象

Formdata 对象通常放在 post 请求的 data 位置,用来以表单形式提交数据,

1
2
3
4
5
$.ajax({
url: "stash.php",
type: "POST",
data: fd,
});

了解了一下 FormData 对象的一些方法,做个记录

阅读全文 »