Skip to content

Commit a0a40b5

Browse files
authored
Merge pull request #102 from chufan443/docs/add
2 parents 1ea8d51 + f11753d commit a0a40b5

32 files changed

+716
-791
lines changed

.markdownlint.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ module.exports = {
6666
"style": "---"
6767
},
6868
"MD036": false,
69-
"MD040": false,
69+
"MD040": true,
7070
"MD045": false,
7171
"MD041": false,
7272
"MD042": false,

README.md

Lines changed: 90 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,32 @@
11
<!-- #region quick-start -->
22

3-
>这里是工作、学习、生活中总结的各类文章,`有技术``有生活``有思考`
4-
所有内容会选择性的发表于**微信公众号、博客、掘金、CSDN、Github ,实际内容以本仓库排版、校对为主。**
5-
代码会不定期同步到 **码云**
3+
<div align="center">
4+
5+
<p>
6+
JavaScriptCollection
7+
</p>
8+
<p style="font-size: 30px"><strong>✨【理论+实战】保姆级成长笔记✨</strong></p>
9+
10+
</div>
11+
12+
<div style="text-align: center">
13+
<div>
14+
<a href="https://js-collection.netlify.app" target="_blank" style="padding: 5px">
15+
<img alt="Netlify" src="https://api.netlify.com/api/v1/badges/75a7251a-f873-4aff-b387-6449ca241ef7/deploy-status">
16+
</a>
17+
<a href="https://js-collection.vercel.app" target="_blank" style="padding: 5px">
18+
<img alt="Vercel" src="https://therealsujitk-vercel-badge.vercel.app/?app=408">
19+
</a>
20+
</div>
21+
<div>
22+
<img alt="code size" src="https://img.shields.io/github/languages/code-size/142vip/JavaScriptCollection" style="padding: 5px">
23+
<img alt="release version" src="https://img.shields.io/github/v/release/142vip/JavaScriptCollection" style="padding: 5px">
24+
<img alt="repo size" src="https://img.shields.io/github/repo-size/142vip/JavaScriptCollection" style="padding: 5px">
25+
</div>
26+
</div>
27+
28+
这里是工作、学习、生活中总结的各类文章,`有技术``有生活``有思考`
29+
所有内容会选择性的发表于`微信公众号``掘金``CSDN``Github` ,实际内容以本仓库排版、校对为主。
630

731
## 在线浏览
832

@@ -20,26 +44,24 @@
2044

2145
> 前端技术百花齐放、层出不穷,个人认为要注重广度,学会看官方文档熟练操作即可;
2246
23-
### CSS
47+
### HTML
2448

25-
> 依赖W3CSchool文档和日常整理,主要是对CSS常用操作和基础属性进行整理总结。不会过多深入
49+
### CSS
2650

2751
- CSS开发规范
2852
- 样式属性
2953
- 页面布局
3054
- 移动端适配
3155

32-
##### 基础教程
33-
3456
### JavaScript
3557

36-
##### 快速入门
58+
#### 快速入门
3759

3860
- [简单介绍]()
3961
- [快速了解]()
4062
- [JavasScript开发规范]()
4163

42-
##### 基础教程
64+
#### 基础教程
4365

4466
- [语法与数据结构]()
4567
- [循环与迭代]()
@@ -52,7 +74,7 @@
5274
- [promise对象的使用]()
5375
- [modules模块]()
5476

55-
##### 中级教程
77+
#### 中级教程
5678

5779
- [Promise对象]()
5880
- [async函数]()
@@ -62,7 +84,7 @@
6284
- [JSON.stringify()的三个参数]()
6385
- [ES6、ES7、ES8、ES9、ES10的新特性]()
6486
- [ES2020新特性]()
65-
- [JavaScript 工具函数大全]()
87+
- [工具函数大全]()
6688
- [常用函数方法整理]()
6789

6890
### JQuery
@@ -81,8 +103,6 @@
81103

82104
### Vue.js
83105

84-
> 介绍基础、常用的vue功能,不会很深入的涉及到vue源码及原理
85-
86106
### React
87107

88108
### Nuxt.js
@@ -95,20 +115,19 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
95115

96116
市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架;
97117

98-
- Bootstrap
99-
- LayerUI
100-
- Ant-design-vue
101-
- iView-UI
102-
- VantUI
103-
- Element-UI
118+
#### Bootstrap
104119

