首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【前端面试题】08—31道有关前端工程化的面试题(附答案)

output配置出口文件 entry配置入口文件。 使用各种 loader对各种资源做处理,并解析成浏览器可运行的代码。 3、你用Gulp都实现了哪些功能?...(1)实现对不同格式文件的处理,比如将Scss转换为CSS,或将 TypeScript转化为Javascript。 (2)可以编译文件,从而使其能够添加到依赖关系。...EventSource本质仍然是HTTP,仅提供服务器端到浏览器端的单向文本传输,不需要心跳链接链接断开会持续重发链接。 注意:心跳链接是用来检测一个系统是否存活或者网络链路是否通畅的一种方式。...不需要关注CDN,需要关注的是,文件发布出来后,应该部署到哪里。如果文件页面放到一起的,那么可以按相对路径来设置,比如'....目前的做法是通过 package. json设置node的一个全局变量,然后 webpack. config. js文件里面进行生产环境开发环境的配置切换。

2.8K30

《现代Typescript高级教程》解读TSConfig

以下是一些常用的 compilerOptions 配置选项: target target 选项指定了编译后的 JavaScript 代码所要遵循的 ECMAScript 标准。..."compilerOptions": { "strict": true } lib lib 选项用于指定 TypeScript 编译器可以使用的 JavaScript 标准库的列表。..."compilerOptions": { "lib": ["es6", "dom"] } sourceMap sourceMap 选项用于生成代码对应的源映射文件(.map 文件),以便在调试过程可以将编译后的...当我们 TypeScript 项目中引入 CommonJS 模块时,可以通过设置 esModuleInterop 为 true 来避免引入时的错误。...构建和发布 现在我们可以使用 TypeScript 编译器将我们的代码构建为 JavaScript,以便在其他项目中使用。

52720
您找到你想要的搜索结果了吗?
是的
没有找到

Tree Shaking

前言 Javascript 绝大多数情况需要通过网络进行加载再执行,加载的文件越小,整体执行时间更短,所以就有了 Tree Shaking 去除无用代码,从而减小文件体积。...我们一起看一下打包后的结果 (()=>{"use strict";console.log("a")})(); Tree Shaking 的原理 Tree Shaking 去除代码冗余的过程,程序会从入口文件出发...随后,运行所有代码,查看哪些代码是用到过的,做好标记。最后,再将“抽象语法树”没有用到的代码“摇落”。经历这样一个过程后,就去除了没有用到的代码。...不同于 ES6 Module,CommonJS 支持动态加载模块,加载前是无法确定模块是否有被调用,所以并不支持 Tree Shaking 。...CommonJS 导入时,require 的路径参数是支持表达式的,路径代码执行时是可以动态改变的,所以如果在代码编译阶段就建立各个模块的依赖关系,那么一定是不准确的,只有代码运行了以后,才可以真正确认模块的依赖关系

68330

Node.js 的ES模块现状

新的 ECMAScript(ES)模块以前的语言版本不完全兼容,因此使用的 JavaScript 引擎需要知道每一个文件是“旧” JavaScript 代码还是“新”模块。...因此,以下代码语法上可以解释为传统的 JavaScript 代码和 ES 模块: 1a = 5; 作为经典的 Node.js 模块,这相当于 global.a = 5,因为未声明变量 a 并且未明确激活严格模式...Node.js 的实现要困难得多:2009年发明的 JavaScript 应用程序框架使用 CommonJS 标准模块,该标准基于 require 函数。...Node.js中使用 区分 CommonJS 和 ES 模块的难度导致 Node.js 下为 ES 模块引入了新的文件扩展名:如果已设置了 -experimental-modules 选项, Node.js...像 Babel 这样的工具可以将较新的语法转换为旧环境兼容的代码,这使转换更容易。

1.4K40

JavaScript 是如何工作的:模块的构建以及对应的打包工具

相反,你希望以这样一种方式编写每一章,即可以不影响其他章节的情况下进行改进。 2)命名空间: JavaScript ,顶级函数范围之外的变量是全局的(这意味着每个人都可以访问它们)。...第一个示例,将使用匿名闭包,将所有代码放在匿名函数来帮助我们实现目标。(记住: JavaScript ,函数是创建新作用域的唯一方法。)...CommonJS 模块本质上是一个可重用的 JavaScript,它导出特定的对象,使其可供其程序需要的其他模块使用。 如果你已经使用 Node.js 编程,那么你应该非常熟悉这种格式。...当你使用一种标准模块模式(上部分讨论过)来定义模块时,拼接和缩减文件非常有用。 你真正在做的就是将一堆普通的 JavaScript 代码捆绑在一起。...预测构建过程将会保留,至少近期内。 CommonJS、AMD UMD 会被淘汰吗? 一旦 ES6 成为模块标准,我们还需要其他非原生模块规范吗? 觉得还有。

