当前位置: 首页 > news >正文

前端工程化面试题

说一下模块化方案

模块化是为了解决代码的复用和组织问题,可以说有了模块化才让前端有了工程的概念,模块化要解决两大问题 代码隔离和依赖管理,从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&#xff08;如果尚未安装&#xff09;&#xff1a; sudo apt install apache2 启动 Apache2 服务&#xff1a; sudo systemctl start apache2确认 Apache2 的默认网页可以访问&#xff1a; 打开浏览器并访问 http://<你的Kali IP>&#xff…...

Java Iterator和for区别详解和常见问题及解决方式

在 Java 中&#xff0c;Iterator 是一个用于遍历集合元素的接口。它为访问集合中的元素提供了一种标准的方法&#xff0c;不管具体集合的实现如何。本文将详细讲解 Iterator 的使用、其与 for 循环的区别&#xff0c;以及在遍历集合时的删除操作可能带来的问题&#xff0c;并提…...

川渝地区软件工程考研择校分析

C哥专业提供——计软考研院校选择分析专业课备考指南规划 通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西…...

快捷键记忆

快捷键记忆 文章目录 快捷键记忆前言一、PotPlayer快捷键二、电脑快捷键总结 前言 提示&#xff1a;以下是本篇文章正文内容&#xff1a; 一些软件的快捷键经常忘记&#xff0c;写这篇文章的目的是帮助我忘记的时候来查看。 顺序实时更新&#xff1a; 一、PotPlayer快捷键 Po…...

Flutter鸿蒙next 状态管理高级使用:深入探讨 Provider

✅近期推荐&#xff1a;求职神器 https://bbs.csdn.net/topics/619384540 &#x1f525;欢迎大家订阅系列专栏&#xff1a;flutter_鸿蒙next &#x1f4ac;淼学派语录&#xff1a;只有不断的否认自己和肯定自己&#xff0c;才能走出弯曲不平的泥泞路&#xff0c;因为平坦的大路…...

JMeter实战之——模拟登录

本篇介绍使用JMeter 如何对需要登录的站点进行压力测试。 基本Session验证的机制 使用session进行请求验证的机制是一种常见的Web应用认证方式。 该认证方式的主要内容如下&#xff1a; 一、登录过程 用户输入&#xff1a;用户在登录页面输入用户名和密码。发送请求&#x…...

智能台灯设计(一)原理图设计

1. 前言 作者最近突发奇想&#xff0c;想自己做一个小台灯&#xff0c;设想的功能有&#xff1a;带锂电池可充电、可以调节亮度&#xff0c;后续通过增加WIFI模块实现手机控制开关功能。目前先实现最简单的功能&#xff0c;有时间再一步步完善吧。 2. 原理图设计 充电芯片使用…...

数据库查询返回结果集及其元数据信息:ResultSet 和 ResultSetMetaData 深度解析

全文目录&#xff1a; 开篇语&#x1f4cc; 目录&#x1f31f; 前言&#x1f4dd; 摘要&#x1f4da; 简介&#x1f50d; 概述&#x1f9e9; 核心源码解读1️⃣ 创建数据库连接2️⃣ 执行查询获取结果集3️⃣ 读取查询数据4️⃣ 获取元数据信息 &#x1f4bb; 案例分析&#x1…...

2.插入排序(斗地主起牌)

一、思想 扑克牌起牌 代码&#xff1a; 二、时间复杂度&#xff1a; 最好情况&#xff08;已经排序好的&#xff09;&#xff1a;T O(N) 最坏情况&#xff08;完全逆序&#xff09;&#xff1a;T O(N^2) 三、优劣&#xff1a; 严格的大小比较之后才进行错位插入&#x…...

漫谈编程小白如何成为大神:夯实基础,开启通神之路

在当今数字化时代&#xff0c;编程已成为一项基本技能&#xff0c;对于大学新生而言&#xff0c;掌握编程能力不仅能够为学术研究提供支持&#xff0c;还能为未来的职业生涯开辟广阔天地。然而&#xff0c;面对琳琅满目的编程语言和学习资源&#xff0c;新生们往往会感到迷茫和…...

基于机器学习的个性化电影推荐系统【源码+安装+讲解+售后+文档】

【1】系统介绍 研究背景 随着互联网技术的迅速发展&#xff0c;数字娱乐内容特别是电影和电视剧的数量急剧增加。用户在享受丰富内容的同时&#xff0c;也面临着选择困难的问题&#xff0c;即“信息过载”。传统的搜索和分类方法已经无法满足用户日益增长的个性化需求。与此同…...

企业如何配合好等级保护测评工作?

企业如何配合好等级保护测评工作&#xff0c;是一个涉及多方面因素的系统性任务。等级保护测评&#xff0c;简称等保测评&#xff0c;是中国对信息和信息系统安全的重要管理手段和评估制度。通过这一制度&#xff0c;企业可以全面了解其信息系统的安全状况&#xff0c;及时发现…...

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、课程信息 &#x1f4d6; 推荐阅读 1、证书 汽车功能安全工程师去拿类似莱茵、SGS、南德颁发的证书&#xff0c;如下&#xff1a; 2、课程信息 一般上什么课程了&#xff0c;课程信息大概如下&#xff1a; 汽车功能安全工程师认证课 &#xff08;3天&#…...

axios直接上传binary

axios直接上传二进制文件 、 axios直接上传apk、axios直接上传binary postman中的参数选项中有个binary&#xff0c;平常我们很少使用&#xff0c;可能有的同学遇到这种情况不太会了&#xff0c;认为后端应该有个字段名来接收&#xff0c;或者使用 Formdata&#xff0c;但其实…...