105-
## 后端【Node】
120+
#### LayerUI
106121

107-
> 相比前端,作为偏后端的开发者,
108-
>
109-
后端技术的学习则需要稳扎稳打、不断积累整理,在会用、能用、熟练的基础上,更应该学习其中的原理;所以若你为后端开发者,不论Java、Nodejs、Go等技术栈,对待下面将提及的微服务架构、容器技术、服务治理、高可用等都需要努力学习,抓住重点;
110-
>
111-
> 在面试面前,能力是不会说谎的,打铁还需自身硬,加油~
122+
#### Ant-Design-Vue
123+
124+
#### IView-UI
125+
126+
#### Vant-UI
127+
128+
#### Element-UI
129+
130+
## 后端【Node】
112131

113132
### Express框架
114133

@@ -142,87 +161,50 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
142161

143162
### Egg.js框架
144163

145-
#### 入门篇
146-
147-
- [第一部分:Egg框架快速入门]()
148-
- [1.1 基础功能]()
149-
- [1.1.1 接口参数获取]()
150-
- [1.1.2 Egg内置对象]()
151-
- [1.1.3 Config配置]()
152-
- [1.1.4 Egg生命周期]()
153-
- [1.1.5 中间件理解]()
154-
- [1.1.6 Router路由分发]()
155-
- [1.1.7 Controller控制器]()
156-
- [1.1.8 Service服务]()
157-
- [1.1.9 常用插件]()
158-
- [1.2 核心功能]()
159-
- [1.2.1 日志输出]()
160-
- [1.2.2 定时任务]()
161-
- [1.2.2 HttpClient网络请求]()
162-
- [1.2.3 Cookie的基本使用]()
163-
- [1.2.4 Session的基本使用]()
164-
- [1.2.5 统一异常-错误处理]()
165-
- [1.2.6 CSRF防范和XSS攻击]()
166-
- [1.2.7 RESTful API风格]()
167-
- [第二部分:插件开发]()
164+
#### 入门教程
165+
166+
- [接口参数获取]()
167+
- [Egg内置对象]()
168+
- [Config配置]()
169+
- [Egg生命周期]()
170+
- [中间件理解]()
171+
- [Router路由分发]()
172+
- [Controller控制器]()
173+
- [Service服务]()
174+
- [日志输出]()
175+
- [定时任务]()
176+
- [HttpClient网络请求]()
177+
- [Cookie的基本使用]()
178+
- [Session的基本使用]()
179+
- [统一异常-错误处理]()
180+
- [CSRF防范和XSS攻击]()
181+
- [RESTful API风格]()
182+
183+
#### 插件使用
184+
168185
- [2.1 egg-validate参数校验]()
169186
- [2.2 egg-view-ejs页面渲染]()
170187
- [2.3 egg-redis缓存]()
171188
- [2.4 egg-mysql]()
172189
- [2.5 egg-sequelize]()
173190
- [2.6 egg-socket.io即时通讯]()
174191

175-
#### 代码实战篇
176-
177-
##### 常用代码
192+
#### 最佳实践
178193

179194
- [图片前端在线剪辑]()
180195
- [文件上传后台处理]()
181196
- [MD5加密-解密算法]()
182197
- [Egg Jwt加密和校验]()
183198

184-
##### 框架集成
185-
186-
- [手把手搭建基础Egg开发框架]()
187-
188199
### Nest.js框架
189200

190-
> Nestjs框架推崇Typescript语法,友好的兼容express框架,因此在学习Nestjs框架之前,请务必熟悉express框架、Typescript入门
201+
> `Nestjs`框架推崇`Typescript`语法,友好的兼容`Express`框架,因此在学习`Nestjs`框架之前,请务必熟悉`Express`框架、`Typescript`入门
191202
192203
- [核心基础概念]()
193204
- [项目创建初始化入门]()
194205
- [整合swagger快速生成api文档]()
195206
- [接口路由请求传参]()
196207

197-
## 算法
198-
199-
- 算法分析——时间、空间复杂度
200-
201-
### 查找算法
202-
203-
- 顺序查找
204-
- 折半查找
205-
- 分块查找
206-
- B树和B+树
207-
- 散列(Hash)表
208-
- 字符串模式匹配(KPM)
209-
210-
### 排序算法
211-
212-
- 插入排序
213-
- 交换排序
214-
- 选择排序
215-
- 归并排序
216-
- 基数排序
217-
218-
## 开发技巧
219-
220-
### 代码管理
221-
222-
### 代码风格
223-
224-
### 编译工具
225-
226208
## 数据库
227209

