博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
撩课-Web大前端每天5道面试题-Day33
阅读量:6904 次
发布时间:2019-06-27

本文共 1353 字,大约阅读时间需要 4 分钟。

1.CommonJS 中的 require/exports 和 ES6 中的 import/export 区别?

CommonJS 模块的重要特性是加载时执行,即脚本代码在 require 的时候,就会全部执行。一旦出现某个模块被”循环加载”,就只输出已经执行的部分,还未执行的部分不会输出。ES6 模块是动态引用,如果使用 import 从一个模块加载变量,那些变量不会被缓存,而是成为一个指向被加载模块的引用,需要开发者自己保证,真正取值的时候能够取到值。import/export 最终都是编译为 require/exports 来执行的。CommonJS 规范规定,每个模块内部,module 变量代表当前模块。这个变量是一个对象,它的 exports 属性(即 module.exports )是对外的接口。加载某个模块,其实是加载该模块的 module.exports 属性。export 命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。复制代码

2.项目做过哪些性能优化?

减少 HTTP 请求数减少 DNS 查询使用 CDN避免重定向图片懒加载减少 DOM 元素数量减少 DOM 操作使用外部 JavaScript 和 CSS压缩 JavaScript 、 CSS 、字体、图片等优化 CSS Sprite使用 iconfont字体裁剪多域名分发划分内容到不同域名尽量减少 iframe 使用避免图片 src 为空把样式表放在 中把脚本放在页面底部复制代码

3.js 异步加载的方式?

渲染引擎遇到 script 标签会停下来,等到执行完脚本,继续向下渲染defer 是“渲染完再执行”,async 是“下载完就执行”,defer 如果有多个脚本,会按照在页面中出现的顺序加载,多个async 脚本不能保证加载顺序加载 es6模块的时候设置 type=module,异步加载不会造成阻塞浏览器,页面渲染完再执行,可以同时加上async属性,异步执行脚本(利用顶层的this等于undefined这个语法点,可以侦测当前代码是否在 ES6 模块之中)复制代码

4.get与post 通讯的区别?

Get 请求能缓存,Post 不能Post 相对 Get 安全一点点,因为Get 请求都包含在 URL 里,且会被浏览器保存历史纪录,Post 不会,但是在抓包的情况下都是一样的。Post 可以通过 request body来传输比 Get 更多的数据,Get 没有这个技术URL有长度限制,会影响 Get 请求,但是这个长度限制是浏览器规定的,不是 RFC 规定的Post 支持更多的编码类型且不对数据类型限制复制代码

5.为什么虚拟 dom 会提高性能?

虚拟 dom 相当于在 js 和真实 dom 中间加了一个缓存,利用 dom diff 算法避免了没有必要的 dom 操作,从而提高性能。用 JavaScript 对象结构表示 DOM 树的结构;然后用这个树构建一个真正的 DOM 树,插到文档当中当状态变更的时候,重新构造一棵新的对象树。然后用新的树和旧的树进行比较,记录两棵树差异把 2 所记录的差异应用到步骤 1 所构建的真正的 DOM 树上,视图就更新了。复制代码

转载地址:http://thvdl.baihongyu.com/

你可能感兴趣的文章
爬虫 新闻 mysql,大规模异步新闻爬虫【3】:让MySQL数据库操作更方便
查看>>
php设置延迟响应,php能不能做到,只给某个用户延迟响应,其它用户不受影响?...
查看>>
oracle经常无响应,Oracle无响应故障
查看>>
php xml 转换数组函数,php xml转换成数组格式
查看>>
oracle12c不买会咋样,ORACLE 12c - “不是单一群体功能”
查看>>
php simplexml_load_file 详解,php中simplexml_load_file函数用法实例讲解
查看>>
linux登录用户who,技术|Linux who 命令 – 显示系统登录者
查看>>
linux内核下载 2.6.32,linux内核升级到2.6.32
查看>>
client linux amd64,linux 下安装minio并配置
查看>>
linux中配置nginx,linux中编译安装和配置nginx
查看>>
Linux循环sql调用,shell中使用SQL实现查询
查看>>
linux中make命令大全,Linux中的命令 make -f 是什么意思
查看>>
qcustomplot在Linux开发板,QCustomplot的使用以及编译动态链接库的过程
查看>>
aes逆字节替换C语言,AES加密算法之字节替换操作
查看>>
2017福建省c语言编程题,[蓝桥杯][2017年第八届真题]九宫幻方-题解(C语言代码)
查看>>
c语言实验九结构体和共用体的区别,[C语言程序设计实验九结构体和共用体答案西北民大电气院.doc...
查看>>
android刷机工具mac版,刷机精灵mac版
查看>>
android+如何封装功能,Android - 如何封装 opengl 流程
查看>>
android c 高级编程源码,Objective-C高级编程
查看>>
android 剪贴板增强工具,剪切板增强工具(ClipboardFusion Pro)
查看>>