Skip to content

Commit

Permalink
前端文件下载方法总结、虚拟列表、Git修改commit
Browse files Browse the repository at this point in the history
  • Loading branch information
hzjzwcu committed Mar 13, 2024
1 parent 21ebd0d commit ddb5f53
Show file tree
Hide file tree
Showing 8 changed files with 615 additions and 20 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

/test.*
node_modules
docs/.vitepress/cache
docs/.vitepress/dist
58 changes: 57 additions & 1 deletion docs/JavaScript/JS基础/数据类型.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,60 @@

直接赋值的字符串字面量不可变,但必要的时候 JS 会把字符串字面量转换成构造形式,也就是一个对象,例如 `'abc'.length` 中的 `'abc'` 会被隐式转换为 `new String('abc')`

同样的事情也发生在数字字面量上,例如 `0.123.toFixed(2)`
同样的事情也发生在数字字面量上,例如 `0.123.toFixed(2)`

## 隐式转换

空数组的转换

```js
console.log(false == []) // true
console.log(false == ![]) // true
```

- 一个布尔值和一个对象进行比较时,会将这两个值转换为数字进行最后的比较,所以 `false == []`

- !会将数值转为布尔值且优先级更高,所以`false == ![]`

JSON.stringify

```js
const name1 = JSON.stringify('fatfish') // => '"fatfish"'
const name2 = 'fatfish'
console.log(name1 === name2) // '"fatfish"' === 'fatfish' => false
```



































Binary file added docs/JavaScript/实战技巧/assets/640.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
407 changes: 407 additions & 0 deletions docs/JavaScript/实战技巧/虚拟列表.md

Large diffs are not rendered by default.

96 changes: 96 additions & 0 deletions docs/JavaScript/工具合集/前端下载文件.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# 前端文件下载方法总结

前端涉及到的文件下载应用场景非常广泛。本文将介绍几种常见的前端文件下载方法,并分析它们的优缺点。

## 1. 使用 `<a>` 标签

通过 `<a>` 标签的 `download` 属性实现文件下载是最简单且常用的方法。

### 示例代码

```html
<a href="http://www.example.com/sample.pdf" download="sample.pdf">下载</a>
```

### 说明

- **优点**:简单易用。
- **缺点**:只能下载同源文件。如果是跨域资源,如图片、音视频等,浏览器会进行预览而非下载。

### 通过 JavaScript 实现

```javascript
const a = document.createElement('a');
a.href = 'http://www.example.com/sample.pdf';
a.download = 'sample.pdf';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
```

## 2. 使用 `window.open()`

通过 `window.open()` 方法也可以实现类似的效果。

### 示例代码

```javascript
window.open('http://www.example.com/sample.pdf', '_blank');
```

### 说明

- **优点**:简单,可以在新标签页中打开链接。
- **缺点**:不能指定下载文件名。某些文件类型(如 `.html``.xml`)会被浏览器直接打开而非下载。

## 3. 使用 `location.href`

通过改变 `location.href` 的值,可以触发浏览器下载或打开文件。

### 示例代码

```javascript
location.href = 'http://www.example.com/sample.pdf';
```

### 说明

- **优点**:简单。
- **缺点**:与 `window.open()` 相似,存在相同的限制和缺点。

## 4. 使用 `XMLHttpRequest`

通过 AJAX 请求文件内容,然后创建一个 Blob 对象来实现下载。

### 示例代码

```javascript
const xhr = new XMLHttpRequest();
xhr.open('GET', 'http://www.example.com/sample.pdf', true);
xhr.responseType = 'blob';

xhr.onload = function () {
if (this.status === 200) {
const blob = new Blob([this.response], { type: 'application/pdf' });
const downloadUrl = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = downloadUrl;
a.download = 'sample.pdf';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(downloadUrl);
}
};

xhr.send();
```

### 说明

- **优点**:可以下载非同源文件,更灵活。
- **缺点**:相对复杂,需要处理 AJAX 请求和 Blob 对象。

## 总结

虽然前端文件下载方法多样,但最终都依赖于浏览器的内置下载机制。选择合适的方法需要根据具体的应用场景和需求来决定。
3 changes: 3 additions & 0 deletions docs/Logs/2024.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# 更新日志


- `2024-03-13` - 前端文件下载方法总结、虚拟列表、Git修改commit

- `2024-03-12` - Script 标签

- `2024-03-11` - 从输入URL到页面展示的过程
Expand Down
19 changes: 2 additions & 17 deletions docs/其他/待归档.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,5 @@
# 待归档

