沐游虞笔记
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • 前端面试题

    • HTML面试题汇总(无答案)
    • HTML面试题汇总
    • CSS 面试题汇总(无答案)
    • CSS 面试题汇总
    • javascript 面试题汇总(无答案)
    • javascript 面试题汇总
    • promise 面试题(无答案)
    • promise 面试题
    • 浏览器面试题汇总(无答案)
    • 浏览器面试题汇总
    • 网络面试题汇总(无答案)
    • 网络面试题汇总
    • 工程化面试题汇总(无答案)
    • 工程化面试题汇总
    • VUE面试题汇总(无答案)
    • VUE面试题汇总
  • 直播课文件

    • 静态页面学习指导
    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • JS基础知识回顾
    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
    • 基础领航考试题
    • 基础领航考试题(答案)
    • 2024前端发展
    • JS核心概念学习指导
    • 第三方库与工程化学习指导
    • Vue入门学习指导
    • vue进阶学习指导
    • 前端性能优化
  • 笔面试环节知识讲解

    • 目录
    • 图像处理
    • 图像处理(面试)
    • Webpack构建优化
    • Webpack构建优化(面试)
    • TTS性能优化
    • TTS性能优化(面试)
    • 实时协作
    • 实时协作(面试)
    • 网页复制图片到剪贴板
    • 网页复制图片到剪贴板(面试)
    • vite插件
    • vite插件(面试)
    • 表单数据同步与保持
    • 表单数据同步与保持(面试)
    • 优化虚拟列表
    • 优化虚拟列表(面试)
    • 微前端解决巨石应用
    • 微前端解决巨石应用(面试)
    • DNS解析与优化
    • DNS解析与优化(面试)
    • 前端监控
    • 前端监控(面试)
    • 12.跨标签页通信
    • 12.跨标签页通信(面试)
    • 13.Vite相关优化
    • 13.Vite相关优化(面试)
    • 14.计时器节流问题
    • 14.计时器节流问题(面试)
    • 15.多文件预览支持
    • 15.多文件预览支持(面试)
    • 16.defer优化白屏时间
    • 16.defer优化白屏时间(面试)
  • Vue3整体变化
  • Vue2响应式回顾
  • Vue3响应式变化
  • nextTick实现原理
  • 两道代码题
  • Vue运行机制
  • 渲染器核心功能
  • 事件绑定与更新
  • computed面试题
  • watch面试题
  • 图解双端diff
  • 图解快速dff
  • 最长递增子序列
  • 模板编译器
  • 模板编译提升
  • 组件name作用
  • 路由传参方式
  • 基础篇

    • 序章React介绍
    • JSX基础语法
    • React基本介绍
    • 表单
    • 生命周期
    • 组件与事件绑定
    • 组件状态与数据传递
    • Hooks
    • React--redux介绍
    • React-router介绍
  • 就业篇

    • 属性默认值和类型验证
    • 高阶组件
    • Ref
    • Context
    • Render Props
    • Portals
    • 错误边界
    • 组件渲染性能优化
    • 前端框架的理解
    • Reacti和Vue描述页面的区别
    • 前端框架的分类
    • 虚拟DoM
    • React整体架构
    • React渲染流程
    • Fiber双缓冲
    • MessageChannel
    • Scheduleri调度普通任务
    • Scheduleri调度延时任务
    • 最小堆
    • React中的位运算
    • beginWork工作流程
    • completeWork工作流程
    • 图解diff算法
    • commit工作流程
    • lane模型
    • React中的事件
    • Hooks原理
    • useStateuseReducer.
    • effect相关hook
    • useCallbackuseMemo
    • useRef
    • Update
    • 性能优化策略之eagerState
    • 性能优化策略之bailout
    • bailoutContextAPl
    • 性能优化对日常开发启示
  • 前端监控概述
  • 错误监控
  • 数据上报
  • 页面性能监控
  • 用户行为收集与埋点
  • CSS3手册
  • HTML5手册
  • JavaScript语言提升

    • es补充
    • 事件循环
    • promise基础
    • Promise的链式调用
    • Promise的静态方法
    • async和await
    • Promise相关面试题
  • 网络

    • 客户端与服务器
    • 关于 Apifox 的使用
  • git文档
  • 工程化

    • CommonJS
    • ES module
    • npm文档(包管理)
    • Lass笔记
    • webpack工具
  • canvas详解
  • uinapp笔记
  • 自动化测试
  • oauth2令牌

    • 认识Oauth2
    • 三方应用实现github授权
    • 微信三方应用登录实现
    • 支付宝沙箱支付功能
  • 静态页面项目学习指导

    • 属性的计算过程
    • 层叠继承规则总结
    • BFC
    • 静态页面学习指导
  • JS基础知识回顾

    • JS基础知识回顾
  • JS核心概念学习指导

  • 标准库与web api

    • DOM 事件的传播机制
    • DOM 事件的注册和移除
    • 阻止事件默认行为
  • 经典案例学习指导

  • 基础领航考试

    • 基础领航考试题
    • 答案
  • HTML+CSS语言提升学习指导

  • Javascript语言提升

    • 2024前端发展
  • 网络与git学习指导

  • 第三方库与工程化学习指导

    • 第三方库与工程化学习指导
      • 事件循环
        • 示例1
        • 示例2
      • 工程化
        • 模块化
        • 包管理器
        • 预处理器
        • 后处理器
        • css原子化
        • nodejs版本的问题
        • 打包工具
  • Vue入门学习指导

    • Vue入门学习指导
  • vue进阶学习指导

    • vue进阶学习指导
  • vue组件库学习指导

    • 前端性能优化
  • 入门到实战收官总结

    • MVVM
  • 38期直播课
  • 第三方库与工程化学习指导