228210
> 主讲数据库基础知识,结合node的简单使用,相关的部署方案参照下方的文档
@@ -254,57 +236,42 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
254236
- 简单使用
255237
- Node下的CURD操作、
256238

257-
## 容器相关
239+
### 算法
258240

259-
## 服务部署
260-
261-
### Nginx
262-
263-
- [nginx安装,普通安装 Or Docker搞定?]()
264-
- [手把手nginx基础入门]()
265-
- [反向代理、负载均衡真有那么难吗?]()
266-
- [Nginx SSL证书,从此踏上Https之路]()
267-
268-
### Docker
241+
- 算法分析——时间、空间复杂度
269242

270-
- 我与docker的第一次硬碰硬
271-
- docker操作入门真有那么难吗?
272-
- 这些基础操作指令,你会吗?
273-
- 那些年,我常用的docker指令操作汇总
243+
#### 查找算法
274244

275-
### Docker-Compose
245+
- 顺序查找
246+
- 折半查找
247+
- 分块查找
248+
- B树和B+树
249+
- 散列(Hash)表
250+
- 字符串模式匹配(KPM)
276251

277-
- 听说你装了N次都没搞定?
278-
- 集群启动失败,yaml规范不清楚?
279-
- [我了解的docker-compose都在这里了](https://mp.weixin.qq.com/s/nC4nF51xn61TZlenuUxDog)
252+
#### 排序算法
280253

281-
### Linux下Shell编程
254+
- 插入排序
255+
- 交换排序
256+
- 选择排序
257+
- 归并排序
258+
- 基数排序
282259

283-
- [shell基础整理](https://mp.weixin.qq.com/s/gctrWdB1JEK59_a9tJQSkg)
284-
- [操作mysql数据库]()
285-
- shell操作docker
286-
- 环境变量env
260+
## 开发技巧
287261

288-
## 网关
262+
### 代码管理
289263

290-
### Kong
264+
### 代码风格
291265

292-
- [kong的的基本介绍]()
293-
- [docker下kong的部署]()
294-
- docker-compose搭建kong集群
295-
- 可视化管理界面介绍
266+
### 编译工具
296267

297-
### KongAdmin
268+
## 微服务
298269

299-
- 基本介绍与docker部署
300-
- 简单使用
301-
- 路由管理
270+
### 容器相关
302271

303-
### kong-dashboard
272+
### 服务部署
304273

305-
- docker简单部署
306-
- 路由管理
307-
- 插件介绍
274+
### 网关
308275

309276
## 服务注册|发现
310277

@@ -322,8 +289,6 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
322289
323290
## 消息中间件
324291

325-
>消息队列已经逐渐成为企业IT系统内部通信的核心手段。具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。
326-
327292
### RabbitMQ
328293

329294
### kafka

code/node/javascript/deepCopy.js

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/**
2+
* 深拷贝实现
3+
*/
4+
5+
const obj = {
6+
name: 'xxxx',
7+
test: 'xxx',
8+
// 浅拷贝中,这一层只能拷贝引用
9+
msg: {
10+
name: 'xxx'
11+
},
12+
color: ['pink', 'red']
13+
}
14+
15+
const obj_test = {
16+
17+
}
18+
19+
// 利用函数递归来实现深拷贝
20+
function deepCopy(newObj, oldObj) {
21+
for (const key in oldObj) {
22+
// 判断我们的属性值属于那种数据类型
23+
const item = oldObj[key]
24+
// 判断item是否为数组
25+
if (item instanceof Array) {
26+
newObj[key] = []
27+
deepCopy(newObj[key], item)
28+
// 注意 Array instanceof Object 数组是属于对象的 先过滤
29+
} else if (item instanceof Object) {
30+
// 判断item是否为对象
31+
newObj[key] = {}
32+
deepCopy(newObj[key], item)
33+
} else {
34+
// 判断是否为简单数据类型
35+
newObj[key] = item
36+
}
37+
}
38+
}
39+
40+
deepCopy(obj_test, obj)
41+
// 输出对比
42+
console.log(obj_test, obj)

0 commit comments

Comments
 (0)