前端进阶知识汇总(持续更新中)

掘金原文。
前端进阶知识汇总(持续更新中)

前言

针对学习了前端三件套,html、css、javascript以及vue、react等前端框架其一,但感觉基础知识体系不牢固的同学,补充提供多个方向知识体系,所放链接均为笔者曾经阅读完全的文章,过滤水货。每日一更

js系列

js系列是web开发中最重要的一环,你可以写不出太好看的页面,但是功能一定要到位,这是最基本的。

es6常用语法总结

抛开各种让人眼花缭乱的衍生api,最原汁原味的ECMA语法

js技巧

有很多技巧其实没有必要或者用起来让人感到费解,但是这个阶段应该大量的阅读代码,看看一种功能的多种实现方式,深入思考。

作用域链和闭包

闭包也算是js的一种特色了,其本质就是延长变量的生命周期,推荐与js垃圾回收机制一起理解。

原型链和this指向

原型链是js实现继承的方法,也是js在没有class的情况下,重用代码的方式。本部分学习的小目标为搞明白以下代码。

Array.prototype.slice.call(arguments)

深浅拷贝

通过深浅拷贝了解js变量的内存分配机制,简而言之就是简单类型变量存储在栈内存中,复制是值的复制,复杂类型,如对象,数组等类型存储在堆内存中,复制是地址引用的复制。

事件循环 event loop

事件循环是js作为一个单线程语言实现并发与异步的手段,严格来说事件循环是浏览器所支持的,但因为是讲解js运行机制,所以也一并归为js系列。了解事件循环,就了解了js复杂繁琐的异步问题。简单的来说就是解决了以下问题。让程序员对js运行有个更深的理解,加强对代码的掌控能力。

// 回答执行顺序

console.log('start 1');
setTimeout(function() {
	console.log("start 2");
}, 0);

Promise.resolve().then(function() {
	console.log('start 3');
}).then(function() {
	console.log('start 4');
});
console.log('start 5');

这个机制的水很深,浏览器和node环境又有不同的区别,在不深入学习的情况下,只要搞明白上面的代码执行情况,就算是ok了。

事件冒泡和事件捕获

事件冒泡与事件捕获是浏览器触发事件的两种情况,一种是从html标签一直往下,一直到你触发事件的元素,一种是从你点击的事件处开始冒泡,把事件当做泡泡一直浮动到html标签。学习事件处理的机制可以在实际开发中做一些相关优化。如下:

	<ul>
		<li>1</li>
		<li>2</li>
		<li>3</li>
		<li>4</li>
		<li>5</li>
	</ul>

我们想要通过点击li获取li的数字,我们怎么做,第一时间想到的,在每一个li上面绑定事件,通过事件传入每一个li本身,获取innnerHTML.如下

<li onclick="clickLi(this)">1</li>
	function clickLi(li) {
		console.log(li.innerHTML);
	}

但可以设想,如果li多了,我们每一个li都绑定一个点击事件,且不说性能问题,单是这样看起来已经很蠢了好吧,结合上面我们说的事件冒泡,点击事件会一路传递到html标签,那么我们可以在父元素ul上面监听点击事件。如下

<ul onclick="cliclUl()">

所以这一小节的学习目的就是完成这个简单的问题,可以在开发中进行一定优化。

html系列

html确实是最容易被忽略的一个,因为它足够简单,因为浏览器底层优化较好,在用户写出比较糟糕的标签的时候也能保持不报错,但是基础必须要掌握。

html基础知识查漏补缺

html语义化

html语义化是html5之后兴起的一个概念,相比于以前的div一把梭,html5出了一些具有语义化的标签,当然只是具有语义化,并没有什么样式和特点,本质上和div没有区别,对于html的语义化,有人觉得好,有人觉得还不如div+class语义化,但归根结底这是官方推行的方案。语义化的好处,除了编码美观以外,其实对于机器是比较友好的,因为机器不会认识你漂亮的css,它只检查html标签。比如自动阅读,而且更好的语义化结构,在去掉css后,也能保持不错的可阅读性。
如果这些还不能说服你开始html语义化的学习,那么设想一下,语义化的意义就是定义你的衣服裤子,虽然没人阻止你把裤子套在头上,但我想,没有必要。

seo优化

seo优化,又叫搜索引擎优化,简单的来说就是通过配合搜索引擎的搜索方式,提高网站在搜索引擎下面的自然排名,白嫖自然流量。毕竟一个网站最主要的就是给人看嘛(管理平台除外),当然,通过给搜索引擎厂商砸钱也可以达到同样或者更好的效果…

