一些前端大牛都在学习的github库

电商程序员

共 16955字,需浏览 34分钟

 · 2022-03-05

前端知识比较杂,长时间的工作容易沉浸在业务当中,技术提升有限,这里发现了前端的新大陆,可以帮助小伙伴们巩固基础知识,完善自己的知识体系,欢迎点赞收藏,兄弟们,赶紧干起来吧!

1.JavaScript 算法和数据结构https://github.com/trekhleb/javascript-algorithms


数据结构

数据结构是一种在计算机中组织和存储数据的特殊方式,以便可以有效地访问和修改数据。更准确地说,数据结构是数据值、它们之间的关系以及可应用于数据的功能或操作的集合。

B- 初学者,A- 高级

  • B 链表

  • B 双向链表

  • B 队列

  • B 堆

  • B 哈希表

  • B 堆- 最大和最小堆版本

  • B 优先队列

  • A 特里

  • A 树

    • A 二叉搜索树

    • A AVL 树

    • A 红黑树

    • A 段树- 带有最小/最大/总和范围查询示例

    • A Fenwick 树(二叉索引树)

  • A 图(有向和无向)

  • A 不相交集

  • A 布隆过滤器

算法

算法是如何解决一类问题的明确规范。它是一组精确定义操作序列的规则。

B- 初学者,A- 高级

主题算法

  • 数学

    • B 位操作- 设置/获取/更新/清除位,乘法/除以二,负数等。

    • B Binary Floating Point - 浮点数的二进制表示。

    • B 阶乘

    • B 斐波那契数- 经典和封闭形式的版本

    • B Prime Factors - 使用 Hardy-Ramanujan 定理找到主要因素并计算它们

    • B 素性检验(试除法)

    • B 欧几里得算法- 计算最大公约数 (GCD)

    • B 最小公倍数(LCM)

    • B 埃拉托色尼筛法- 找出任何给定限制的所有素数

    • B 是二的幂- 检查数字是否是二的幂(朴素和按位算法)

    • B 帕斯卡三角

    • B 复数- 复数及其基本运算

    • B 弧度和度数 - 弧度到度数和反向转换

    • B 快速供电

    • B 霍纳方法- 多项式评估

    • B 矩阵- 矩阵和基本矩阵运算(乘法、转置等)

    • B 欧几里得距离- 两点/向量/矩阵之间的距离

    • A 整数分区

    • A 平方根- 牛顿法

    • A Liu Hui π Algorithm - 基于N-gons的近似π计算

    • A 离散傅里叶变换- 将时间函数(信号)分解为构成它的频率

    • B 笛卡尔积- 多组积

    • B Fisher-Yates Shuffle - 有限序列的随机排列

    • A 幂集- 集合的所有子集(按位和回溯解决方案)

    • A 排列(有和没有重复)

    • A 组合(有和没有重复)

    • A 最长公共子序列 (LCS)

    • A 最长递增子序列

    • A 最短公共超序列(SCS)

    • A 背包问题- “0/1”和“未绑定”问题

    • A 最大子阵列- “蛮力”和“动态编程”(Kadane 的)版本

    • A 组合总和- 查找形成特定总和的所有组合

  • 字符串

    • B 汉明距离- 符号不同的位置数

    • B Palindrome - 检查字符串是否反向相同

    • A Levenshtein Distance - 两个序列之间的最小编辑距离

    • A Knuth–Morris–Pratt Algorithm (KMP Algorithm) - 子串搜索(模式匹配)

    • A Z 算法- 子串搜索(模式匹配)

    • A Rabin Karp 算法- 子串搜索

    • A 最长公共子串

    • A 正则表达式匹配

  • 搜索

    • B 线性搜索

    • B 跳转搜索(或块搜索) - 在排序数组中搜索

    • B 二进制搜索- 在排序数组中搜索

    • B 插值搜索- 在均匀分布的排序数组中搜索

  • 排序

    • B 冒泡排序

    • B 选择排序

    • B 插入排序

    • B 堆排序

    • B 合并排序

    • B 快速排序- 就地和非就地实现

    • B 贝壳排序

    • B 计数排序

    • B 基数排序

  • 链表

    • B 直线遍历

    • B 反向遍历

  • 树木

    • B 深度优先搜索(DFS)

    • B 广度优先搜索(BFS)

  • 图表

    • B 深度优先搜索(DFS)

    • B 广度优先搜索(BFS)

    • B Kruskal 算法- 找到加权无向图的最小生成树 (MST)

    • A Dijkstra 算法- 从单个顶点找到到所有图顶点的最短路径

    • A Bellman-Ford 算法- 从单个顶点找到到所有图顶点的最短路径

    • A Floyd-Warshall 算法- 找到所有顶点对之间的最短路径

    • A Detect Cycle - 适用于有向图和无向图(基于 DFS 和不相交集的版本)

    • A Prim 算法- 找到加权无向图的最小生成树 (MST)

    • A 拓扑排序- DFS 方法

    • A 关节点- Tarjan 算法(基于 DFS)

    • A Bridges - 基于 DFS 的算法

    • A 欧拉路径和欧拉回路- Fleury 算法 - 只访问每条边一次

    • A 哈密顿循环- 只访问每个顶点一次

    • A 强连通分量- Kosaraju 算法

    • A 旅行商问题- 访问每个城市并返回起点城市的最短路径

  • 密码学

    • B Polynomial Hash - 基于多项式的滚动哈希函数

    • B Rail Fence Cipher - 一种用于编码消息的转置密码算法

    • B 凯撒密码- 简单替换密码

    • B Hill Cipher - 基于线性代数的替换密码

  • 机器学习

    • B NanoNeuron - 7 个简单的 JS 函数,说明机器如何实际学习(前向/后向传播)

    • B k-NN - k-最近邻分类算法

    • B k-Means - k-Means 聚类算法

  • 图像处理

    • B Seam Carving - 内容感知图像大小调整算法

  • 统计数据

    • B 加权随机- 根据项目的权重从列表中选择随机项目

  • 进化算法

    • A 遗传算法- 遗传算法如何应用于训练自动泊车的示例

  • 未分类

    • B 河内塔

    • B 方阵旋转- 就地算法

    • B Jump Game - 回溯、动态规划(自上而下 + 自下而上)和贪心示例

    • B 唯一路径- 回溯、动态规划和基于帕斯卡三角形的示例

    • B Rain Terraces - 捕获雨水问题(动态编程和蛮力版本)

    • B 递归楼梯- 计算到达顶部的方式数量(4 个解决方案)

    • B 买入卖出股票的最佳时机- 分而治之和一次性示例

    • A N皇后问题

    • A 骑士之旅

