Web前端知识体系精简

站长手记 作者: 2024-08-28 10:05:01
Web前端技术由 html、css 和 javascript 三大部分构成,是一个庞大而复杂的技术体系,其复杂程度不低于任何一门后端语言。而我们在学习它的时候往往是先从某一个点切入,然后不断地接触和学习新的知识点,因此对于初学者很难理清楚整个体系的脉络结构。

一、JAVASCRIPT 篇

0、基础语法

1、函数原型链

2、函数作用域

3、this 指针

4、new 操作符

5、闭包

6、单线程与事件循环

7、异步通信 Ajax技术

  • 0 - 请求未发送,初始化阶段
  • 1 - 请求发送中,服务器还未收到请求
  • 2 - 请求发送成功,服务器已收到请求
  • 3 - 服务器处理完成,开始响应请求,传输数据
  • 4 - 客户端收到请求,并完成了数据下载,生成了响应对象

8、模块化

9、Node.js

10、ES6

  • 新增 let、const 命令 来声明变量,和var 相比,let 声明的变量不存在变量提升问题,但没有改变JS弱类型的特点,依然可以接受任意类型变量的声明;const 声明的变量不允许在后续逻辑中改变,提高了JS语法的严谨性。
  • 新增解构赋值、rest语法、箭头函数等,这些都是为了让代码看起来更简洁,而包装的语法糖。
  • 新增模块化机制,这是 JavaScript 走向规范比较重要的一步,让前端更方便的实现工程化。
  • 新增类和继承的概念,配合模块化,JavaScript 也可以实现高复用、高扩展的系统架构。
  • 新增模板字符串功能,高效简洁,结束拼接字符串的时代。
  • 新增 Promise 机制,解决异步回调多层嵌套的问题。


二、CSS 篇

1、CSS选择器

2、CSS Reset

3、盒子布局

4、浮动布局

5、定位布局

6、弹性布局

7、CSS3 动画

8、BFC

  • 根元素,即HTML元素
  • float的值不为none
  • overflow的值不为visible
  • display的值为inline-block、table-cell、table-caption
  • position的值为absolute或fixed

9、Sprite,Iconfont,@font-face

10、CSS Hack


三、HTML 篇

1、BOM

  • document - 即文档对象,渲染引擎在解析HTML代码时,会为每一个元素生成对应的DOM对象,由于元素之间有层级关系,因此整个HTML代码解析完以后,会生成一个由不同节点组成的树形结构,俗称DOM树,document 用于描述DOM树的状态和属性,并提供了很多操作DOM的API。
  • frames - HTML 子框架,即在浏览器里嵌入另一个窗口,父框架和子框架拥有独立的作用域和上下文。
  • history - 以栈(FIFO)的形式保存着页面被访问的历史记录,页面前进即入栈,页面返回即出栈。
  • location - 提供了当前窗口中加载的文档相关信息以及一些导航功能。
  • navigator - 用来描述浏览器本身,包括浏览器的名称、版本、语言、系统平台、用户特性字符串等信息。
  • screen - 提供了浏览器显示屏幕的相关属性,比如显示屏幕的宽度和高度,可用宽度和高度。

2、DOM 系统

  • 1级DOM - 在1998年10月份成为W3C的提议,由DOM核心与DOM HTML两个模块组成。DOM核心能映射以XML为基础的文档结构,允许获取和操作文档的任意部分。DOM HTML通过添加HTML专用的对象与函数对DOM核心进行了扩展。
  • 2级DOM - 鉴于1级DOM仅以映射文档结构为目标,DOM 2级面向更为宽广。通过对原有DOM的扩展,2级DOM通过对象接口增加了对鼠标和用户界面事件(DHTML长期支持鼠标与用户界面事件)、范围、遍历(重复执行DOM文档)和层叠样式表(CSS)的支持。同时也对DOM 1的核心进行了扩展,从而可支持XML命名空间。
  • 3级DOM - 通过引入统一方式载入和保存文档和文档验证方法对DOM进行进一步扩展,DOM3包含一个名为“DOM载入与保存”的新模块,DOM核心扩展后可支持XML1.0的所有内容,包括XML Infoset、 XPath、和XML Base。

