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

73 阅读3分钟

01 前端语言的基本能力

image.png

image.png

(1)HTML

image.png

  • <xxx>代表元素,标签
  • SEO

(2)CSS

image.png

  • 语法简单
  • 伪类和伪元素

image.png

(3)js

image.png

image.png

image.png

  • 结果是“72”
  • 一般用定义自变量的方式定义object

image.png

image.png

  • 渲染引擎(加载页面)和js引擎
  • 推断哪些可以作为一个整体,看成一个图层,这样加快渲染的效率

image.png

  • 经过词法、语法解析转化为AST树,ignition转化为字节码,字节码可以在虚拟机上运行
  • deoptimize,如果发现数据类型不对,就让ignition重新优化类型的代码,这也是为什么尽量不要改变js类型的原因

02 前端语言的协作配合

image.png

  • css生态趋势:工具链、css规范、css框架库
  • js:react/vue、跨端、工具链

(1)css在html中的使用

image.png

(2)js在html中的使用

  • 默认情况下script会阻塞页面的解析,加async脚本的下载异步,加defer脚本的执行异步
  • 默认script是定义在全局的

image.png

image.png

  • 事件捕获是对计算机来说的,方便精准找到触发元素
  • 事件冒泡是对开发者,方便来做一些事件代理的功能

微任务:promise的callback,比如promise.resolve执行的事件 宏任务:浏览器默认情况下执行的代码,比如:setTimeout、setInterval

(3)html在js中

image.png

(4)css在js中

image.png

image.png

03 你不知道的HTML(5)

HTML并非图灵完备的,没有控制流,它只是一门标记语言

image.png

image.png

head标签

image.png

  • 用户一般看不到
  • link引入css

image.png

根元素标签、文本、语义、表单、交互、分组、嵌入元素相关的

image.png

image.png

image.png

语义化标签便于SEO

image.png

html5存储

image.png

image.png

  • indexedDB使用了objectStore(对象存储空间),可以存储任何类型的数据;存储的容量很大;异步的,读取打开都是通过异步的方式来读取的;事务性;支持索引
  • webStorage只能存储字符串类型的数据

基于存储的应用有PWA和AMP

  • PWA基于service worker来实现,先会判断是否有激活的service worker,如果有,就会拦截请求,返回对应的响应数据;如果没有,判断如果有走service worker的生命流程
  • AMP主要针对搜索引擎来使用

image.png

image.png

image.png

image.png

image.png

image.png

  • web worker多线程的一种方式
  • postmessage之间进行通信

image.png

  • web socket:支持全双工

image.png

  • shadow dom可以避免内部的元素被外部访问到,这样可以保证有内聚功能的html元素

image.png

image.png

  • SVG:基于xml的;基于向量化;可以用来交互;矢量;放大不会失真;对事件处理支持的更好;draw(素描)
  • canvas:html元素;点阵的方式来绘图;放大会失真;对游戏支持很好;paint(水彩)

image.png

image.png

image.png

04 拓展分享

image.png

image.png

MVC && MVVM && MVP

image.png

  • mvc:view处理外部界面相关的交互,controller处理业务逻辑,model渲染界面所需要的数据层。用户触发了登录操作,controller会判断输入框内容是否正确,不正确的话会让view给出提示,正确的话则让model进行数据更新,并返回给view
  • mvp:是对mvc的改进,它把所有的操作内聚到了presenter这一层,需要同时处理事务层和数据层的相互操作,以及整个状态的统一
  • mvvm:最早由微软提出,在前端以vue作为代表持续发扬光大,本质与mvp比较类似,区别是实现了双向绑定的能力,让view model层的负担大大减弱,同时view model也不需要和view层耦合,具备了可复用性

image.png