Paradigm 算法

算法范式是一种通用方法或方法,它是一类算法设计的基础。它是一种高于算法概念的抽象,就像算法是一种高于计算机程序的抽象一样。

  • 蛮力- 查看所有可能性并选择最佳解决方案

    • B 线性搜索

    • B 雨水梯田- 捕获雨水问题

    • B 递归楼梯- 计算到达顶部的方式数量

    • A 最大子数组

    • A 旅行商问题- 访问每个城市并返回起点城市的最短路径

    • A 离散傅里叶变换- 将时间函数(信号)分解为构成它的频率

  • 贪心——选择当前时间最好的选项,不考虑未来

    • B 跳跃游戏

    • A 未绑定背包问题

    • A Dijkstra 算法- 找到所有图顶点的最短路径

    • A Prim 算法- 找到加权无向图的最小生成树 (MST)

    • A Kruskal 算法- 找到加权无向图的最小生成树 (MST)

  • 分而治之 - 将问题分成更小的部分,然后解决这些部分

    • B 二进制搜索

    • B 河内塔

    • B 帕斯卡三角

    • B 欧几里得算法- 计算最大公约数 (GCD)

    • B 合并排序

    • B 快速排序

    • B 树深度优先搜索(DFS)

    • B 图深度优先搜索(DFS)

    • B 矩阵——生成和遍历不同形状的矩阵

    • B 跳跃游戏

    • B 快速供电

    • B 买入卖出股票的最佳时机- 分而治之和一次性示例

    • A 排列(有和没有重复)

    • A 组合(有和没有重复)

    • A 最大子数组

  • 动态规划- 使用先前找到的子解决方案构建解决方案

    • B 斐波那契数

    • B 跳跃游戏

    • B 独特的路径

    • B 雨水梯田- 捕获雨水问题

    • B 递归楼梯- 计算到达顶部的方式数量

    • B Seam Carving - 内容感知图像大小调整算法

    • A Levenshtein Distance - 两个序列之间的最小编辑距离

    • A 最长公共子序列 (LCS)

    • A 最长公共子串

    • A 最长递增子序列

    • A 最短公共超序列

    • A 0/1 背包问题

    • A 整数分区

    • A 最大子数组

    • A Bellman-Ford 算法- 找到所有图顶点的最短路径

    • A Floyd-Warshall 算法- 找到所有顶点对之间的最短路径

    • A 正则表达式匹配

  • 回溯- 类似于蛮力,尝试生成所有可能的解决方案,但每次生成下一个解决方案时,您都会测试它是否满足所有条件,然后才继续生成后续解决方案。否则,回溯,并继续寻找解决方案的不同路径。通常使用状态空间的 DFS 遍历。

    • B 跳跃游戏

    • B 独特的路径

    • B 幂集- 集合的所有子集

    • A 哈密顿循环- 只访问每个顶点一次

    • A N皇后问题

    • A 骑士之旅

    • A 组合总和- 查找形成特定总和的所有组合

  • Branch & Bound - 记住在回溯搜索的每个阶段找到的最低成本解决方案,并使用迄今为止找到的最低成本解决方案的成本作为问题的最低成本解决方案成本的下限,在为了丢弃成本大于迄今为止找到的最低成本解决方案的部分解决方案。通常 BFS 遍历与状态空间树的 DFS 遍历结合使用。

2.30秒的代码

https://github.com/30-seconds/30-seconds-of-code

这个需要在官网测试代码片段:https://www.30secondsofcode.org/

3.Airbnb JavaScript 风格指南

https://github.com/airbnb/javascript

  1. 类型

  2. 参考

  3. 对象

  4. 数组

  5. 解构

  6. 字符串

  7. 职能

  8. 箭头函数

  9. 类和构造函数

  10. 模块

  11. 迭代器和生成器

  12. 特性

  13. 变量

  14. 吊装

  15. 比较运算符和等式

  16. 控制语句

  17. 注释

  18. 空白

  19. 逗号

  20. 分号

  21. 类型转换和强制

  22. 命名约定

  23. 访问器

  24. 活动

  25. jQuery

  26. ECMAScript 5 兼容性

  27. ECMAScript 6+ (ES 2015+) 样式

  28. 标准库

  29. 测试

  30. 表现

  31. 资源

  32. 在野外

  33. 翻译

  34. JavaScript 样式指南指南

  35. 与我们讨论 JavaScript

  36. 贡献者

  37. 执照

  38. 修正

