12 个 GitHub 上超火的 JavaScript 项目,找到写 JavaScript 的灵感!

开发 前端
猫哥是一个常年混迹在 GitHub 上的猫星人,所以发现了不少好的前端开源项目、常用技巧,在此分享给大家。

 

1. 30-seconds-of-code

该项目讲的是满足你所有开发需求的简短代码段,里面都是些经常会用到而且是非常经典的代码,非常值得学习!

比如 JavaScript 模块就分为了 All、Array、Browser、Date、Function、Math、Node、Object、String 方便学习的。

比如:你必须知道的 4 种 JavaScript 数组方法

Array.prototype.map()

  1. const arr = [1, 2, 3]; 
  2. const double = x => x * 2; 
  3. arr.map(double); // [2, 4, 6] 

Array.prototype.filter()

  1. const arr = [1, 2, 3]; 
  2. const isOdd = x => x % 2 === 1; 
  3. arr.filter(isOdd); // [1, 3] 

Array.prototype.reduce()

  1. const arr = [1, 2, 3]; 
  2.  
  3. const sum = (x, y) => x + y; 
  4. arr.reduce(sum, 0); // 6 
  5.  
  6. const increment = (x, y) => [...x, x[x.length - 1] + y]; 
  7. arr.reduce(increment, [0]); // [0, 1, 3, 6] 

Array.prototype.find()

  1. const arr = [1, 2, 3]; 
  2. const isOdd = x => x % 2 === 1; 
  3. arr.find(isOdd); // 1 

又比如:如何在 JavaScript 中实现睡眠功能?

同步版本

  1. const sleepSync = (ms) => { 
  2.   const end = new Date().getTime() + ms; 
  3.   while (new Date().getTime() < end) { /* do nothing */ } 
  4.  
  5. const printNums = () => { 
  6.   console.log(1); 
  7.   sleepSync(500); 
  8.   console.log(2); 
  9.   console.log(3); 
  10. }; 
  11.  
  12. printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms) 

异步版本

  1. const sleep = (ms) => 
  2.   new Promise(resolve => setTimeout(resolve, ms)); 
  3.  
  4. const printNums = async() => { 
  5.   console.log(1); 
  6.   await sleep(500); 
  7.   console.log(2); 
  8.   console.log(3); 
  9. }; 
  10.  
  11. printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms) 

其实上面讲到的事例里面还提供 api 和方法的讲解的,方便读者能看懂的,这里就不写出来了。

还想学更多的 经典 js 代码片段,请看下面的仓库

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

2. 33-js-concepts

[[357715]]

JavaScript开发者应懂的 33 个概念

这个项目是为了帮助开发者掌握 JavaScript 概念而创立的。它不是必备,但在未来学习(JavaScript)中,可以作为一篇指南。

目录

调用堆栈
原始类型
值类型和引用类型
隐式, 显式, 名义和鸭子类型
== 与 ===, typeof 与 instanceof
this, call, apply 和 bind
函数作用域, 块级作用域和词法作用域
闭包
map, reduce, filter 等高阶函数
表达式和语句
变量提升
Promise
立即执行函数, 模块化, 命名空间
递归
算法
数据结构
消息队列和事件循环
setTimeout, setInterval 和 requestAnimationFrame
继承, 多态和代码复用
按位操作符, 类数组对象和类型化数组
DOM 树和渲染过程
new 与构造函数, instanceof 与实例
原型继承与原型链
Object.create 和 Object.assign
工厂函数和类
设计模式
Memoization
纯函数, 函数副作用和状态变化
耗性能操作和时间复杂度
JavaScript 引擎
二进制, 十进制, 十六进制, 科学记数法
偏函数, 柯里化, Compose 和 Pipe
代码整洁之道

而且每个主题都包含了相关的精彩文章和视频,非常适合学习。

https://github.com/leonardoms...

3. javascript-questions

JavaScript 进阶问题列表。

