聊一下前端模块化的前世今生 前端模块化的发展史1. 第一阶段在 JavaScript 诞生之初,开发人员仅仅是用它写一些页面上的小交互效果,这些工作并不复杂,往往都是几百行代码就能搞定的事情,因此只要开发人员足够的小心谨慎,那么一般不会出什么差错。这个时候 ECMAScript 标准甚至都还没有问世,也没有专门的前端开发,这些简单的页面交互往往交给后端人员进行开发。 2. 第二阶段后来 AJAX 技术的出现,使得 JavaS 2024-12-04 前端工程化 #模块化
如何封装一个前端通用右键菜单组件 本文将手把手实现一个基于Vue的通用的前端通用右键菜单,具有以下特性: 与业务代码完全解耦 支持嵌套元素的右键菜单 菜单项可灵活配置 实现了一个小demo,演示地址:https://contextmenu-murex.vercel.app/ 为什么要做右键菜单?笔者做过一个思维导图项目,需要能够对思维导图上的节点和画布进行操作,如何实现呢?右键菜单是一个不错的选择,既不占用画布空 2024-02-22 #上下文菜单组件 #Vue
Vite双引擎架构之——EsBuild ESBuild在Vite中发挥了什么作用?ESBuild有多种作用: 作为打包器 作为代码转译(Transfomer)的工具,比如将jsx文件转译成js 作为代码压缩混淆的工具 依赖预构建—— ESBuild 作为打包工具 ESBuild是由Go开发的,通过并行等技术,任务执行效率非常之高 由Vite构建的项目中,在开发环境中Vite采用no-bundle的方式对源代码进行(不) 2024-02-15 前端工程化 #Vite #Esbuild
CSS-HTML知识总结 1. 什么是 <!DOCTYPE>?是否需要在 HTML5 中使用? 它是 HTML 的文档声明,通过它告诉浏览器,使用哪一个 HTML 版本标准解析文档。 而文档声明有多种书写格式,对应不同的 HTML 版本,<!DOCTYPE> 这种书写是告诉浏览器,HTML5 的标准进行解析。 2. 什么是可替换元素,什么是非可替换元素,它们各自有什么特点? 可替换元素是指这样一种 2024-01-15 面试
深入V8-JS数组在内存中如何存储 问题的来源在刷算法题的过程中,常常用到数组,数组的定义为: 在计算机科学中,数组数据结构,简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该元素对应的存储地址。 我们知道C++中的数组在内存中是连续存储的,且数组元素类型相同,这与上述数组的定义是一致的。但对于JS中的数组而言也是如此吗? JS 2023-11-06 JavaScript #V8
V8垃圾回收机制 栈空间其实就是调用栈占用的内存空间,每一个栈帧中保存着函数的执行上下文,而执行上下文中包含着原始类型数据和引用类型,当函数调用结束后,栈顶指针下移,该栈帧占用的内存空间被释放,意味着其执行上下文中的原始类型数据占用的内存都被释放了,而引用类型却仍存在于堆空间。 那么为什么v8要将内存空间分为栈空间和堆空间? 想象一个这样的场景:一个函数的执行上下文中包含了所有变量,有一些变量数据量十分的大,占用内 2023-10-10 #V8
JS的各种类型继承模式总结 原型式继承 原型式继承就是Object.create()的实现原理。 原型式继承非常适用于不需要单独创建构造函数,但仍需要在对象实例之间共享信息的场合。 12345678910function create(o){ // 创建一个临时构造函数,将传入的对象赋值给这个构造函数的原型 function F(){} F.prototype = o re 2023-05-07 JavaScript #类型继承 #原型 #寄生式组合继承
幽灵依赖与包管理工具 包管理工具最近接触了 vben-admin 这个开源项目,发现使用的包管理工具是 pnpm,而我之前一直都是用的 npm,想来不知他们有何差别,便去网上找了些资料和文档学习一下。 目前流行的包管理工具:npm,yarn,pnpm。pnpm的主要优势在于节省磁盘空间,install命令执行速度快,解决了幽灵依赖。 node_modules 的目录结构嵌套式在早期的npm@2版本中,他的 node_m 2023-05-05 前端工程化 #pnpm #幽灵依赖 #包管理工具
事件循环和消息队列(三) 面试题浏览器是如何渲染页面的?当浏览器的网络线程收到 HTML 文档后,会产生一个渲染任务,并将其传递给渲染主线程的消息队列。 在事件循环机制的作用下,渲染主线程取出消息队列中的渲染任务,开启渲染流程。 整个渲染流程分为多个阶段,分别是: HTML 解析、样式计算、布局、分层、绘制、分块、光栅化、画 每个阶段都有明确的输入输出,上一个阶段的输出会成为下一个阶段的输入。 这样,整个渲染流程就形成了 2023-05-05 面试题 #浏览器原理 #事件循环