这个主要讲的就是代码风格,规范。

4.You Don't Know JS Yet (book series) - 第 2 版】

https://github.com/getify/You-Dont-Know-JS

这是一系列深入探讨 JavaScript 语言核心机制的书籍。


第一版:https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/README.md

这个比较锻炼自己的js核心能力。

5.什么他妈的JavaScript?

https://github.com/denysdovhan/wtfjs

  • 💪🏻动机

  • ✍🏻 符号

  • 👀例子

    • []是平等的![]

    • true不相等![],但也不[]相等

    • 真就是假

    • 香蕉

    • NaN不是一个NaN

    • Object.is()===奇怪的案例

    • 这是一个失败

    • []是真实的,但不是true

    • null是假的,但不是false

    • document.all是一个对象,但它是未定义的

    • 最小值大于零

    • 函数不是函数

    • 添加数组

    • 数组中的尾随逗号

    • 数组相等是个怪物

    • undefinedNumber

    • parseInt是个坏人

    • 数学truefalse

    • HTML 注释在 JavaScript 中有效

    • NaN不是一个号码

    • []并且null是对象

    • 神奇地增加数字

    • 精度0.1 + 0.2

    • 修补号码

    • 三个数字的比较

    • 有趣的数学

    • 添加正则表达式

    • 字符串不是String

    • 使用反引号调用函数

    • 呼叫呼叫呼叫

    • 一个constructor属性

    • 对象作为对象属性的键

    • 访问原型__proto__

    • `${{Object}}`

    • 使用默认值解构

    • 点和传播

    • 标签

    • 嵌套标签

    • 阴险try..catch

    • 这是多重继承吗?

    • 产生自身的生成器

    • 一类类

    • 不可强制对象

    • 棘手的箭头函数

    • 箭头函数不能是构造函数

    • arguments和箭头函数

    • 棘手的回报

    • 在对象上链接分配

    • 使用数组访问对象属性

    • 空和关系运算符

    • Number.toFixed()显示不同的数字

    • Math.max()少于Math.min()

    • 比较null_0

    • 相同的变量重新声明

    • 默认行为 Array.prototype.sort()

    • resolve() 不会返回 Promise 实例

    • {}{}未定义

    • min大于max

    • arguments捆绑

    • alert来自地狱

    • 无限超时

    • 一个setTimeout对象

    • 双点

    • 额外的新鲜感

    • 为什么你应该使用分号

    • 用空格分割字符串

    • 字符串化的字符串

    • 数字的非严格比较true

这个列表的主要目标是收集一些疯狂的例子,并在可能的情况下解释它们是如何工作的。只是因为学习我们以前不知道的东西很有趣。

如果您是初学者,可以使用这些笔记来更深入地了解 JavaScript。我希望这些笔记能激励你花更多的时间阅读规范。

如果您是专业的开发人员,您可以将这些示例视为我们心爱的 JavaScript 的所有怪癖和意想不到的优势的绝佳参考。

无论如何,请阅读此内容。你可能会找到新的东西。

6.正确的学习JavaScript

https://github.com/braziljs/js-the-right-way

关于 JS 最佳实践、公认的编码标准和 Web 链接的易于阅读的快速参考

7.JavaScript 进阶问题列表

https://github.com/lydiahallie/javascript-questions

从基础到高级:测试您对 JavaScript 的了解程度,更新您的知识,或准备您的编码面试!

8. 干净的代码javascript

https://github.com/ryanmcdermott/clean-code-javascript

  1. 介绍

  2. 变量

  3. 职能

  4. 对象和数据结构

  5. 课程

  6. 坚硬的

  7. 测试

  8. 并发

  9. 错误处理

  10. 格式化

  11. 注释

  12. 翻译

适用于 JavaScript 的清洁代码概念

9.每个 JavaScript 开发人员都应该知道的 33 个概念

https://github.com/leonardomso/33-js-concepts

  1. 调用堆栈

  2. 原始类型

  3. 值类型和引用类型

  4. 隐式、显式、标称、结构化和鸭子类型

  5. == vs === vs typeof

  6. 函数作用域、块作用域和词法作用域

  7. 表达式与语句

  8. IIFE、模块和命名空间

  9. 消息队列和事件循环

  10. setTimeout、setInterval 和 requestAnimationFrame

  11. JavaScript 引擎

  12. 位运算符、类型数组和数组缓冲区

  13. DOM 和布局树

  14. 工厂和班级

  15. this,调用,应用和绑定

  16. new、构造函数、instanceof 和 Instances

  17. 原型继承和原型链

  18. Object.create 和 Object.assign

  19. 映射,减少,过滤

  20. 纯函数、副作用、状态突变和事件传播

  21. 闭包

  22. 高阶函数

  23. 递归

  24. 集合和生成器

  25. 承诺

  26. 异步/等待

  27. 数据结构

  28. 昂贵的操作和大 O 表示法

  29. 算法

  30. 继承、多态和代码重用

  31. 设计模式

  32. 部分应用、Currying、Compose 和 Pipe

  33. 清洁代码