量化交易API接口是什么?如何申请和应用?

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

语义分割:YOLOv11的分割模型训练自己的数据集(从代码下载到实例测试)

文章目录 前言一、环境搭建二、构建数据集三、修改配置文件①数据集文件配置②模型文件配置 四、模型训练和测试模型训练模型验证模型推理 总结 前言 专栏目录&#xff1a;YOLOv11改进目录一览 | 涉及卷积层、轻量化、注意力、损失函数、Backbone、SPPF、Neck、检测头等全方位改…...

Python爬虫:从入门到精通

Python爬虫&#xff1a;从入门到精通 在数字时代&#xff0c;信息就如同水源&#xff0c;源源不绝。然而&#xff0c;当你想要从海量的信息中汲取有价值的“水”&#xff0c;你会发现这并不是一件容易的事。这就是为什么网络爬虫出现了。它们帮助我们在网络的海洋中航行&#…...

Web组态软件

Web组态软件是近年来前端开发领域的一股新兴力量&#xff0c;它以其独特的魅力吸引着越来越多的开发者们。那么&#xff0c;Web组态软件到底是什么&#xff1f;它有哪些特点&#xff1f;我们又该如何选择和使用它呢&#xff1f;下面&#xff0c;就让我们一起探讨这些问题。 一…...

Java中为什么要私有化构造方法

为什么要私有化构造方法 要私有化的方法不是来描述一类事物的&#xff0c;创建没有任何意义 解决方案&#xff1a; 提示&#xff1a;这里填写该问题的具体解决方案&#xff1a; 为什么要将构造方法私有化&#xff1f; 问&#xff1a;如果要限制一个类对象产生&#xff0c;即&…...

【大数据学习 | kafka】kafuka的基础架构

1. kafka是什么 Kafka是由LinkedIn开发的一个分布式的消息队列。它是一款开源的、轻量级的、分布式、可分区和具有复制备份的&#xff08;Replicated&#xff09;、基于ZooKeeper的协调管理的分布式流平台的功能强大的消息系统。与传统的消息系统相比&#xff0c;KafKa能够很好…...

2-petalinux2018.3摸索记录-petalinux rootfs

1Filesystem Packages文件系统软件包2Petalinux Package GroupsPetalinux软件包组3Image Features镜像特性4apps应用程序5user packages用户软件包6Petalinux RootFS SettingsPetalinux根文件系统设置 Filesystem Packages&#xff08;文件系统软件包&#xff09; 这个选项主要…...

RHCE作业二

1.要求&#xff1a; 配置nginx服务通过ip访问多网站 2. 1关闭防火墙 2创建ip 3配置 4创建文件 5测试...

GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册

GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 GPS/北斗时空安全隔离装置(卫星时空防护装置)使用手册 时空安全隔离装置采用先进的防欺骗抗干扰技术&#xff0c;能够有效检测识别欺骗干扰信号&#xff0c;并快速对异常信号进行关断、切换&#xff0c;消除欺骗干扰影响。…...

【C++篇】深度解析类与对象(下)

引言 在上一篇博客中&#xff0c;我们学习了C的基础类与对象概念&#xff0c;包括类的定义、对象的使用和构造函数的作用。在这一篇&#xff0c;我们将深入探讨C类的一些重要特性&#xff0c;如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象&#xff0c;…...

网站开发源代码什么意思/培训心得体会感悟

提起物联网&#xff08;IoT&#xff09;和人工智能&#xff08;AI&#xff09;&#xff0c;人们并不陌生。作为当今时代十分热门的科技概念&#xff0c;它们其实都与「数据」有关&#xff1a;IoT 解决了数据从哪里来&#xff0c;AI 则解决了数据去往何方、用于何处。一个将两者…...

诸城做网站/seo站长博客

基于顺序搜索动态分区分配算法&#xff0c;只要把概念弄清楚&#xff0c;那么新进程的处理就很简单了。 最佳适应(best,fit BF)算法 所谓最佳&#xff0c;每次为作业分配内存时&#xff0c;总能把能满足要求&#xff0c;又是最小的空闲分配给作业。避免大材小用。主要做法&am…...

手机模板网站开发/市场营销案例100例

2019独角兽企业重金招聘Python工程师标准>>> 当开始着手实践 Hadoop 时&#xff0c;安装 Hadoop 往往会成为新手的一道门槛。尽管安装其实很简单&#xff0c;书上有写到&#xff0c;官方网站也有 Hadoop 安装配置教程&#xff0c;但由于对 Linux 环境不熟悉&#xf…...

网站建设培训学校广州/2023年6月疫情情况

第一步&#xff1a;安装JDKhttps://blog.csdn.net/qq_33951308/article/details/82933535第二步&#xff1a;下载并安装neo4j下载地址或者直接用wget命令wget https://neo4j.com/artifact.php?nameneo4j-community-3.4.9-unix.tar.gz然后解压tar -zxvf artifact.php?nameneo4…...

网站设计与制作平台/网站开发费用

MySQL查询超时问题是什么原因呢&#xff1f;应该如何解决呢&#xff1f;下面就为您详细介绍MySQL查询超时问题的解决方法&#xff0c;希望可以帮助到您。mysql>show variables like %timeout;打印结果如下&#xff1a;-----------------------------------| Variable_name |…...

常州网站制作公司排名/抖音搜索seo排名优化

初级 fun&#xff08;&#xff09; 全局对象window obj.sayName扩展 1this是什么 任何函数本质上都是通过某个对象调用的&#xff0c;如果没有指定就是window 所有函数内部都有一个变量this 它的值是调用函数的当前对象 2如何确定this的值 test&#xff08;&#xff09;…...