luzhichang
2024-04-01
目录

第三方库与工程化学习指导

# 事件循环

1、javascript是一种单线程的语言,意味着,它只有一个主线程,这个主线程就是浏览器的渲染主线程,而这个渲染主线程承担了很多工作,渲染页面,执行js等等都在其中运行。如果说,渲染主线程上执行了一个长时间的任务,那么页面可能就会被锁定,无法响应用户的任何操作,为了避免这个情况,才有了事件循环

2、同步和异步,事件循环的基本思想,就是将任务分成两类,同步和异步任务。同步任务在主线程执行,异步任务(网络请求,定时器,事件监听)交给其他的线程去指向,当主线程的任务结束之后,才会转而去执行后续的代码。当其他线程完成时,将事先传递的回调函数包装成任务,加入到消息队列的末尾,等待着主线程去调度。

image-20231008212026650

以前说起事件循环,其实就是

宏任务:定时器,用户交互,网络请求,IO任务,script

微任务:Promise....

随着浏览器复杂度的提升,W3C不再使用宏任务(队列)的说法

  • 延时队列 用于存放定时器到达之后的回调任务,优先级-中低级
  • 交互队列 用于存放用户操作后产生的事件处理任务 优先级-高
  • 微队列 用于存放需要最快执行的任务,优先级-最高

一句话定义事件循环--- 浏览器渲染主线程的工作方式。单线程是异步产生的原因,事件循环是异步的实现方式。

事件循环,在chrome浏览器底层源码中,就是一个不会结束的循环,每次循环,从消息队列中,取出第一个任务执行。而其他的线程只需要在合适的时候将任务加入到队列末尾即可

# 示例1

console.log(1);
setTimeout(()=> console.log(2));
Promise.resolve().then(()=>console.log(3));
Promise.resolve().then(()=>setTimeout(()=>console.log(4)));
Promise.resolve().then(()=>console.log(5));
setTimeout(()=> console.log(6));
console.log(7);
1
7
3
5
2
6
4

# 示例2

观察案例,熟悉事件循环过程

# 工程化

是我们前端学习承上启下的一个重点。

中级其中一个标准---工程化玩的熟悉不熟悉

# 模块化

commonjs

// 下面是ESM
import xxx as XXXX from "vue"
import xxx from "./views/ShowComp"

commonjs由于是在node环境中,因此,可以帮我们查找具体的文件

区分相对路径和第三方库路径(bare import)

添加.js后缀

添加文件夹同名文件或者index.js的读取

esModule

由于是浏览器规范,因此路径只支持绝对路径,并不支持省略后缀,帮助查找index.js文件等写法。在工程中,之所以我们可以这么做,是由于打包工具帮我们处理了这些事情。

nodejs14版本之后,支持ESM,为了区分CJS和ESM的写法一般有几种处理方式:

1. 后缀名区分
后缀名.cjs或者.cts 表示支持commonjs
后缀名.mjs或者.mts 表示支持esModule

2. package.json中限定
type: 'module' 限定工程支持esModule写法

es模块化的一个问题

要注意:通过es module模块化导出的话,尽量导出函数或者常量,不要直接导出变量,简单来说

就是不要让引入方能直接引入导出的变量

所以,能用const声明,尽量使用const声明

# 包管理器

  • npm
  • yarn
  • cnpm
  • pnpm

npm i xxx --force 或者 --legacy-peer-deps

peerDependence 对等依赖

有一些第三方包的作者,估计增加的peerDependence配置

自己的工程
|-- lodash.4.x
|-- xxx.lib
|    |-- lodash.3.x

# 预处理器

  • Sass/Scss
  • Less
  • Stylus

# 后处理器

post-css css兼容性,前缀 --webkit --moz

# css原子化

tailwind 通过固定写类名的方式,直接写css

# nodejs版本的问题

nvm

n

nodejs请安装偶数版本

Vue-cli 5.x 需要nodejs 14以上版本

# 打包工具

为什么需要打包工具:简单来说,一句话,开发阶段的期望和生产环境的期望是不一样的

开发阶段:最好能用最新的,开发效率最高的,模块化组织更细腻的。

生产环境:兼容性要求更高,网络要求更高,安全性要求更高

rust化 绣化

webpack

vite

rollup

esbuild

2024前端发展
Vue入门学习指导

← 2024前端发展 Vue入门学习指导→

Theme by Vdoing | Copyright © 2021-2024 蜀ICP备2024068710号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式