每个开发人员都应该知道的 33 个 JavaScript 概念。

10.ES6 人类版

https://github.com/metagrover/ES6-for-humans

  • let,const和块作用域

  • 箭头函数

  • 默认函数参数

  • 扩展/休息运算符

  • 对象文字扩展

  • 八进制和二进制字面量

  • 数组和对象解构

  • 超级对象

  • 模板文字和分隔符

  • for...of vs for...in

  • 地图和弱地图

  • 集和弱集

  • ES6 中的类

  • 象征

  • 迭代器

  • 发电机

  • 承诺


编写 ES6 的 kickstarter 指南

11.很棒的 JavaScript

一组很棒的浏览器端JavaScript库、资源和闪亮的东西。

  • 很棒的 JavaScript

    • 代码高亮

    • 加载状态

    • 验证

    • 键盘包装

    • 旅游和指南

    • 通知

    • 滑块

    • 范围滑块

    • 表单小部件

    • 提示

    • 模态和弹出窗口

    • 滚动

    • 菜单

    • 表格/网格

    • 构架

    • 样板

    • 图片

    • 文件

    • 函数式编程

    • 反应式编程

    • 数据结构

    • 日期

    • 细绳

    • 数字

    • 贮存

    • 颜色

    • I18n 和 L10n

    • 控制流

    • 路由

    • 安全

    • 日志

    • 正则表达式

    • 媒体

    • 语音控制

    • API

    • 流媒体

    • 视觉检测

    • 浏览器检测

    • 操作系统

    • 基准

    • 机器学习

    • 时间线

    • 电子表格

    • 包管理器

    • 组件管理

    • 装载机

    • 打包机

    • 类型检查器

    • 测试框架

    • 质量检查工具

    • MVC 框架和库

    • 节点驱动的 CMS 框架

    • 模板引擎

    • 文章/帖子

    • 数据可视化

    • 编辑

    • 文档

    • 实用程序

    • 用户界面

    • 手势

    • 地图

    • 排版

    • 动画

    • 图像处理

    • ES6

    • 发电机

    • 全文搜索

    • SDK

    • 杂项

    • 播客

12.现代 JavaScript 备忘单

https://github.com/mbeaudru/modern-js-cheatsheet

本指南的目的不是从头开始教你 JavaScript,而是帮助具有基本知识的开发人员,他们可能因为使用的 JavaScript 概念而难以熟悉现代代码库(或者比如说学习 React)。

  • 现代 JavaScript 备忘单

    • 范围

    • 可变突变

    • 变量声明:var、const、let

    • 箭头函数

    • 函数默认参数值

    • 解构对象和数组

    • 数组方法 - map / filter / reduce

    • 扩展运算符“...”

    • 对象属性简写

    • 承诺

    • 模板文字

    • 标记的模板文字

    • 进口/出口

    • JavaScript这个

    • 班级

    • 扩展和超级关键字

    • 异步等待

    • 真/假

    • 变形/变态

    • 发电机

    • 静态方法

    • 简短说明

    • 示例代码

    • 详细解释

    • 外部资源

    • 简洁

    • 这个参考

    • 示例代码

    • 详细解释

    • 有用的资源

    • 外部资源

    • 示例代码说明

    • 有用的资源

    • Array.prototype.map()

    • Array.prototype.filter()

    • Array.prototype.reduce()

    • Array.prototype.find()

    • 示例代码

    • 解释

    • 外部资源

    • 在可迭代对象中(如数组)

    • 函数休息参数

    • 对象属性传播

    • 示例代码

    • 解释

    • 外部资源

    • 解释

    • 外部资源

    • 创造承诺

    • Promise 处理程序的使用

    • 示例代码

    • 解释

    • 外部资源

    • 示例代码

    • 外部资源

    • 外部资源

    • 命名导出

    • 默认导入/导出

    • 示例代码说明

    • 外部资源

    • 外部资源

    • 样品

    • 外部资源

    • 示例代码

    • 外部资源

    • 示例代码

    • 示例代码说明

    • 错误处理

    • 外部资源

    • 外部资源

    • 变形

    • 变质现象

    • 外部资源

    • 外部资源

    • 从静态方法调用其他静态方法

    • 从非静态方法调用静态方法

    • 简短说明

    • 示例代码

    • 详细说明

    • 外部资源

    • 动机

    • 补充资源

    • 介绍

    • 目录

    • 观念

    • 词汇表

13.JS 提示

