3年多前端菜鸡的面试及知识梳理(二) (2)

HTML 解析器遇到没有 async 和 defer 的 script 时,将他们添加到文档中,然后执行行内或外部脚本。这些脚本会同步执行,并且在脚本下载和执行时解析器会暂停。这样就可以用 document.write()把文本插入到输入流中。同步脚本经常简单定义函数和注册事件处理程序,他们可以遍历和操作 script 和他们之前的文档内容

当解析器遇到设置了async属性的 script 时,开始下载脚本并继续解析文档。脚本会在它下载完成后尽快执行,但是解析器不会停下来等它下载。异步脚本禁止使用 document.write(),它们可以访问自己 script 和之前的文档元素

当文档完成解析,document.readState 变成 interactive

所有defer脚本会按照在文档出现的顺序执行,延迟脚本能访问完整文档树,禁止使用 document.write()

浏览器在 Document 对象上触发 DOMContentLoaded 事件

此时文档完全解析完成,浏览器可能还在等待如图片等内容加载,等这些内容完成载入并且所有异步脚本完成载入和执行,document.readState 变为 complete,window 触发 load 事件

显示页面(HTML 解析过程中会逐步显示页面)

7、重绘(Repaint)和回流(Reflow)(经典的前端问题,经常会遇见)

5、安全问题

1、xss攻击(百度百科)
一般的解决方案就是转义输入输出的内容,对于引号、尖括号、斜杠进行转义。

2、CSRF(百度百科)
防范 CSRF 攻击可以遵循以下几种规则:

Get 请求不对数据进行修改

不让第三方网站访问到用户 Cookie

阻止第三方网站请求接口

请求时附带验证信息,比如验证码或者 Token

3、点击劫持

6、性能问题

1、图片优化

2、节流

3、防抖

4、预加载

5、预渲染

6、懒加载

7、懒执行

8、cdn

7、webpack

图片来源于

img

核心概念

入口

输出

模块

加载器

插件

配置

1、webpack的构建过程

1.1. 初始化参数,从配置文件和shell语句中读到的参数合并,得到最后的参数 1.2. 开始编译:用合并得到的参数初始化complier对象,加载是所有配置的插件,执行run方法开始编译 1.3. 确定入口,通过entry找到入口文件 1.4. 编译模块,从入口文件出发,调用所有配置的loader对模块进行解析翻译,在找到该模块依赖的模块进行处理 1.5. 完成模块编译,得到每个模块被翻译之后的最终的内容和依赖关系 1.6. 输出资源,根据入口和模块之间的依赖关系,组装成一个个包含多个模块的chunk,在把每个chunk转换成一个单独的文件加载到输出列表 1.7. 输出完成,确定输出的路径和文件名,把内容写到文件系统中 在以上过程中,webpack会在特定的时间点广播出特定的事件,插件在舰艇感兴趣的事件后会执行特定的逻辑,改变webpack的运行结果

2、loader 和 plugin 有什么区别

loader 用于对模块的源代码进行转换。loader 可以使你在 import 或"加载"模块时预处理文件。因 此,loader 类似于其他构建工具中“任务(task)”,并提供了处理前端构建步骤的强大方法。loader 可 以将文件从不同的语言(如 TypeScript)转换为 JavaScript,或将内联图像转换为 data URL。 loader 甚至允许你直接在 JavaScript 模块中 import CSS文件! 因为 webpack 本身只能处理 JavaScript,如果要处理其他类型的文件,就需要使用 loader 进行转换,loader 本身就是一个函数, 接受源文件为参数,返回转换的结果。 Plugin 是用来扩展 Webpack 功能的,通过在构建流程里注入钩子实现,它给 Webpack 带来了很大 的灵活性。 通过plugin(插件)webpack可以实 loader 所不能完成的复杂功能,使用 plugin 丰 富的自定义 API 以及生命周期事件,可以控制 webpack 打包流程的每个环节,实现对 webpack 的 自定义功能扩展。

3、怎么区分开发环境和正式环境

if(process.env.NODE_ENV === "production") { console.log("你正在线上环境") }else { console.log("你正在使用开发环境") }

4、webpack如何优化性能
参考: 三十分钟掌握Webpack性能优化

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydypz.html