- 博客(23)
- 收藏
- 关注
原创 [特殊字符] 前端代码规范化:从 ESLint 到 CI/CD,全流程指南
这样,每次提交代码,GitHub Actions 都会自动运行 ESLint 和 Stylelint,如果代码不符合规范,提交将被拦截。在项目开发中,我们可以使用 GitHub Actions / GitLab CI/CD 在每次提交时自动检查代码质量。这样,我们不仅能在本地开发时确保代码质量,还能在 CI/CD 自动化流程中保障团队协作的高效性和代码规范!:拦截 Git 提交前运行代码检查,防止不合规代码提交。这样,每次保存代码时都会自动格式化,并检查代码质量。这样,CSS 代码也能保持统一风格。
2025-03-24 11:22:28
503
原创 前端工程化:系统化的开发与管理
工程化环节技术 & 方案代码规范化模块化开发Vue 组件化、React Hooks、业务模块拆分构建优化代码质量自动化部署。
2025-03-24 10:52:52
501
原创 [特殊字符] Vue 源码全流程详解 — 从初始化到更新视图
↓初始化 `_init()`↓创建响应式 `initState()`↓编译模板 `compileToFunction()`↓创建虚拟 DOM `createVNode()`↓`patch()` 将 VNode 渲染为真实 DOM↓数据变更时 `watcher` 触发 `update()`
2025-03-10 17:37:20
371
原创 进程与线程
总的来说,在浏览器中遇到异步事件时,并不会重新开辟一个新的线程,异步操作会由其他线程处理,通过事件循环机制保证异步操作的回调函数被适时执行,以保证主线程不被阻塞。在这些线程中进行的异步操作会在合适的时机将回调函数加入任务队列(Task Queue)。一旦主线程空闲,它会从任务队列中获取任务,并按照顺序执行。
2024-04-03 15:18:12
177
1
原创 HTTP协议与请求过程
发送请求:客户端发送包含请求方法(GET、POST等)、目标URL、协议版本、请求头和请求体等信息的HTTP请求消息。服务器处理请求:服务器接收到请求后,根据请求内容进行处理,可能包括访问数据库、调用后端服务等。客户端收到服务器的FIN后,发送一个ACK给服务器,确认收到关闭请求并同意关闭连接。关闭连接:服务器向客户端发送完整的响应后,可以选择关闭连接或保持连接以便后续请求。服务器收到客户端的FIN后,发送一个ACK给客户端,确认收到了关闭请求。服务器发送一个FIN给客户端,表示服务器也准备关闭连接。
2024-04-03 15:16:51
1724
1
原创 计算机网络的七层模型
四次挥手(Four-way Handshake)是在释放TCP连接时使用的过程,包括一端发送FIN(结束)包给另一端,另一端回应一个带有ACK标志的包表示确认收到,然后另一端发送一个FIN包表示自己也准备关闭连接,最后接收方发送一个带有ACK标志的包确认关闭连接。三次握手(Three-way Handshake)是在建立TCP连接时使用的过程,包括客户端向服务器端发送SYN(同步)包,服务器端回应一个带有SYN和ACK(确认)标志的包,最后客户端再发送一个带有ACK标志的包,确认连接已建立。
2024-04-03 15:12:07
702
1
原创 webpack相关面试
2、url-loader:和 file-loader 类似,但是能在⽂件很⼩的情况下以 base64 的⽅式把⽂件内容注⼊到代码中去。7、style-loader:把 CSS 代码注入到 JavaScript 中,通过 DOM 操作去加载 CSS。1、file-loader:把文件输出到多个文件夹中,在代码中通过相对 URL 去引用输出的文件。3、source-map-loader:加载额外的 Source Map ⽂件,以⽅便断点调试。4、image-loader:载并且压缩图⽚⽂件。
2024-03-04 17:19:39
426
原创 网络、浏览器
这个因为第一次挥手表示客户端发送了一个fin的包,表示客户端已发送数据完毕,但是服务端这个时候可能还有数据没有发送完成,先发送给客户端一个ask的包,等待自己的数据发送完成才能向客户端发送一个 fin的包,表示自己的数据也已发送完成。这样中间就必须为两次来发送ask和fin。
2024-03-01 13:59:03
1386
1
原创 2023前端面试题(持续更新)
首屏呈现渲染:用户无需等待页面所有js加载完成就可以看到页面视图(压力来到了服务器,所以需要权衡哪些用服务端渲染,哪些交给客户端)seo:搜索引擎优先爬取页面HTML结构,使用ssr时,服务端已经生成了和业务想关联的HTML,有利于seo。关于这个静态标记,其作用是为了会发生变化的地方添加一个flag标记,下次发生变化的时候直接找该地方进行比较。这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。首屏异步获取数据,在服务端预渲染的时候就应该已经完成。
2023-06-26 15:08:47
361
1
原创 前端常见算法
括冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序 搜索算法 二分查找、广度优先搜索、深度优先搜索 动态规划算法 贪心算法 字符串算法
2023-06-14 15:57:32
1856
原创 Typescript
不允许改变变量的数据类型,除非进行强制的类型转换 TypeScript 是强类型语言变量可以被赋予不同的数据类型 JavaScript 是弱类型语言抽象类做为其他派生类的基类使用。它们一般不会直接被实例化。也不允许实例化。抽象类的好处就是可以抽离一些事物的共性,有利于代码的复用和扩展,抽象类可以实现多态。
2023-06-11 14:46:29
213
1
原创 垃圾回收机制与内存泄漏
申请内存空间: let obj = {};使用内存空间: (读写操作) obj.name = ‘sunny’;释放内存空间: (js中并没有相应的释放api) obj = null;对象不再被引用的时候是垃圾;对象不能从根上访问到时也是垃圾;实现原理核心思想就是将整个垃圾回收操作分为两个阶段:通过两次的遍历行为把我们当前的垃圾空间进行回收,最终交给我们的空闲列表进行维护。总结核心思想:分标记和清除两个阶段:优点可以回收循环引用的对象空间。相对于引用计数算法来说:解决对象循环引用的不能回收问题。
2023-06-09 16:35:45
285
1
原创 even loop事件循环机制
JS是单线程的;eventLoop就是沟通JS引擎线程和浏览器线程的桥梁,也是浏览器实现异步非阻塞模型的关键。异步(setTimeout,ajax)DOM事件 回调,都是基于event loop。
2023-06-09 15:15:36
120
原创 js常见的六种继承方式
然后,将子类的原型设置为临时构造函数的实例,从而实现了对父类原型的继承。然后,createObject函数通过增强新对象的方式,在新对象上添加了sayName方法,从而实现继承和增强。在上面的代码中,createObject函数通过将一个空函数的原型设置为obj,从而创建了一个新的对象,并将新对象的原型指向obj,从而实现了继承。寄生组合式继承是指通过借用构造函数来继承实例属性,然后通过将原型设置为一个继承父类原型的实例来继承父类原型上的属性和方法。:这种方式无法继承父类原型对象上的属性和方法。
2023-06-09 11:27:11
633
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人