https://github.com/loverajoel/jstips

  • 4 -通过更改的道具和状态检查使您的页面重新呈现的原因

  • 73 -没有副作用的哈希映射

  • 72 -冒险家反应指南(上)

  • 71 - VueJS,VueJS 如何在数据绑定中进行复制更新替换

  • 70 -挑选和拒绝对象属性

  • 69 -增强 React 组件,组合

  • 68 -为什么你应该在相等比较中使用 Object.is()

  • 67 - JS 中的递归、迭代和尾调用

  • 66 -状态到道具映射与内存

  • 65 -点击快速调试

  • 64 - 3 阵列黑客

  • 63 -使用 Websocket 超时

  • 62 -防止在 AngularJs 中创建不需要的范围

  • 61 -将对象绑定到函数

  • 60 -三个有用的技巧

  • 59 - ES6,var vs let

  • 58 -函数式编程中的中断或继续循环

  • 57 - JS 中的逗号运算符

  • 56 -复制到剪贴板

  • 55 -使用数组创建一个简单的循环

  • 54 -如何在函数中使用可选参数(带有可选回调)

  • 53 -获取文件扩展名

  • 52 -使用“新”运算符返回值

  • 51 - DOM 事件监听变得容易

  • 50 -有用的控制台日志记录技巧

  • 49 -提取 Unix 时间戳的最简单方法

  • 48 -减少内置函数的使用

  • 47 -基础:声明

  • 46 -在纯 JS 中检测文档就绪

  • 45 -计算数组的最大值/最小值

  • 44 -了解传递机制

  • 43 -在函数参数中使用解构

  • 42 -防止不适用的攻击

  • 41 -数组平均值和中位数

  • 40 -使用 JSON.stringify

  • 39 -高级属性

  • 38 -展平多维数组

  • 37 -对数组进行重复数据删除

  • 36 -观察扩展中的 DOM 变化

  • 35 -赋值运算符

  • 34 -实现异步循环

  • 33 -使用一行轻松创建范围 0...N

  • 32 -Map()救援:为对象属性添加顺序

  • 31 -避免修改或传递arguments给其他函数——它会扼杀优化

  • 30 -将真/假值转换为布尔值

  • 29 -通过记忆加速递归函数

  • 28 -柯里化与部分应用

  • 27 -短路评估

  • 26 -过滤和排序字符串列表

  • 25 -使用立即调用的函数表达式

  • 24 -使用===代替==

  • 23 -转换为数字的快速方法

  • 22 -清空数组

  • 21 -随机排列数组

  • 20 -返回对象以启用函数链接

  • 19 -安全字符串连接

  • 18 -截断快速(但有风险)的方式

  • 17 - Node.js:如果模块不是“必需的”,则运行它

  • 16 -将参数传递给回调函数

  • 15 -使用包含子句的更简单的方法indexOf

  • 14 -胖箭头函数#ES6

  • 13 -测量代码块的性能

  • 12 - ES6 函数中的伪强制参数 #ES6

  • 11 -吊装

  • 10 -检查属性是否在对象中

  • 09 -模板字符串

  • 08 -将节点列表转换为数组

  • 07 - “使用严格”并变得懒惰

  • 06 -为数组和单个元素编写单个方法

  • 05 -和之间的差异undefinednull

  • 04 -对带有重音字符的字符串进行排序

  • 03 -改进嵌套条件

  • 02 - ReactJS - 子组件中的键很重要

  • 01 - AngularJS:$digestvs$apply

  • 00 -在数组中插入项目

这是一个很棒的项目,关于简短而有用的 JavaScript 技巧,可让您改进代码编写。在不到 2 分钟的时间内,您将能够阅读有关性能、约定、技巧、面试问题以及这门令人敬畏的语言的未来为我们提供的所有项目。

14.从零开始的 JavaScript 堆栈

https://github.com/verekia/js-stack-from-scratch

01 - 节点,纱线,package.json

02 - Babel、ES6、ESLint、Flow、Jest、Husky

03 - 快递,Nodemon,PM2

04 - Webpack、React、HMR

05 - Redux,不可变,获取

06 - React 路由器,服务器端渲染,头盔

07 - Socket.IO

08 - 引导,JSS

09 - Travis,工作服,Heroku

这是组装 JavaScript 堆栈的直截了当的指南。它需要一些通用的编程知识和 JavaScript 基础知识。它侧重于将工具连接在一起,并为您提供每个工具的最简单示例您可以将本教程视为从头开始编写自己的样板的一种方式


15.很棒的 JavaScript 项目

https://github.com/Vishal-raj-1/Awesome-JavaScript-Projects


Awesome Javscript Projects 网站包含许多很棒的 Vanilla Javascript 项目,其中每个项目都会教你一些新的和重要的 javscript 概念。它包括功能组件、类组件、数学对象、箭头函数、API 等概念。

16.JavaScript30

https://github.com/wesbos/JavaScript30

初学者文件 + JavaScript 30 天挑战的完整解决方案。

17.项目指南

https://github.com/elsewhencode/project-guidelines

  • 吉特

    • 一些 Git 规则

    • Git 工作流程

    • 编写好的提交信息

  • 文档

  • 环境

    • 一致的开发环境

    • 一致的依赖关系

  • 依赖项

  • 测试

  • 结构和命名

  • 代码风格

    • 一些代码风格指南

    • 执行代码风格标准

  • 日志记录

  • API

    • API设计

    • API 安全性

    • API 文档

虽然开发一个新项目对你来说就像在一片绿地上滚动,但对其他人来说,维护它是一个潜在的黑暗扭曲的噩梦。下面是我们发现、编写和收集的指南列表,这些指南(我们认为)在elsewhen的大多数 JavaScript 项目中都非常有效。

18.Node.js 最佳实践

https://github.com/goldbergyoni/nodebestpractices





一、项目结构实践(五)2.错误处理实践(12)3.代码风格实践(12)4. 测试和整体质量实践 (13)5. 走向生产实践 (19)6. 安全实践 (25)7. 性能实践(二)(Work In Progress️✍️)8. Docker 实践(15)