css系列

css这个东西,学起来非常简单,搞明白几种常用选择器,然后实战,积累一段时间的属性就可以算是滚瓜烂熟了,但是实际上css远比你想象的强大,网页上所有的效果(包括3D)都是可以用css实现的,css真的困难起来,那简直已经突破前端工程的范围了,可以称得上艺术了(真有本讲css艺术的书)

css基础提升

css设计技巧

css工程化

前面的都没啥好说的,基础就积累,技巧就多练,但是工程化有必要介绍一下,工程化我比较中意TailwindCSS,因为以前我写代码的时候喜欢用flex布局,了解这个的都知道flex是和html高度绑定的,而且写起来一层套一层的时候特别麻烦,我就把通用的flex抽出来,然后每次写类名就可以了,这个库就是用的这种思想,把html和css合在一起,熟悉了写起来特别快,但是这里可能就有聪明的同学要说了,不都说解耦合么,怎么又混到一起了,这里就仁者见仁智者见智了,反正我感觉是好用的不行,何妨一试呢?

设计模式

前端设计模式是基于js的,因为内容较多所以单独拿出来说道说道,设计模式是在软件开发过程中被积累出来的一种经验,一种高效的问题解决方案,之所以放在后面,也是因为学习设计模式就自动默认你的js知识已经足够。如果不知道为什么要学设计模式,请回想自己平时的开发经历,是否为自己写不出代码而尴尬,是否为自己嵌套过多的if而羞愧,是否为自己反人类的设计而自豪(自豪?)。学习设计模式,一次性解决上述问题。

设计原则

在学习设计模式之前,让我们先过一遍软件设计原则。

设计模式

设计模式是基于面向对象的,所以不包括函数式、响应式、切片编程。这些编程范式我们放在另一个章节。再次声明,设计模式是要多次学习的,仅仅靠我放在这里的文章是不够的,并且学习了后,要在实际中进行使用,这是一种经验,并非技能。

设计模式实践

在vue中使用设计模式

这是一个系列,直接点进去跟着看就是

网络系列

作为一个前端,和网络打交道无可避免,不需要了解底层,只要了解工作原理就足以在工作中解决大部分由此引起的bug.

http

大部分情况下,我们使用的都是http请求,在前端开发中http最容易出现问题的就是content-type字段,如果后台定义的解析方式和前端的发送格式不一样,加上如果交流不当(别人不知道你连这个都不知道)那么就会出现控制台明明有数据,但是后台返回说你没有传参。

WebSocket

了解一下即可,很简单,但是测试需要搭建一个本地服务器。

浏览器

浏览器主流前端开发的运行环境(就算跨平台,一样是浏览器的内核),但是我们往往对浏览器不太重视,从你在html写上第一个p标签,浏览器显示一个hello wold开始,它好像就是这样。你写什么它显示什么,从html到css再到js,浏览器的渲染似乎理所当然,没人去研究它的工作模式。但是相信我,了解工作原理,是优化的开始。

浏览器差异性

开始扫盲,了解一下不同浏览器的差异(免试热门)

浏览器渲染机制

浏览器的渲染机制,了解即可

重绘与回流

重绘与回流简单来说就是,在你操作dom元素后浏览器需要做的操作,比如你把位于上方的元素删除了,那么下方的元素就会自动顶上去,这个就是回流操作,回流又叫重排,如果只是改变dom的颜色,不改变大小影响布局,那么浏览器只进行重绘,字面意思,重新画一次。一般来说回流的开销远大于重绘(ie正好相反)。但是无论怎么说,这都是比较消耗性能的,所以开发的时候要尽量避免回流与重绘。这又是一个优化点。

浏览器缓存

浏览器缓存主要是缓存资源请求过程,这里还涉及到http的知识。缓存分为强缓存与协商缓存,简单的来说强缓存就是一次请求之后,后面都使用它,不会再向服务器发起请求,协商缓存就是向服务器发起请求,服务器资源发生变化再重新请求资源,否则继续使用缓存。

图层与硬件加速

上面讲到了在浏览器中操作dom会引起重绘和回流,但是转念一想,css动画怎么办,dom可是无时无刻都在变化,难道一直触发回流重绘么。这里解决的方式就是,对于transform的变化,浏览器会开一个新的图层,在新的图层进行操作,使其不会影响现有的dom。所以这里也引申出动画优化,即尽量使用transform变化来完成动画而不要修改dom的宽高等属性。
至于硬件加速,有一些css属性是可以开启gpu渲染的,例如上面说的transform,所以在复杂动画中,我们可以通过transform 的3D变化开启gpu渲染,提高性能。这是一个利用原理取巧的操作,实际上css有个属性是专门做这个的,叫做will-change,这个属性作用是,提前告诉浏览器,在这个地方要开启gpu加速。