1.4K10

Node.js原生开发(入门篇)

它的特点是非阻塞I/O模型,使其处理高并发请求时表现出色。...Node.jsJavaScript的关系 层面: Node.js使用的编程语言是JavaScript。这意味着Node.js编写的代码语法浏览器JavaScript代码语法基本相同。...二、Node JS本地环境搭建 1、安装Node.js 从Node.js官网下载并安装Node.js,安装完成后可以使用以下命令验证安装是否成功 Node JS官网 node -v npm -v 三、文件操作模块化的概念...模块化编程的优点 高内聚低耦合:模块内的代码高内聚,而模块之间的耦合度低,提高了代码的可维护性。 可重用性:模块可以不同的项目中重复使用,提高开发效率。...这使得模块可以不同的环境(如浏览器和Node.js)无缝运行。

15510

JavaScript模块开发的5种改进方式

往常一样,向 JavaScript 添加新功能需要时间,因为 标准化过程 依赖于共识。...此外,处理多个文件会增加复杂性。 使用模块表达式,您可以同一个文件包含多个模块。 “有时您的 worker 只需几行代码,可能导入其他模块,然后是模块本身。...使用 模块表达式,您可以同一个文件包含多个模块。这对于多线程代码特别有用,多线程代码,开发人员希望将模块发送到 worker 以供稍后执行——可能不止一次。...您无需依赖文件类型,而是可以指定是否应将图像加载为位图,是否要将文件加载为纯文本,甚至告诉捆绑器捆绑文件并返回指向它的 URL。...“我们正在标准构建这些原语,以便我们可以本机 ES 模块系统对这些功能提供一流的支持。”

12710

JavaScript终于改善了模块体验

在为打包 JavaScript 代码块以供反复使用制定官方标准格式之前,开发人员使用了 Webpack、Babel 和 CommonJS (CJS) 等工具。...他说:“当我提出 CommonJS 时,目的是创建一种方式,让人们可以表达 JavaScript,而无需将它们耦合到特定框架,就可以项目之间共享。”...“你可以只希望的应用程序能够从这两个域加载和运行 WebAssembly 代码,而不是从任何其他域加载的代码。”...速度提升不会像在 Node.js 那么大,因为对于服务器端代码,模块文件存储代码执行的位置,但浏览器必须从其他位置加载文件。...那可能是一个模块,它可能是一个 CSS 文件或一个图像——一个尚未加载的数据集,但你的打包器可以打包它,知道[]某个时候你会使用它。”

5010

rollup从0到1

