大家好,我是你们的猫哥,一只不爱吃鱼也不爱喵喵的超级猫~
前言
毛哥是个猫星人,在GitHub上呆了很长时间,所以发现了很多好的后端开源项目和常用方法,在这里分享给大家。
1. 30秒的代码
该项目是关于满足您所有开发需求的简短代码段。 里面有一些常用的、非常经典的代码,非常值得学习!
例如,JavaScript 模块分为 All、Array、Browser、Date、Function、Math、Node、Object 和 String,方便学习。
例如:你必须知道的 4 个 JavaScript 数组方法
Array.prototype.map()
const arr = [1, 2, 3];
const double = x => x * 2;
arr.map(double); // [2, 4, 6]
Array.prototype.filter()
const arr = [1, 2, 3];
const isOdd = x => x % 2 === 1;
arr.filter(isOdd); // [1, 3]
Array.prototype.reduce()
const arr = [1, 2, 3];
const sum = (x, y) => x + y;
arr.reduce(sum, 0); // 6
const increment = (x, y) => [...x, x[x.length - 1] + y];
arr.reduce(increment, [0]); // [0, 1, 3, 6]
Array.prototype.find()
const arr = [1, 2, 3];
const isOdd = x => x % 2 === 1;
arr.find(isOdd); // 1
再举个例子:如何用JavaScript实现sleep函数?
同步版本
const sleepSync = (ms) => {
const end = new Date().getTime() + ms;
while (new Date().getTime() < end) { /* do nothing */ }
}
const printNums = () => {
console.log(1);
sleepSync(500);
console.log(2);
console.log(3);
};
printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)
异步版本
const sleep = (ms) =>
new Promise(resolve => setTimeout(resolve, ms));
const printNums = async() => {
console.log(1);
await sleep(500);
console.log(2);
console.log(3);
};
printNums(); // Logs: 1, 2, 3 (2 and 3 log after 500ms)
其实里面提到的例子也提供了API和技巧的解释,方便读者理解,这里就不写了。
想了解更多经典js代码片段请看下面仓库
2.33-js-概念
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
代码整洁之道
而且每个主题都包含相关的优秀文章和视频,非常适合学习。
3.javascript问题
高级 JavaScript 问题列表。
从基础到中级:测试您的 JavaScript 知识、刷新您的知识或准备编码笔试!
例如下面会输出什么?
let a = 3
let b = new Number(3)
let c = 3
console.log(a == b)
console.log(a === b)
console.log(b === c)
答案:C
解释:
new Number() 是一个内置函数构造函数。 虽然它看起来像一个数字,但它实际上不是一个真正的数字:它有很多额外的功能,但它是一个对象。
当我们使用 == 运算符时,它仅检查两者是否具有相同的值。 由于它们的值均为 3,因此返回 true。
那么,当我们使用 === 运算符时,值和类型都应该相同。 new Number() 是一个对象而不是数字,因此返回 false。
4. JavaScript 30
使用原生 JavaScript 在 30 天内完成 30 个项目。
HTML、CSS 和 javascript 解决方案每天都在完成。
5. 代码大战
与leetcode类似,也是在平台上与其他人一起完成真实的代码挑战,以提高自己的技能。
与其他平台相比,codewars给出的问题更贴合实际工作和生活。 很多问题都会给出话题背景,更有沉浸感。
提高技能的可能性:用社区创建的型来挑战自己,以提高各种技能。 掌握您当前选择的语言,或扩展您对新语言的理解。
要加入这个社区,您必须首先通过回答测验来证明您的技能。
6.ES6入门教程
每个入门后端都应该知道的ES6开源书籍。 毛哥刚进后端的时候,就跟阮一峰老师学习了开源ES6的内容,一直实用到现在!
《ECMAScript 6入门教程》是一个开源的JavaScript语言教程,全面介绍了ECMAScript 6引入的句型新特性。
本书涵盖了ES6与之前版本ES5的所有差异ecmascript6标准教程,对涉及的句型知识进行了详细介绍,并给出了大量简单易懂的示例代码。
本书难度为高级,适合已经掌握ES5的读者了解该语言的最新发展; 也可以作为寻找新句型的参考指南。
如果您是JavaScript语言的初学者,建议先完成《JavaScript语言入门教程》,然后再阅读本书。
7. JavaScript 教程
本教程全面介绍了 JavaScript 核心语法,涵盖了 ES5 和 DOM 规范的所有内容。
也是阮一峰老师写的。 确实很容易理解,非常适合后端学习。
不得不说,学识渊博的人写的技术文章是非常容易理解的。
在内容上,从最简单的开始,循序渐进,由浅入深,力求清晰易懂。
所有章节都有大量的代码示例,易于理解和模仿,可以在实际项目中使用,即学即用。
本教程作为JavaScript语言的入门教程,适合初学者。 学习之后,你可以承担实际的Web开发工作,也适合作为日常使用的参考指南。
目录
入门篇
数据类型
运算符
语法专题
标准库
面向对象编程
异步操作
DOM
事件
浏览器模型
附录:网页元素接口
8. 现代 JavaScript 教程
根据最新的 JavaScript 标准进行基准测试。 通过简单但足够详细的内容,为您讲解JavaScript的基础到高级知识。
本课程的核心由两部分组成,涵盖 JavaScript 编程语言和浏览器行为。 还有一系列专题文章。
JavaScript 编程语言
在这里,我们将从头开始学习 JavaScript,并学习相关的中间概念,例如 OOP。
本教程重点关注语言本身,我们默认使用最小环境。
浏览器:文档、事件、界面
了解如何管理浏览器页面:添加元素、操纵元素大小和位置、动态创建小部件以及与访问者交互。
其他文章
本教程前两部分中未涵盖的其他主题的目录。 这里没有明确的层次结构,您可以按照您需要的顺序阅读文章。
9.MDN
MDN Web 文档站点提供有关开放 Web 技术的信息,包括用于网站和渐进式 Web 应用程序的 HTML、CSS 和 API。
Mozilla、微软、谷歌、三星和 W3C 将合作使 MDN 成为网络上最好的文档。
所以在这个平台上学习web技术是比较权威的。
来自开发人员、服务开发人员。
10. 干净的代码 JavaScript
优秀的JS代码规范。
例如:相同类型的变量使用相同的关键字
坏的:
getUserInfo();
getClientData();
getCustomerRecord();
好的:
getUser();
另一个例子:使用可搜索的命名
在开发过程中,我们阅读代码的时间远多于编写代码,因此保证代码的可读性和可搜索性就显得尤为重要。 记住,如果你没事可做,就不要欺骗自己。
坏的:
//525600到底啥意思?
for (var i = 0; i < 525600; i++) {
runCronJob();
}
好的:
// 声明为全局变量
var MINUTES_IN_A_YEAR = 525600;
for (var i = 0; i < MINUTES_IN_A_YEAR; i++) {
runCronJob();
}
11.TypeScript 入门教程
从JavaScript程序员的角度总结思考,一步步理解TypeScript。
这个教程确实是我见过的最完整、最简单、最容易理解的 TypeScript 教程!
《TypeScript入门教程》全面介绍了TypeScript强大的类型系统。 完整简洁,示例丰富ecmascript6标准教程,比官方文档更容易阅读。 非常适合作为初学者学习TypeScript的第一本书。 ——阮一峰
例如,类型别名:类型别名用于为类型提供新名称。
简单的例子:
type Name = string;
type NameResolver = () => string;
type NameOrResolver = Name | NameResolver;
function getName(n: NameOrResolver): Name {
if (typeof n === 'string') {
return n;
} else {
return n();
}
}
在上面的示例中,我们使用 type 创建类型别名。
类型别名通常与联合类型一起使用。
12.w3学校
前端必须知道的Web技术教程平台,虽然很多后端都知道,但是还是有必要提一下。
领先的网络技术教程 - 全部免费。
在W3School,您可以找到您需要的所有网站建设教程。
从基本的 HTML 到 CSS,再到高级的 XML、SQL、JS。
这里学习后端最好的部分是有一个可以学习的演示,它可以验证你的功效或输出。
终于
发表评论