前端工程化面试题
说一下模块化方案
模块化是为了解决代码的复用和组织问题,可以说有了模块化才让前端有了工程的概念,模块化要解决两大问题 代码隔离和依赖管理,从node.js最早发布的commonjs 到浏览器端的 AMD,CMD 规范以及兼容的 UMD 规范,再到现在主流的ES Module规范。
- AMD CMD 都是为了解决浏览器端的模块化问题,区别就是代码执行时机不同,CMD是懒执行。
- UMD就是兼容CommonJS ,AMD 以及全局变量来加载模块。
- ESM是在语言标准的层面上实现了模块功能,Node.js也支持(13版本后,.mjs 或者声明type:module),
CJS和ESM的区别:
- CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
- CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
- ES6 模块之中,顶层的
this指向undefined;CommonJS 模块的顶层this指向当前模块的输出module.exports - CommonJS 模块的
require()是同步加载模块,动态import是异步加载,有一个独立的模块依赖的解析阶段。
CJS和ESM的原理可以再研究
ESM生态在逐渐发展,随着 vite等工具的流行,no-bundle概念也在逐渐推广,CommonJS的历史包袱还需要一定的时机去转化。
介绍一下vite 相比webpack的优缺点
- vite把自己定义为工具链,很多可以开箱即用,配置简单,生态也再不断完善,ESM,bundle-less也是大势所趋。
- 基于ESM和ESBuild 的Dev Server,冷启动速度快,按需编译
- webpack 兼容性好,生态完善
说一下Rollup
rollup是一款打包构建工具,通常用来构建一些库,比如Vue等都是用rollup构建的。是基于ESM的打包器,支持tree-shaking,scope hoisting等特性。
可以输出多种模块规范的代码,也有丰富的插件。Rollup 插件基本就是各种 Hook 函数的组合。
AST和Babel
- 抽象语法树:对代码的一种抽象表示,是树形结构。
- 应用:代码高亮,JS转义,代码压缩,ESLint,Prettier等
- babel 编译 ES5 的过程:parse(解析代码生成AST)、transform(通过 traverse 遍历 AST 进行处理转换)、generator (生成代码)
包管理工具
- pnpm
- 解决问题:幽灵依赖和分身依赖(相同依赖不同版本)
- 硬链接: 保证相同的包不会被重新新增,磁盘的目录下,相当于备份
- 软连接:node_modules 里的软链接到对应的.pnpm下的依赖,解决幽灵依赖问题
相关文章:
前端工程化面试题
说一下模块化方案 模块化是为了解决代码的复用和组织问题,可以说有了模块化才让前端有了工程的概念,模块化要解决两大问题 代码隔离和依赖管理,从node.js最早发布的commonjs 到浏览器端的 AMD,CMD 规范以及兼容的 UMD 规范,再到现…...
【Visual Studio】下载安装 Visual Studio Community 并配置 C++ 桌面开发环境的图文教程
引言 Visual Studio 是一个面向 .NET 和 C 开发人员的综合性 Windows 版 IDE,可用于构建 Web、云、桌面、移动应用、服务和游戏。 安装步骤 访问 Visual Studio 的官方下载页面: https://visualstudio.microsoft.com/zh-hans/downloads/运行已下载的 V…...
010Editor:十六进制编辑器
介绍 世界上最好的十六进制编辑器和出色的文本编辑器 010 Editor 是用于处理文本和二进制数据的终极工具包。 添加模板 模板库https://www.sweetscape.com/010editor/repository/templates/ 先下载一个ELF 模板 运行模板...
Vscode中Github Copilot无法使用
现象 Copilot侧边栏显示要登录,但是点击"github登录"没有反应与Copilot对话,报错如下: Unexpected token o, "[object Rea"... is not valid JSON解决方案 在网上怎么找都没找到类似的问题,最后发现是Vsco…...
<项目代码>YOLOv8表情识别<目标检测>
YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一个回归问题,能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法(如Faster R-CNN),YOLOv8具有更高的…...
利用Msfvenom实现对Windows的远程控制
1.实验准备 kali安装 Apache2(如果尚未安装): sudo apt install apache2 启动 Apache2 服务: sudo systemctl start apache2确认 Apache2 的默认网页可以访问: 打开浏览器并访问 http://<你的Kali IP>ÿ…...
Java Iterator和for区别详解和常见问题及解决方式
在 Java 中,Iterator 是一个用于遍历集合元素的接口。它为访问集合中的元素提供了一种标准的方法,不管具体集合的实现如何。本文将详细讲解 Iterator 的使用、其与 for 循环的区别,以及在遍历集合时的删除操作可能带来的问题,并提…...
川渝地区软件工程考研择校分析
C哥专业提供——计软考研院校选择分析专业课备考指南规划 通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西…...
快捷键记忆
快捷键记忆 文章目录 快捷键记忆前言一、PotPlayer快捷键二、电脑快捷键总结 前言 提示:以下是本篇文章正文内容: 一些软件的快捷键经常忘记,写这篇文章的目的是帮助我忘记的时候来查看。 顺序实时更新: 一、PotPlayer快捷键 Po…...
Flutter鸿蒙next 状态管理高级使用:深入探讨 Provider
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
JMeter实战之——模拟登录
本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下: 一、登录过程 用户输入:用户在登录页面输入用户名和密码。发送请求&#x…...
智能台灯设计(一)原理图设计
1. 前言 作者最近突发奇想,想自己做一个小台灯,设想的功能有:带锂电池可充电、可以调节亮度,后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能,有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…...
数据库查询返回结果集及其元数据信息:ResultSet 和 ResultSetMetaData 深度解析
全文目录: 开篇语📌 目录🌟 前言📝 摘要📚 简介🔍 概述🧩 核心源码解读1️⃣ 创建数据库连接2️⃣ 执行查询获取结果集3️⃣ 读取查询数据4️⃣ 获取元数据信息 💻 案例分析…...
2.插入排序(斗地主起牌)
一、思想 扑克牌起牌 代码: 二、时间复杂度: 最好情况(已经排序好的):T O(N) 最坏情况(完全逆序):T O(N^2) 三、优劣: 严格的大小比较之后才进行错位插入&#x…...
漫谈编程小白如何成为大神:夯实基础,开启通神之路
在当今数字化时代,编程已成为一项基本技能,对于大学新生而言,掌握编程能力不仅能够为学术研究提供支持,还能为未来的职业生涯开辟广阔天地。然而,面对琳琅满目的编程语言和学习资源,新生们往往会感到迷茫和…...
基于机器学习的个性化电影推荐系统【源码+安装+讲解+售后+文档】
【1】系统介绍 研究背景 随着互联网技术的迅速发展,数字娱乐内容特别是电影和电视剧的数量急剧增加。用户在享受丰富内容的同时,也面临着选择困难的问题,即“信息过载”。传统的搜索和分类方法已经无法满足用户日益增长的个性化需求。与此同…...
企业如何配合好等级保护测评工作?
企业如何配合好等级保护测评工作,是一个涉及多方面因素的系统性任务。等级保护测评,简称等保测评,是中国对信息和信息系统安全的重要管理手段和评估制度。通过这一制度,企业可以全面了解其信息系统的安全状况,及时发现…...
Could not find artifact cn.hutool:hutool-all:jar:8.1 in central 导入Hutool报错
<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all --><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.9</version></dependency> 引入hutool 8.1版本的工具…...
【功能安全】汽车功能安全个人认证证书
目录 1、证书 2、课程信息 📖 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书,如下: 2、课程信息 一般上什么课程了,课程信息大概如下: 汽车功能安全工程师认证课 (3天&#…...
axios直接上传binary
axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary,平常我们很少使用,可能有的同学遇到这种情况不太会了,认为后端应该有个字段名来接收,或者使用 Formdata,但其实…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...
Python训练营-Day26-函数专题1:函数定义与参数
题目1:计算圆的面积 任务: 编写一个名为 calculate_circle_area 的函数,该函数接收圆的半径 radius 作为参数,并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求:函数接收一个位置参数 radi…...
前端工具库lodash与lodash-es区别详解
lodash 和 lodash-es 是同一工具库的两个不同版本,核心功能完全一致,主要区别在于模块化格式和优化方式,适合不同的开发环境。以下是详细对比: 1. 模块化格式 lodash 使用 CommonJS 模块格式(require/module.exports&a…...