https://mp.weixin.qq.com/s/jfKk-OpO1re32A2TUN8uqw


https://mp.weixin.qq.com/s/B-VpVYsKse4SmA6_eH0jLA

https://mp.weixin.qq.com/s/3nCEeiFD9PVBheT_Wik6wQ

https://mp.weixin.qq.com/s/g_5p-YSIzDtMSjGm5-metA

https://mp.weixin.qq.com/s/h4-66qQlF_O70TOmBmA-RA

https://mp.weixin.qq.com/s/pFN0Bo8N6QBhr52qG4SVlg

https://mp.weixin.qq.com/s/GtY001BjlwT9g2FxwkH9Fg

https://mp.weixin.qq.com/s/hSgbwT4rc_vduZyX9cMggA

https://mp.weixin.qq.com/s/RsQLnSNNxpk1VChqVTAHZA
Expand Down Expand Up @@ -325,9 +310,9 @@ https://mp.weixin.qq.com/s/OBb0zrfGAI6w4ILvT5T5-A

https://mp.weixin.qq.com/s/CjSXdns1URlJ8Yztk0vbtw
**JavaScript 基础**,ES6语法、 script标签 前端模块化整理归档目录

echarts动画实现原理 了解canvas吗 如何实现组件滑动切换效果 对语义化的理解 HTML5有哪些语义化标签
**网络通信**,重点有浏览器缓存、Http2.0、Https通信过程、TCP与UDP、CDN缓存等。简述下 TLS 握手过程

px转其他单位 vue-router两种模式下如何实现的url到组件的映射
**HTML和CSS**,这块被问的内容比较少,重点从布局入手,比如单位、盒模型、定位、响应式布局等知识点。

**前端框架**,框架的底层原理是一定会问的,至少要深入掌握一个前端框架。目前业界内比较流行的框架是 React 和 Vue,React 的知识点有 React diff、生命周期、Fiber 架构、Hooks 等;Vue 的知识点有Vue diff、响应式原理、Vue3.0新特性等。
Expand Down
50 changes: 49 additions & 1 deletion docs/其他/软件工具的使用/GIT命令.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# GIT 命令

## 基础指令

- 创建并切换分支
- `git checkout -b 分支名`
- 回到指定版本
Expand All @@ -20,7 +22,53 @@
- 查询单人提交所有记录
- `git log --author="weisheng" --pretty=tformat: --numstat | awk '{ add += $1; subs += $2; loc += $1 - $2 } END { printf "新增: %s, 移除 %s, 总计: %s\n", add, subs, loc }'`

# Github所需修改的hosts
## 修改commit

### 1. 修改最近一次的提交

如果你只想修改最近的一次提交(例如,你忘记添加一个文件或者提交信息写错了),你可以使用`git commit --amend`命令。这会将当前的工作树的更改合并到上一个提交中。

```bash
# 修改最近一次提交的提交信息
git commit --amend -m "新的提交信息"

# 将忘记添加的文件加入到最近一次的提交中
git add 忘记添加的文件
git commit --amend --no-edit # 使用--no-edit保留之前的提交信息
```

### 2. 修改历史提交

如果需要修改早期的某个提交,可以使用`git rebase`命令进行交互式变基操作。这种方式比较灵活,但如果是已经推送到远程仓库的提交,需要谨慎使用。

```bash
git rebase -i HEAD~N # N是要回退的版本数,例如想要修改倒数第3次提交,N应为3
```

在打开的编辑器中,找到你想要修改的提交前的文字`pick`改为`edit`,然后保存退出。Git会停在那个提交上,此时你可以使用`git commit --amend`修改提交信息,或者做其他修改然后提交。完成修改后,运行:

```bash
git rebase --continue
```

来继续应用余下的提交。

### 3. 修改多个连续提交

使用`git rebase -i`命令,并且将所有想要修改的提交前面的`pick`改为`reword`

### 4.合并多个提交

使用`git rebase -i`命令,并且将所有想要合并的提交前面的`pick`改为`squash`或者简写`s`(保留第一个不变)。

### 注意

- 使用`git rebase`修改历史提交会改变提交的哈希值。如果这些提交已经被推送到了远程仓库,修改后需要强制推送(`git push --force`),这可能会影响其他人的工作。因此,在共享的分支上慎用此操作。
- 在进行任何可能会更改提交历史的操作前,建议先创建一个分支备份,以防不测。



## Github所需修改的hosts

```
140.82.112.3 github.com
Expand Down

0 comments on commit ddb5f53

Please sign in to comment.