这个存储库是对 Node.js 最佳实践的顶级内容以及合作者在此撰写的内容的总结和整理

19.JavaScript 和 Node.js 测试最佳实践


https://github.com/goldbergyoni/javascript-testing-best-practices

本指南可以将您的测试技能提升到一个新的水平

20.JavaScript 面试问答

https://github.com/sudheerj/javascript-interview-questions

1在 JavaScript 中创建对象的可能方式有哪些
2什么是原型链
3调用、应用和绑定有什么区别
4什么是 JSON 及其常用操作
5数组切片方法的目的是什么
6数组拼接方法的目的是什么
7切片和拼接有什么区别
8你如何比较对象和地图
9== 和 === 运算符有什么区别
10什么是 lambda 或箭头函数
11什么是一级函数
12什么是一阶函数
13什么是高阶函数
14什么是一元函数
15什么是柯里化函数
16什么是纯函数
17let 关键字的作用是什么
18let 和 var 有什么区别
19选择名称let作为关键字的原因是什么
20如何在 switch 块中重新声明变量而不会出错
21什么是时间死区
22什么是 IIFE(立即调用函数表达式)
23您如何在 JavaScript 中解码或编码 URL?
24什么是备忘
25什么是吊装
26ES6 中的类是什么
27什么是闭包
28什么是模块
29为什么需要模块
30javascript中的作用域是什么
31什么是服务人员
32如何使用 service worker 操作 DOM
33如何在 service worker 重启时重用信息
34什么是索引数据库
35什么是网络存储
36什么是发布消息
37什么是饼干
38为什么需要 Cookie
39cookie 中有哪些选项
40如何删除 cookie
41cookie、本地存储和会话存储有什么区别
42localStorage 和 sessionStorage 的主要区别是什么
43您如何访问网络存储
44会话存储上可用的方法有哪些
45什么是存储事件及其事件处理程序
46为什么需要网络存储
47你如何检查网络存储浏览器支持
48你如何检查网络工作者浏览器支持
49举个 web worker 的例子
50webworkers对DOM有什么限制
51什么是承诺
52为什么需要承诺
53承诺的三种状态是什么
54什么是回调函数
55为什么我们需要回调
56什么是回调地狱
57什么是服务器发送事件
58您如何接收服务器发送的事件通知
59如何检查浏览器对服务器发送事件的支持
60服务器发送的事件有哪些可用的事件
61承诺的主要规则是什么
62什么是回调中的回调
63什么是承诺链
64什么是promise.all
65承诺中比赛方法的目的是什么
66什么是javascript中的严格模式
67为什么需要严格模式
68你如何声明严格模式
69双感叹号的目的是什么
70删除运算符的目的是什么
71什么是 typeof 运算符
72什么是未定义属性
73什么是空值
74null 和 undefined 有什么区别
75什么是评估
76窗口和文档有什么区别
77你如何在javascript中访问历史记录
78你如何检测大写锁定键是否打开
79什么是 NaN
80未声明变量和未定义变量有什么区别
81什么是全局变量
82全局变量有什么问题
83什么是 NaN 属性
84isFinite 函数的目的是什么
85什么是事件流
86什么是事件冒泡
87什么是事件捕获
88如何使用 JavaScript 提交表单
89您如何找到操作系统详细信息
90文档加载和 DOMContentLoaded 事件有什么区别
91本机,主机和用户对象之间有什么区别
92用于调试 JavaScript 代码的工具或技术有哪些
93与回调相比,promise 的优缺点是什么
94属性和属性有什么区别
95什么是同源策略
96void 0的目的是什么
97JavaScript 是编译型语言还是解释型语言
98JavaScript 是区分大小写的语言吗
99Java和JavaScript之间有什么关系吗
100什么是事件
101谁创建了 JavaScript
102preventDefault 方法有什么用
103stopPropagation 方法有什么用
104return false 涉及哪些步骤
105什么是物料清单
106setTimeout 有什么用
107setInterval 有什么用
108为什么 JavaScript 被视为单线程
109什么是事件委托
110什么是 ECMAScript
111什么是 JSON
112JSON的语法规则是什么
113JSON字符串化的目的是什么
114你如何解析 JSON 字符串
115为什么需要 JSON
116什么是 PWA
117clearTimeout 方法的目的是什么
118clearInterval 方法的目的是什么
119你如何在javascript中重定向新页面
120如何检查字符串是否包含子字符串
121你如何在javascript中验证电子邮件
122如何使用 javascript 获取当前 url
123位置对象的各种url属性是什么
124如何在javascript中获取查询字符串值
125如何检查对象中是否存在键
126你如何循环或枚举javascript对象
127你如何测试一个空对象
128什么是参数对象
129你如何将字符串的第一个字母变成大写
130for循环的优缺点是什么
131你如何在javascript中显示当前日期
132你如何比较两个日期对象
133如何检查一个字符串是否以另一个字符串开头
134你如何在javascript中修剪字符串
135你如何在javascript中添加键值对
136'!--' 符号是否表示特殊运算符
137如何为变量分配默认值
138你如何定义多行字符串
139什么是应用外壳模型
140我们可以为函数定义属性吗
141查找函数期望的参数数量的方法是什么
142什么是 polyfill
143什么是 break 和 continue 语句
144什么是js标签
145将声明放在顶部有什么好处
146初始化变量有什么好处
147创建新对象的建议是什么
148如何定义 JSON 数组
149你如何生成随机整数
150你能写一个随机整数函数来打印一个范围内的整数吗
151什么是摇树
152摇树需要什么
153是否推荐使用 eval
154什么是正则表达式
155正则表达式中可用的字符串方法有哪些
156正则表达式中的修饰符是什么
157什么是正则表达式模式
158什么是正则表达式对象
159如何在字符串中搜索模式
160exec方法的目的是什么
161如何更改 HTML 元素的样式
1621+2+'3'的结果是什么
163什么是调试器语句
164调试断点的目的是什么
165我可以使用保留字作为标识符吗
166如何检测移动浏览器
167如何检测没有正则表达式的移动浏览器
168JS如何获取图片的宽高
169你如何发出同步 HTTP 请求
170你如何发出异步 HTTP 请求
171你如何在javascript中将日期转换为另一个时区
172用于获取窗口大小的属性是什么
173什么是javascript中的条件运算符
174您可以在条件运算符上应用链接吗
175页面加载后执行javascript的方式有哪些
176原型和原型有什么区别
177举一个你真的需要分号的例子
178什么是冻结法
179冷冻法的目的是什么
180为什么我需要使用冻结方法
181如何检测浏览器语言偏好
182如何使用javascript将字符串转换为标题大小写
183你如何检测页面中禁用的javascript
184javascript支持的各种运算符有哪些
185什么是休息参数
186如果不使用 rest 参数作为最后一个参数会发生什么
187javascript中可用的按位运算符有哪些
188什么是扩展运算符
189如何判断物体是否冻结
190你如何确定两个值相同或不使用对象
191使用对象是方法的目的是什么
192如何将属性从一个对象复制到另一个对象
193assign方法有哪些应用
194什么是代理对象
195封印法的目的是什么
196封印法的应用有哪些
197冷冻和密封方法有什么区别
198如何判断一个物体是否密封
199你如何获得可枚举的键值对
200Object.values 和 Object.entries 方法的主要区别是什么
201如何获取任何对象的键列表
202如何使用原型创建对象
203什么是弱集
204WeakSet 和 Set 有什么区别
205列出 WeakSet 上可用的方法集合
206什么是弱映射
207WeakMap 和 Map 有什么区别
208列出 WeakMap 上可用的方法集合
209uneval 的目的是什么
210如何对 URL 进行编码
211你如何解码一个 URL
212你如何打印网页的内容
213uneval 和 eval 有什么区别
214什么是匿名函数
215局部变量和全局变量的优先顺序是什么
216什么是 javascript 访问器
217如何在 Object 构造函数上定义属性
218get 和 defineProperty 有什么区别
219Getter 和 Setter 的优点是什么
220我可以使用 defineProperty 方法添加 getter 和 setter
221switch-case的目的是什么
222使用 swtich case 需要遵循哪些约定
223什么是原始数据类型
224访问对象属性的不同方法是什么
225函数参数规则有哪些
226什么是错误对象
227当您收到语法错误时
228与错误对象有什么不同的错误名称
229错误处理中的各种语句是什么
230javascript中有哪两种循环
231什么是nodejs
232什么是国际对象
233您如何执行特定语言的日期和时间格式
234什么是迭代器
235同步迭代是如何工作的
236什么是事件循环
237什么是调用栈
238什么是事件队列
239什么是装饰器
240Intl对象的属性是什么
241什么是一元运算符
242如何对数组中的元素进行排序
243排序数组时compareFunction的目的是什么
244你如何反转数组
245如何在数组中找到最小值和最大值
246如何在没有数学函数的情况下找到最小值和最大值
247什么是空话和它的目的
248如何获取模块的元数据
249什么是逗号运算符
250逗号运算符有什么好处
251什么是打字稿
252javascript和打字稿有什么区别
253打字稿比javascript有什么优势
254什么是对象初始化器
255什么是构造方法
256如果你在一个类中多次编写构造函数会发生什么
257如何调用父类的构造函数
258如何获取对象的原型
259如果我为 getPrototype 方法传递字符串类型会发生什么
260你如何将一个对象的原型设置为另一个对象
261你如何检查一个对象是否可以扩展
262如何防止对象扩展
263使对象不可扩展的不同方法是什么
264如何在一个对象上定义多个属性
265javascript中的意思是什么
266什么是 javascript 中的混淆
267为什么需要混淆
268什么是缩小
269缩小有什么好处
270混淆和加密有什么区别
271常用的缩小工具有哪些
272您如何使用 javascript 执行表单验证
273如何在没有 javascript 的情况下执行表单验证
274可用于约束验证的 DOM 方法有哪些
275有哪些可用的约束验证 DOM 属性
276有效性属性列表是什么
277举例说明 rangeOverflow 属性的用法
278javascript 中是否提供枚举功能
279什么是枚举
280如何列出对象的所有属性
281如何获取对象的属性描述符
282属性描述符提供哪些属性
283你如何扩展课程
284如何在不重新加载页面的情况下修改 url
285如何检查数组是否包含特定值
286你如何比较标量数组
287如何从获取参数中获取值
288如何用逗号打印数字作为千位分隔符
289java和javascript有什么区别
290javascript是否支持命名空间
291你如何声明命名空间
292如何从父页面调用 iframe 中的 javascript 代码
293如何从日期获取时区偏移量
294如何动态加载 CSS 和 JS 文件
295在 DOM 中查找 HTML 元素有哪些不同的方法
296什么是 jQuery
297什么是 V8 JavaScript 引擎
298为什么我们称javascript为动态语言
299什么是空运算符
300如何设置光标等待
301如何创建无限循环
302为什么需要避免 with 语句
303下面for循环的输出是什么
304列出 ES6 的一些特性
305什么是 ES6
306我可以重新声明 let 和 const 变量吗
307const 变量是否使值不可变
308什么是默认参数
309什么是模板文字
310如何在模板文字中编写多行字符串
311什么是嵌套模板
312什么是标记模板
313什么是原始字符串
314什么是解构赋值
315什么是解构赋值的默认值
316如何在解构赋值中交换变量
317什么是增强的对象字面量
318什么是动态导入
319动态导入的用例有哪些
320什么是类型化数组
321模块加载器有什么优势
322什么是整理
323什么是... of 声明
324下面展开运算符数组的输出是什么
325PostMessage 是否安全
326邮件目标来源作为通配符有什么问题
327您如何避免收到来自攻击者的 postMessages
328我可以完全避免使用 postMessages
329postMessages 是否同步
330Javascript 是什么范式
331内部和外部javascript有什么区别
332JavaScript 比服务器端脚本快吗
333如何获取复选框的状态
334双波浪号运算符的目的是什么
335如何将字符转换为 ASCII 码
336什么是 ArrayBuffer
337下面的字符串表达式的输出是什么
338错误对象的目的是什么
339EvalError 对象的目的是什么
340从非严格模式到严格模式抛出的案例错误列表是什么
341所有对象都有原型吗
342参数和参数有什么区别
343数组中某些方法的目的是什么
344如何组合两个或多个数组
345浅拷贝和深拷贝有什么区别
346如何创建特定数量的字符串副本
347如何针对正则表达式返回所有匹配的字符串
348如何在开头或结尾修剪字符串
349使用一元运算符的以下控制台语句的输出是什么
350javascript是否使用mixins
351什么是thunk函数
352什么是异步 thunk
353以下函数调用的输出是什么
354如何从字符串中删除所有换行符
355回流和重绘有什么区别
356否定数组会发生什么
357如果我们添加两个数组会发生什么
358在虚假值上前置加法运算符的输出是什么
359如何使用特殊字符创建自我字符串
360如何从数组中删除虚假值
361如何获取数组的唯一值
362什么是解构别名
363如何在不使用 map 方法的情况下映射数组值
364如何清空数组
365你如何将数字四舍五入到某些小数
366将数组转换为对象的最简单方法是什么
367你如何创建一个包含一些数据的数组
368控制台对象的占位符是什么
369是否可以将 CSS 添加到控制台消息
370控制台对象的dir方法的目的是什么
371是否可以在控制台中调试 HTML 元素
372如何使用控制台对象以表格格式显示数据
373您如何验证参数是否为数字
374你如何创建复制到剪贴板按钮
375获取时间戳的快捷方式是什么
376你如何展平多维数组
377什么是最简单的多条件检查
378你如何捕获浏览器后退按钮
379如何禁用网页中的右键单击
380什么是包装对象
381什么是 AJAX
382处理异步代码有哪些不同的方法
383如何取消获取请求
384什么是网络语音 API
385什么是最小超时限制
386如何在现代浏览器中实现零超时
387事件循环中的任务是什么
388什么是微任务
389什么是不同的事件循环
390queueMicrotask 的目的是什么
391你如何在打字稿文件中使用 javascript 库
392Promise 和 observables 有什么区别
393什么是堆
394什么是事件表
395什么是微任务队列
396shim 和 polyfill 有什么区别
397如何检测原始或非原始值类型
398什么是巴别塔
399Node.js 是完全单线程的吗
400可观察对象的常见用例是什么
401什么是 RxJS
402Function构造函数和函数声明有什么区别
403什么是短路状态
404调整数组大小的最简单方法是什么
405什么是可观察的
406函数声明和类声明有什么区别
407什么是异步函数
408你如何防止 Promise 吞噬错误
409什么是德诺
410你如何在javascript中使对象可迭代
411什么是正确的尾调用
412你如何检查一个对象是否是一个承诺
413如何检测函数是否被称为构造函数
414arguments对象和rest参数有什么区别
415扩展运算符和剩余参数有什么区别
416有哪些不同种类的发电机
417什么是内置的迭代器
418for...of 和 for...in 语句有什么区别
419如何定义实例和非实例属性
420isNaN 和 Number.isNaN 有什么区别?
421如何在没有任何额外括号的情况下调用 IIFE?
422是否可以在 switch 案例中使用表达式?
423忽略承诺错误的最简单方法是什么?
424如何使用 CSS 设置控制台输出样式?
425什么是无效合并运算符(??)?
426您如何对控制台输出进行分组和嵌套?
427密集数组和稀疏数组有什么区别?
428创建稀疏数组有哪些不同的方法?
429setTimeout、setImmediate 和 process.nextTick 有什么区别?

一天一套题,学他3年。



好啦,本期内容孙叫兽就分享到这里,我们下期见!你知道的越多,你不知道的越多!友情提示,英文不好的同学可以使用谷歌浏览器右键中英文翻译功能呦!






浏览 39
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报