06-前端语言串讲 | 青训营笔记

50 阅读5分钟

42_Salvation_4k.jpg

00 课程介绍

  • 复习前端基本知识
  • 扩展一些有趣的内容
  • 前端三剑客

Pasted image 20230418185829.png

Pasted image 20230418185831.png

Pasted image 20230418185833.png

01 基础

HTML

  • 基础复习

CSS

Pasted image 20230418190150.png

  • 伪类选择器与伪元素选择器
    • 元素自身使用伪类选择器
    • 元素内容使用伪元素选择器

JavaScript

Pasted image 20230424172743.png

  • 补充 self语言
    • Self语言是一种基于原型继承的面向对象编程语言,具有以下几个特性: 1. 原型继承:Self语言采用原型继承的方式,即通过复制现有对象来创建新对象,而不是通过类和实例的方式来创建对象。这种方式可以简化对象的创建和继承,提高代码的灵活性和可复用性。 2. 动态类型:Self语言是一种动态类型语言,即变量的类型在运行时才确定。这种方式可以提高代码的灵活性和可扩展性,但也增加了类型检查和调试的难度。 3. 消息传递:Self语言采用消息传递的方式来实现对象之间的通信和交互。这种方式可以提高代码的可读性和可维护性,但也增加了代码的复杂度和运行时的开销。 4.反射:Self语言支持反射机制,即可以在运行时获取对象的类型、属性和方法等信息,并进行动态修改和调用。这种方式可以实现一些高级的编程技巧和模式,如元编程、代理模式等。 5. 惰性求值:Self语言支持惰性求值(Lazy Evaluation),即只在需要时才计算表达式的值。这种方式可以提高代码的效率和性能,尤其是在处理大规模数据和复杂计算时。 6. 并发编程:Self语言支持并发编程,即可以通过协程(Coroutine)来实现多任务并发执行。这种方式可以提高程序的响应速度和并发能力,但也增加了代码的复杂度和调试难度。 总的来说,Self语言的特性使得它在面向对象编程、元编程、并发编程等方面具有一定的优势和应用价值。同时,Self语言也具有一定的挑战和限制,如动态类型的调试难度、消息传递的运行时开销等。因此,在实际应用中需要根据具体情况进行权衡和选择,选择合适的编程语言和技术,从而实现程序的高效、稳定和可维护。

Pasted image 20230424172815.png

  • 左侧是JS的最初提供的功能,中间是JS后续支持的,右侧是JS相关的产品。

Pasted image 20230424172918.png

  • 尽量对同一种类型进行操作,避免未定义错误。

Pasted image 20230424173024.png

  • JS的基本语法-function

浏览器引擎

  • 浏览器渲染页面的流程

Pasted image 20230424173103.png

  • V8展示流程

Pasted image 20230424173221.png

  • 值得注意的是其中 Turbofan,如果优化失败会返回进行重新类型确认,这也是为什么尽量操作同一类型

02 协作

趋势

Pasted image 20230424173435.png

CSS in HTML

Pasted image 20230424173505.png

Javascript in HTML

Pasted image 20230424173632.png

  1. script标签很强大,可以引入外部超链接文件与内部编写脚本
  2. 默认情况下脚本阻塞页面加载
  3. 添加 异步标号()使得脚本的下载变成异步,添加diff使脚本的执行变成异步
  4. JS脚本都是全局的

Pasted image 20230424173933.png 5. JS的重要功能:将页面处理为文档树对象 6. JS触发过程包含了事件捕获与冒泡两个阶段

Pasted image 20230424174145.png 7. JS中的事件处理使单线程的 8. 先处理宏队列,再处理微任务队列,再处理宏任务队列…… 1. 微任务:promise call back等等 2. 宏任务:浏览器默认执行的代码

HTML in Javascript

Pasted image 20230424174528.png

  • 主要是动态修改HTML内容
  • 一般会基于现成的渲染框架来做
    • 比如最经典的模板语言,上图左侧 Mustache
    • 右侧是比较现代的JSX

CSS in Javascript

Pasted image 20230424174721.png

  • JS动态操作CSS
  • 左下是React演示
    • React中由于class是一个保留关键字,所以使用classname表示
  • 右侧是Vue的演示

Pasted image 20230424174948.png

  • 主要是为了解决class名冲突的问题
  • CSS module 会将原来的名称替换为一个随机字符串
  • JSS通过模板直接引入

03 HTML(5)

HTML DTD

Pasted image 20230424175120.png

标签

Pasted image 20230424175213.png

head 标签

Pasted image 20230424175242.png

body 功能性标签

Pasted image 20230424175301.png

  • 随用随查就可以

HTML ARIA

  • ARIA (Accessible Rich Internet Applications) 是一组属性,用于定义使残障人士更容易访问 Web 内容和 Web 应用程序(尤其是使用 JavaScript 开发的应用程序)的方法。

Pasted image 20230424175520.png

  • 用对比不用好,不用比用错好

HTML5

Pasted image 20230424175637.png

HTML5 语义化标签

Pasted image 20230424175706.png

  • 用对比不用好,不用比用错好

HTML5 表单增强

Pasted image 20230424175814.png

  • 左侧是HTML5提供的新的表单功能,右侧是一个简单的示例

HTML5 存储

Pasted image 20230424175910.png

HTML5 IndexedDB

Pasted image 20230424175952.png

  • 事务性
  • 异步
  • 存储高
  • 支持索引整合
  • 效率一般但是为前端提供了一个新的访问数据方式

HTML5 PWA & AMP

Pasted image 20230424180109.png

  • PWA
  • AMP

HTML5 Audio

Pasted image 20230424180150.png

  • 像一个拓扑图输出电路

HTML5 video

Pasted image 20230424180233.png

  • 也可使用source引入
  • 可以支持实现一个可定制化的能力

HTML5 二进制

Pasted image 20230424180334.png

  • 通过集成Blob对象实现对较大的二进制文件的读取能力

HTML5 API

Pasted image 20230424180430.png

  • 上图列举了三个HTML5的API

HTML5 web worker

Pasted image 20230424180530.png

  • 右下角是一个 sever worker

HTML5 web socket

Pasted image 20230424180605.png

  • 支持 socket 式的全双工通信,模拟TCP

HTML5 Shadow DOM

Pasted image 20230424180644.png

HTML5 Web Component

  • 实现自定义标签能力

Pasted image 20230424180719.png

HTML5 SVG & Canvas

  • SVG:基于XML,向量化的,支持交互的图片
  • Canvas:HTML元素,可以画各种各样的图形
  • 区别:SVG基于向量,可扩展,Canvas基于点阵,会失真;SVG对事件支持更好;Canvas对元素绘制支持更好

WebGL& WebGPU

  • 将前端GPU能力暴露给前端开发人员使用

Pasted image 20230424181037.png

  • 实现原理

Pasted image 20230424181139.png

  • 重点:通过着色器语言

Webassembly

Pasted image 20230424181234.png

03 拓展交流

web的风靡

Pasted image 20230424181308.png

大前端

Pasted image 20230424181400.png

交互范式 MVC & MVVM & MVP

Pasted image 20230424181452.png

  • VC view处理界面相关交互,model维护渲染界面需要的数据层,controller处理业务逻辑
  • VP是VC的改进,将所有的操作内聚到了presenter这层操作
  • VVM 可复用性增强

04 课程总结

Pasted image 20230424181712.png