重学前端—全局架构(一)

859 阅读6分钟

这是我参与11月更文挑战的第25天,活动详情查看:2021最后一次更文挑战

重学前端-JavaScript(1)

重学前端-JavaScript(2)

重学前端-JavaScript(3)

重学前端-JavaScript(4)

重学前端-JavaScript(5)

重学前端(一)

1, 前言

我们都知道:程序 = 算法 + 数据结构,那么,对运行时来说,类型就是数据结构,执行过程就是算法。

在任何的一门语言的学习过程中,你要试着建立自己的知识架构,除此之外,还要学会追本溯源,找到知识的源

头,这才是正确的学习方法。

2,模块

​ JavaScript 语言(模块一)、CSS 和 HTML(模块二)以及浏览器的实现原理和 API(模块三),这三个模块涵盖了一个前端工程师所需要掌握的全部知识。

(1) JavaScript 语言

​ 在 JavaScript 的模块中,首先我们可以把语言按照文法、语义和运行时来拆分,这符合编程语言的一般规律:用一定的词法和语法,表达一定语义,从而操作运行时。

​ 把运行时分为数据结构和算法部分:数据结构包含类型和实例(JavaScript 的类型系统就是它的 7 种基本类型和 7 种语言类型,实例就是它的内置对象部分)。所谓的算法,就是 JavaScript 的执行过程。

1637851757444.png

1637852609986.png

(2)CSS 和 HTML

  • HTML部分

​ 都知道 HTML 的标签可以分为很多种,head 里面的我们称为元信息类标签,诸如 title、meta、style、link、base 这些,它们用来描述文档的一些基本信息。还有一类是一些诸如 section、nav 的标签,它们在视觉表现上跟 div 并没有区别,但是各有各的适用场景,我们把它们称作语义类标签。另外一类是 img、video、audio 之类的替换型媒体类标签,用来引入外部内容,平常开发中你也会经常用到。再有就是表单类的,比如 input、button。

1637851978758.png

  • 标签分类

    1,文档元信息:通常是出现在 head 标签中的元素,包含了描述文档自身的一些信息;

    2,语义相关:扩展了纯文本,表达文章结构、不同语言要素的标签;

    3,链接:提供到文档内和文档外的链接;

    4,替换型标签:引入声音、图片、视频等外部元素替换自身的一类标签;

    5,表单:用于填写和提交信息的一类标签;

    6,表格:表头、表尾、单元格等表格的结构。

  • CSS 部分

​ 按照惯例,我们也会从语言和功能两个角度去介绍。在语言部分,我们会从大到小介绍 CSS 的各种语法结构,比如 @rule、选择器、单位等等。功能部分,我们大致可以分为布局、绘制和交互类。

在布局类我们介绍两个最常用的布局:正常流和弹性布局

1637852663628.png

  • 浏览器的实现原理和 API

​ 我们会从一般的浏览器设计出发,按照解析、构建 DOM 树、计算 CSS、渲染、合成和绘制的流程来讲解浏览器的工作原理。在 API 部分,我们会从 W3C 零散的标准中挑选几个大块的 API 来详细讲解,主要有:事件、DOM、CSSOM 几个部分,它们分别覆盖了交互、语义和可见效果

1637852276771.png (3)前端工程实践

​ 我们在掌握了前面的基础知识之后,也就基本掌握了做一个前端工程师的底层能力。在这个模块中,我选择了性能、工具链、持续集成、搭建系统、架构与基础库这几个方向

1637852314214.png

  • 性能

    对任何一个前端团队而言,性能是它价值的核心指标,从早年“重构”的实践开始,前端有通过性能证明自己价值的传统。

  • 工具链

    这一部分,我将会探讨企业中工具链的建设思路。对一个高效又合作良好的前端团队来说,一致性的工具链是不可或缺的保障,作为开发阶段的入口,工具链又可以和性能、发布、持续集成等系统链接到一起,成为团队技术管理的基础

  • 持续集成

    对前端来说,持续集成是一个新的课题(当然对持续集成来说,前端也是一个新课题),比如 daily build 就完全不适用前端,前端代码必须是线上实时可用的。这一部分内容将会针对前端的持续集成提出一些建设的思路

  • 搭建系统

    前端工作往往多而繁杂,针对高重复性、可模块化的业务需求,传统的人工开发不再适用,搭建系统是大部分大型前端团队的选择。

  • 架构与基础库

  • 软件架构师主要解决功能复杂性的问题,服务端架构师主要解决高流量问题,而前端是页面间天然解耦,分散在用户端运行的系统,但是前端架构也有自己要解决的问题,前端架构的主要职责是兼容性、复用和能力扩展

1637852688014.png

1637852711791

1637852711791.png

3,架构图

d1cb4040d91207075e0591abffe1b9a8.jpg

4, 总结

前端的基础知识分成 JavaScript、HTML、CSS 以及浏览器四大重点模块,每个模块也分别有自己的技术重点。你可以在框架中,挑选你最需要的前端知识,按需学习。

  • JavaScript 部分中,主要会从文法和运行时的角度去讨论 JavaScript 语言。它们是互相关联的,而语义就是文法到运行时之间的桥梁;它们分别又是完备的,任何语言特性都离不开两者,所以从语法和运行时的角度,我们都可以了解完整的 JavaScript。
  • CSS 和 HTML 部分,会侧重从语言和设计思想的角度来讲解,我们同样可以对两者的全貌建立一些认知。
  • 浏览器部分,包含了浏览器工作的原理和一些重要的 API,包括 BOM、DOM、CSSOM 和其他一些内容。了解了这些知识,你才能把 JavaScript 和 HTML、CSS 连接起来,用 JavaScript 来实现功能。
  • 前端综合应用部分,主要是我的一些工作经验,我会选择我在手淘和淘宝工作中的一些案例来辅助讲解。