从基础到高级:测试您对 JavaScript 的了解程度,稍微刷新一下知识或为编写代码面试做准备!

比如下面会输出是什么?

  1. let a = 3 
  2. let b = new Number(3
  3. let c = 3 
  4.  
  5. console.log(a == b) 
  6. console.log(a === b) 
  7. console.log(b === c) 
  • A: true false true
  • B: false false true
  • C: true false false
  • D: false true true

答案: C

解释:

new Number() 是一个内建的函数构造器。虽然它看着像是一个 number,但它实际上并不是一个真实的 number:它有一堆额外的功能并且它是一个对象。

当我们使用 == 操作符时,它只会检查两者是否拥有相同的  。因为它们的值都是  3 ,因此返回  true 。

然后,当我们使用 === 操作符时,两者的值以及 类型 都应该是相同的。 new Number() 是一个对象而不是 number,因此返回  false 。

https://github.com/lydiahalli...

4. JavaScript 30

使用原生 JavaScript 在 30 天内完成 30 个项目。

每天完成的 HTML, CSS 和 javascript 解决方案。

https://github.com/wesbos/JavaScript30

5. Codewars

和 leetcode 有点类似,也是在平台上和其他人一起完成真实的代码挑战,提升你的技术。

相比于其他平台,codewars 给出的问题更加贴合实际工作与生活,很多题都会给出题目背景,更有代入感。

可以提升技能:在社区创建的 kata 上挑战自我,以增强各种技能。掌握您当前选择的语言,或扩展您对新语言的理解。

要加入这个社区,您必须先答题证明自己的技能才可以的。

https://www.codewars.com/

6. ES6 入门教程

入门的前端都应该都知道的 ES6 开源书籍,猫哥初入前端时就是学了 阮一峰 老师开源的 ES6 内容的,一直实用至今!

《ECMAScript 6 入门教程》是一本开源的 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性。

本书覆盖 ES6 与上一个版本 ES5 的所有不同之处,对涉及的语法知识给予详细介绍,并给出大量简洁易懂的示例代码。

本书为中级难度,适合已经掌握 ES5 的读者,用来了解这门语言的最新发展;也可当作参考手册,查寻新增的语法点。

如果你是 JavaScript 语言的初学者,建议先学完《JavaScript 语言入门教程》,再来看这本书。

https://es6.ruanyifeng.com/

7. JavaScript 教程

本教程全面介绍 JavaScript 核心语法,覆盖了 ES5 和 DOM 规范的所有内容。

也是 阮一峰 老师写的,真的非常通俗易懂,非常适合前端学习。

不得不说,知识掌握通透的人写的技术文章,非常能让人容易明白。

内容上从最简单的讲起,循序渐进、由浅入深,力求清晰易懂。

所有章节都带有大量的代码实例,便于理解和模仿,可以用到实际项目中,即学即用。

本教程适合初学者当作 JavaScript 语言入门教程,学完后就可以承担实际的网页开发工作,也适合当作日常使用的参考手册。

目录

入门篇
数据类型 
运算符 
语法专题
标准库
面向对象编程
异步操作 
DOM
事件
浏览器模型
附录:网页元素接口

https://wangdoc.com/javascript/

8. 现代 JavaScript 教程

以最新的 JavaScript 标准为基准。通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。

课程的核心内容包含 2 部分,涵盖了 JavaScript 编程语言相关知识和浏览器行为。此外还有一系列的专题文章。

JavaScript 编程语言

在这儿我们将从头开始学习 JavaScript,也会学习 OOP 等相关高级概念。

本教程专注于语言本身,我们默认使用最小环境。

浏览器:文档,事件,接口

学习如何管理浏览器页面:添加元素,操纵元素的大小和位置,动态创建接口并与访问者互动。

其他文章

教程的前两部分未涉及的其他主题的内容列表。此处没有明确的层次结构,你可以按你需要的顺序阅读文章。

https://zh.javascript.info/

9. MDN

MDN Web Docs 网站提供开放网络(Open Web)技术有关的信息,包括用于网站和渐进式网络应用的 HTML、CSS 和 API。

Mozilla, Microsoft, Google, Samsung 和 W3C 将合作把 MDN 打造成最好的 Web 文档。

所以在这个平台学习 web 技术算是比较权威的了。

源于开发者,服务开发者。

https://developer.mozilla.org...

10. clean-code-javascript

优秀的 JS 代码规范。

比如:对相同类型的变量使用相同的关键字

Bad:

  1. getUserInfo();  
  2. getClientData();  
  3. getCustomerRecord(); 

Good:

  1. getUser(); 

再比如:使用可搜索的命名

在开发过程中,我们阅读代码的时间会远远超过编写代码的时间,因此保证代码的可读性与可搜索会非常重要。切记,没事不要坑自己。

Bad:

  1. //525600到底啥意思? 
  2. for (var i = 0; i < 525600; i++) { 
  3.   runCronJob(); 

Good:

  1. // 声明为全局变量 
  2. var MINUTES_IN_A_YEAR = 525600
  3. for (var i = 0; i < MINUTES_IN_A_YEAR; i++) { 
  4.   runCronJob(); 

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

11. TypeScript 入门教程

从 JavaScript 程序员的角度总结思考,循序渐进的理解 TypeScript。

这个教程真的是猫哥看过的最完整而简洁、并且通俗易懂的 TypeScript 教程!

《TypeScript 入门教程》全面介绍了 TypeScript 强大的类型系统,完整而简洁,示例丰富,比官方文档更易读,非常适合作为初学者学习 TypeScript 的第一本书。 —— 阮一峰

比如 类型别名 :类型别名用来给一个类型起个新名字。

简单的例子:

  1. type Name = string; 
  2. type NameResolver = () => string; 
  3. type NameOrResolver = Name | NameResolver; 
  4. function getName(n: NameOrResolver): Name { 
  5.     if (typeof n === 'string') { 
  6.         return n; 
  7.     } else { 
  8.         return n(); 
  9.     } 

上例中,我们使用 type 创建类型别名。

类型别名常用于联合类型。

https://ts.xcatliu.com

12. w3school

前端必须知道的 Web 技术教程平台,虽然很多前端都知道了,但是有必要提一下。

领先的 Web 技术教程 - 全部免费。

在 W3School,你可以找到你所需要的所有的网站建设教程。

从基础的 HTML 到 CSS,乃至进阶的 XML、SQL、JS。

在这里学习前端最好的地方就是有 demo 可能学习,可以验证你的效果或者输出。

https://www.w3school.com.cn/j...

责任编辑:张燕妮
相关推荐

2020-11-24 08:10:08

GitHub代码CSS

2020-08-06 10:29:38

JavaScript开发技术

2020-01-06 10:32:17

JavaScript开源Github

2021-01-11 10:27:47

JavaScript开源项目GitHub

2019-08-08 16:54:08

GitHubJavaScript编程语言

2022-04-28 13:17:10

低代码开发工具

2021-02-20 16:01:26

Github前端开发

2020-03-05 08:58:42

JavaScript语言开发

2020-03-05 21:40:49

Javascript前端

2021-02-03 10:51:23

GitHub代码管理

2014-08-27 09:45:30

JavaScriptJavaScript

2022-04-02 09:01:21

GitHub工具库前端

2019-08-13 09:45:45

GitHubJavaScript开发者

2021-07-22 09:40:10

GitHub代码开发者

2013-07-05 10:59:02

GitHub

2013-07-05 11:07:30

2016-05-10 10:16:13

JavaScript技巧

2020-09-26 21:50:26

JavaScript代码开发

2020-08-11 08:11:40

JavaScript开发技术

2010-01-04 16:16:31

JavaScript语
点赞
收藏

51CTO技术栈公众号