概述 Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码,例如 library 或应用程序。...Rollup 对代码模块使用新的标准化格式,这些标准都包含在 JavaScript 的 ES6 版本,而不是以前的特殊解决方案,如 CommonJS 和 AMD。...ES6 模块可以使你自由、无缝地使用你最喜爱的 library 那些最有用独立函数,而你的项目不必携带其他未使用的代码。...将两个包的内容都合并到了一个文件 package 配置本地打包命令 如果我们不希望输入过长的命令行参数或者rollup 为本地安装时,我们可以通过设置package命令解决. { 'script...根目录新建文件rollup.config.js , 使用 -c 命令设置rollup配置的文件路径。

2K10

TypeScript系列教程十《模块》

JavaScript 处理代码的模块化有很多种办法,类似于AMD CommonJS UMD 等等。...TypeScript 的模块 TypeScript编写基于模块的代码时,需要考虑三个主要问题: 语法: 想使用什么语法来导入和导出内容?...模块解析: 模块名称(或路径)磁盘上的文件之间的关系是什么? 模块输出目标: 发出的JavaScript模块应该是什么样子?...大多数情况下,使用ES模块的导入来自这些环境的需求相同,但此语法确保您的TypeScript文件CommonJS输出具有1对1的匹配: import fs = require("fs"); const...虽然名称空间中的大多数特性都存在于ES模块,但我们建议您使用这些特性来JavaScript的方向保持一致。您可以名称空间参考页面中了解有关命名空间的更多信息。

1.5K10

node.js笔记

2、使用 node.js 如果在浏览器里面打开加载 js 文件可以控制台里面打开该文件,其实就是 node环境下编译 如果用 node.js 加载,需要在终端里面 执行 命令【node 文件名...test.txt 从 03-code 文件夹 ,然后 ../ 开始寻找 1、建议: Node.js 代码,使用 绝对路径 2、补充:__dirname 内置变量(获取当前模块目录-绝对路径...(例如:xxx.js) 3、node.js 使用的是 CommonJS 标准CommonJS 模块是为 Nodejs 打包 JavaScript 代码的原始方式,Nodejs 还支持浏览器和其他...JavaScript 运行时使用的 ECMAScript 模块标准 Nodejs 每个文件都被视为一个单独的模块 7、ECMAScript 标准 - 默认导出和导入 1、默认标准使用:...350000 个软件包,这使其成为世界上最大的单一语言代码仓库,并且可以确定几乎有可用于一切的软件包。

8710

Node.js宣布新的--experimental-modules【译】

-experimental-modules包含了什么 之前的版本一样,这个新的实验性模块为Node.js增加了以下支持: ES2015 import语句可以引用那些使用ES模块语法编写的Javascript...这项工作仍然进行 Node.js可以将ES模块文件作为程序的初始入口运行 文件作为ES模块被加载是严格模式下的,如果是CommonJS的话需要在每个文件的最头部加上'use strict...实验性标记--experimental-json-modules可以支持json文件的导入。我们正在用浏览器对这个特性进行标准化,并且Node.js希望我们的支持能与最终的标准保持一致。...标记移除之前,–loader API仍然会有很大的变化。 双重的CommonJS/ES模块包。...我们希望为包作者提供一种标准的方式来发布一个包,这个包既可以被require到CommonJS,也可以被import到ES模块。 更容易的require。

1.6K20

JavaScript 模块化的历史进程

jQuery 使用了一种新的组织方式,它利用了 JavaScript 的 IIFE(立即执行函数表达式)和闭包的特性,将所依赖的外部变量传给一个包装了自身代码的匿名函数,函数内部就可以使用这些依赖,最后函数的结尾把自身暴露给...从以上的尝试可以归纳出 JavaScript 模块化需要解决哪些问题: 如何给模块一个唯一标识? 如何在模块中使用依赖的外部模块? 如何安全地(不污染模块外代码)包装一个模块?...Mozilla 旗下的工程师 Kevin Dangoor,工作之余,同事们一起制订了一套 JavaScript 模块化的标准规范,并取名为 ServerJS。...CommonJS 的其他实现,感兴趣的朋友可以阅读本文最下方的参考链接。...文中并没有提及各个模块化方案是如何实现的,也没有给出相关的代码示例,感兴趣的朋友可以自行阅读下方的参考阅读链接

1K51

《深入浅出Node.js》:node的模块规范模块实现

Node使用模块化来组织JS代码,模块规范采用CommonJS规范。 对于JavaScript语言本身来说,有几个方面的天然缺陷: 没有模块系统。 标准库较少。...这导致js应用没有自动加载和安装依赖的能力。 ES6模块之前,CommonJS可以一定程度上弥补没有标准的缺陷。...,假设math.js文件同一目录下 15var math = require("....Node的模块包含两种:一类是由Node提供的模块叫核心模块;一类是用户编写的模块叫文件模块。 其中核心模块Node源代码的编译过程,编译进了二进制执行文件。...所以CommonJS规范更适合于后端,而前端的模块引入使用AMD规范更适宜,或者也可以使用CMD规范。更习惯于用AMD规范。

1.2K30

深入了解rollup(一)快速开始

它使用 JavaScript 的 ES6 版本包含的新标准代码模块格式,而不是以前的 CommonJS 和 AMD 等特殊解决方案。ES 模块允许你自由无缝地组合你最喜欢的库中最有用的个别函数。...然后,在生成最终文件时,只有被标记为使用过的变量才会被保留下来。这样可以消除未使用的代码,减少最终文件的大小和加载时间。4....输出最终文件:最后,Rollup将合并后的代码输出到指定的文件可以通过配置选项来指定输出文件的路径、格式和名称等。...通过消除未使用的代码,Rollup可以生成更精简、更快速的JavaScript文件,提高应用程序的性能和加载速度。...剔除未使用的代码:根据标记结果,工具会将未被使用的代码从最终生成的文件剔除掉。这些未使用的代码可能是整个模块、模块的某些函数或类等。4.

28440

聊聊 JavaScript 的几种模块系统

大家好,是前端西瓜哥,今天我们来聊聊 JavaScript 的模块系统。 模块系统 模块系统是什么?...简单来说,其实就是我们一个文件里写代码,声明一些可以导出的字段,然后另一个文件可以将其导入并使用。...ES Modules ES Modules,或者叫 ESM,是 ES6 引入的新特性,是模块系统的真正标准 script 标签下设置 type="module",可以开启模块化加载。...CommonJS 可以导入 json 文件,ESM 不可以(实际上我们使用打包工具,通过转换器支持各种文件的导入); UMD 模块标准这么多,需要一个个构建不同的模块文件可太麻烦了。...如果只希望发布一份代码,就让它运行在不同的模块系统,有办法吗?

41710

JS模块化编程以及AMD、CMD规范、Webpack

因为有了模块,我们就可以更方便地使用别人的代码,想要什么功能,就加载什么模块。 但是,这样做有一个前提,那就是大家必须以同样的方式编写模块,否则你有你的写法,的写法,岂不是乱了套!...考虑到Javascript模块现在还没有官方规范,这一点就更重要了。 CommonJS和AMD。 CommonJS,有一个全局性方法require(),用于加载模块。...还是上一节的代码,如果在浏览器运行,会有一个很大的问题。 第二行math.add(2, 3),第一行require('math')之后运行,因此必须等math.js加载完成。...,然后页面中就可以直接使用require来加载所有的短模块名;config可以该js定义;同时可作为程序的执行入口; data-main还有一个重要的功能,当script标签指定data-main属性时...对于不知道是否遵守了amd标准的模块,可引入后打印一下,看一下引入后传递的是什么。

2.2K10

现代 JavaScript 库打包指南

这样可以更容易地对特定文件进行 side effects 标记,有助于开发者的打包工具进行 threeshaking。...一种选择是继续代码中使用 JavaScript,然后通过 JSDoc 注释来支持类型。然后,你可以将 TypeScript 配置为仅从你的 JavaScript代码构建类型文件。...举个例子,如果你使用 TypeScript,你可以创建两个版本的包代码: 通过 tsconfig.json 设置 "target"="esnext",生成一个用现代 JavaScript 的 esm...版本 通过 tsconfig.json 设置 "target"="es5" 生成一个兼容低版本 JavaScript 的 umd 版本 有了这些设置,大多数用户将获得现代版本的代码,但那些使用老的打包工具配置或使用...如果你没有为多个环境创建多个产出,或者你的产出是“纯 JavaScript”或“通用”的,可以在任何 JavaScript 环境运行,那么你就不需要设置 browser 字段。

2.3K20

看完这几道 JavaScript 面试题,让你考官对答如流(

由于篇幅过长,将此系列分成上中下三篇,上篇: 看完这几道 JavaScript 面试题,让你考官对答如流(上) 26. 什么是IIFE,它的用途是什么? 27....ECMAScript 是编写脚本语言的标准,这意味着JavaScript遵循ECMAScript标准的规范变化,因为它是JavaScript的蓝图。...`; } ES5 版本,如果需要在字符串添加表达式或值,则需要使用+运算符。 模板字符串s,我们可以使用${expr}嵌入一个表达式,这使其比 ES5 版本更整洁。 46....模块使我们能够将代码基础分割成多个文件,以获得更高的可维护性,并且避免将所有代码放在一个大文件 ES6 支持模块之前,有两个流行的模块。...我们可以使用has方法检查Set实例是否存在特定的值。

2K10

如何规范地发布一个现代化的 NPM 包?

这样可以更容易地对特定文件进行 side effects 标记,有助于开发者的打包工具进行 threeshaking。...一种选择是继续代码中使用 JavaScript,然后通过 JSDoc 注释来支持类型。然后,你可以将 TypeScript 配置为仅从你的 JavaScript代码构建类型文件。...举个例子,如果你使用 TypeScript,你可以创建两个版本的包代码: 通过 tsconfig.json 设置 "target"="esnext",生成一个用现代 JavaScript 的 esm...版本 通过 tsconfig.json 设置 "target"="es5" 生成一个兼容低版本 JavaScript 的 umd 版本 有了这些设置,大多数用户将获得现代版本的代码,但那些使用老的打包工具配置或使用...如果你没有为多个环境创建多个产出,或者你的产出是“纯 JavaScript”或“通用”的,可以在任何 JavaScript 环境运行,那么你就不需要设置 browser 字段。

2.1K20
领券