跨域

这个大家可能都比较清楚了,所以放最后,很简单,了解的跳过即可。

后记

到这里呢,就把我还想得起的前端基础能力提升放到这里了,有些东西要遇到了才能想得到,如果后面想起了会再来更新一下。

事先声明的一点是,这些基础都是非常需要时间去积累的,我这里也只是放了几篇参考文章,只是指出了一个方向,光是看我这些都完全不够,更不说还要去实践中总结自己的经验,所以这里就姑且当做是知识的一个概述,点出了一个方向。

由于是基础能力的进阶,所以业务上常用的框架和点都没有讲,例如TypeScript、web component、uniapp、WebAssembly、编程范式等等之类一堆东西,可能就要留到后面去了。

  • 22
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: B站飞哥的《大前端进阶笔记》是一份非常实用的学习资料,旨在帮助学习前端技术的人进一步提高自己的技能。笔记包括了前端基础知识的学习、前端开发常用的框架、库和工具的介绍,以及一些应用实例的实战演练。其,最引人注目的是笔记的实战演练部分,涵盖了多个项目的案例,包括电商网站、音乐播放器、博客等,这些实例对于前端开发人员来说非常有用,可以让他们更好地掌握前端开发的核心技能。 这份笔记分为六个部分,包括HTML、CSS、JavaScript、框架、工程化和实战项目。每个部分都包含了该部分的基础知识、实践技巧和高级应用,逐步深入地讲解了前端开发的各个方面。在框架和工具章节,笔记讲解了前端界流行的React、Vue、Webpack等,并提供了实际案例的演示。 总体而言,B站飞哥的《大前端进阶笔记》是一份非常优秀的学习资料,对于新手和有经验的前端开发人员都非常有帮助。笔记内容丰富、条理清晰,讲解方式易于理解,并提供了实际案例的演示,是一份非常有价值的前端学习资源。 ### 回答2: B站是一个以弹幕视频为特色的视频 sharing 社区,拥有海量的优质视频资源。其,飞哥大前端进阶笔记是一系列大前端学习视频,由 B站菜鸟技术博主飞哥所录制和发布。 飞哥大前端进阶笔记旨在帮助前端工程师提升技术能力和进阶能力,内容丰富全面,涵盖 HTML、CSS、JavaScript、Vue、React 等前端技术知识点。特别是对于 JavaScript 这一难点,飞哥进行了重点讲解和深度剖析,引导观众深入理解和掌握 JavaScript 知识体系。 除此之外,飞哥大前端进阶笔记还分享了前端工程师的实际工作经验和应用方法,讲述了企业级前端工程师的职责和要求,为前端工程师的职业发展做出了有益的引导。 总之,飞哥大前端进阶笔记是一系列非常实用的前端技术学习视频,对于初学者和职业前端工程师都有很好的指导作用。以其深刻的剖析和系统的表述,早已赢得了广大前端同胞的支持与好评。 ### 回答3: b站是一家全球知名的视频网站,用户群体广泛。飞哥是一位在b站上分享编程技巧和经验的UP主,他的视频涵盖了各种常用编程语言和开发工具。此外,飞哥还有一系列关于大前端进阶方面的笔记,为想要深入学习前端开发的用户提供了很大的帮助。 在飞哥的大前端进阶笔记,他详细介绍了前端技术的基本概念和原理。这些笔记主要涉及HTML、CSS、JavaScript、浏览器工作原理、前端框架、前端性能优化等方面。通过这些笔记,用户可以更深入地理解前端技术,从而不断提高自己的技能水平。 此外,飞哥还分享了很多实用的工具和技巧,这些工具和技巧可以极大地提高前端开发的效率。包括VS Code的使用技巧、前端错误调试技巧、前端自动化工具、Webpack等。这些技巧的学习,将使前端开发者更加顺利和高效地完成项目。 总的来说,飞哥的大前端进阶笔记是非常实用和有价值的。无论是前端初学者还是有一定经验的开发者,都可以从获得很多启迪和帮助。如果你想了解前端技术或者想要在前端开发方面有更多提高,可以去b站上学习飞哥的笔记。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值