3、事件系统

  • 第一根手指放下,触发 touchstart,除此之外什么都不会发生
  • 手指滑动时,触发touchmove
  • 第二根手指放下,触发 gesturestart
  • 触发第二根手指的 touchstart
  • 立即触发 gesturechange
  • 任意手指移动,持续触发 gesturechange
  • 第二根手指弹起时,触发 gestureend,以后将不会再触发 gesturechange
  • 触发第二根手指的 touchend
  • 触发touchstart (多根手指在屏幕上,提起一根,会刷新一次全局touch)
  • 弹起第一根手指,触发 touchend
  • 事件捕获:当用户触发点击事件后,顶层对象document 就会发出一个事件流,从最外层的DOM节点向目标元素节点传递,最终到达目标元素。
  • 事件处理:当到达目标元素之后,执行目标元素绑定的处理函数。如果没有绑定监听函数,则不做任何处理。
  • 事件冒泡:事件流从目标元素开始,向最外层DOM节点传递,途中如果有节点绑定了事件处理函数,这些函数就会被执行。

4、HTML解析过程

  • 用户输入网址,浏览器向服务器发出请求,服务器返回html文件;
  • 渲染引擎开始解析 html 标签,并将标签转化为DOM节点,生成 DOM树;
  • 如果head 标签中引用了外部css文件,则发出css文件请求,服务器返回该文件,该过程会阻塞后面的解析;
  • 如果引用了外部 js 文件,则发出 js 文件请求,服务器返回后立即执行该脚本,这个过程也会阻塞html的解析;
  • 引擎开始解析 body 里面的内容,如果标签里引用了css 样式,就需要解析刚才下载好的css文件,然后用css来设置标签的样式属性,并生成渲染树;
  • 如果 body 中的 img 标签引用了图片资源,则立即向服务器发出请求,此时引擎不会等待图片下载完毕,而是继续解析后面的标签;
  • 服务器返回图片文件,由于图片需要占用一定的空间,会影响到后面元素的排版,因此引擎需要重新渲染这部分内容;
  • 如果此时 js 脚本中运行了 style.display="none",布局被改变,引擎也需要重新渲染这部分代码;
  • 直到 html 结束标签为止,页面解析完毕。

5、重绘与回流

  • 添加、删除元素(回流+重绘)
  • 隐藏元素,display:none(回流+重绘),visibility:hidden(只重绘,不回流)
  • 移动元素,比如改变top,left的值,或者移动元素到另外一个父元素中。(重绘+回流)
  • 对style的操作(对不同的属性操作,影响不一样)
  • 还有一种是用户的操作,比如改变浏览器大小,改变浏览器的字体大小等(回流+重绘)

6、本地存储

  • Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value) 和 等号。
  • Opera允许cookie多达4096个字节,包括:名(name)、值(value) 和 等号。
  • Internet Explorer允许cookie多达4095个字节,包括:名(name)、值(value) 和 等号。

7、浏览器缓存机制

  • 手动刷新页面(F5),浏览器会直接认为缓存已经过期(可能缓存还没有过期),在请求中加上字段:Cache-Control:max-age=0,发包向服务器查询是否有文件是否有更新。
  • 强制刷新页面(Ctrl+F5),浏览器会直接忽略本地的缓存(有缓存也会认为本地没有缓存),在请求中加上字段:Cache-Control:no-cache (或 Pragma:no-cache),发包向服务重新拉取文件。

8、History

  • window.history.back( )  返回到上一个页面
  • window.history.forward( )  进入到下一个页面
  • window.history.go( [delta] )  跳转到指定页面
  • pushState是往history对象里添加一个新的历史记录,即压栈。
  • replaceState 是替换history对象中的当前历史记录。

9、HTML5离线缓存

  • CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存
  • NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
  • FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
  • 离线浏览 - 用户可在应用离线时使用它们
  • 速度 - 已缓存资源加载得更快
  • 减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

10、Web语义化与SEO

原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_70063.html
Web前端 知识体系