热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

第33篇

1、CommonJS中的requireexports和ES6中的importexport的区别CommonJS模块的重要特性是加载时执行,即脚本代码在require的

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

CommonJS模块的重要特性是加载时执行,即脚本代码在require的时候,就会全部执行。一旦出现某个模块被“循环加载”,

就只输出已经执行的部分,还未执行的部分不会输出。

ES6模块是动态引用,如果使用import从一个模块加载变量,那些变量不会被缓存,而是成为一个指向被加载模块的引用

,需要开发者自己保证,真正取值的时候能够取到值。

 

import/exports最终都是编译为require/exports来执行的,commonJS规定,每个模块内部,module变量代表当前模块,

这个变量是一个对象,它的exports属性(即module.exports)使对外的接口。加载某个模块其实是加载该模块module.exports

属性。export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。

 

2、项目做过那些性能优化?

减少HTTP请求数

减少DNS查询

使用CDN

避免重定向

图片懒加载

减少DOM元素数量

减少DOM操作

使用外部Javascript和css

压缩Javascript、css、字体、图片等

使用CSS Sprite

使用iconfont

字体剪裁

多域名分发分容到不同域名

尽量减少iframe使用

把样式放置在头部

把脚本放置在页面底部

 

3、js异步加载的方式

渲染引擎遇到script标签会停下来,等到执行完脚本,继续向下渲染。

defer是“渲染完再执行”,async是“下载完就执行“

defer如果有多个脚本,会按照在页面中出现的顺序加载,

多个async脚本不能保证加载顺序

加载es6模块的时候设置type=module,

异步加载不会造成阻塞浏览器,页面渲染完再执行,可以同时加上async属性

异步执行脚本(利用顶层的this等于undefined这个语法点),可以侦测当前代码是否在ES6模块之中

 

4、gei和post通讯的区别?

Get请求能缓存,Post不能。

Post相对Get安全一点点,因为Get请求都包含在URL里,且会被浏览器保存历史记录,

post不会,但是在抓包的情况下都是一样的。

post可以通过request body来传输比get更多的数据,get没有这个数据

url长度有限制,会影响get请求,但是这个长度限制是浏览器规定的,post支持更多的编码类型且不对数据类型限制

 

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

虚拟dom相当于在js和真实dom中间加了一个缓存,利用dom diff算法避免了没有必要的dom操作,从而提高性能。

用Javascript对象结构表示DOM树的解构,然后用这个树构建一个真正的DOM树,插到文档当中,当状态变更的时候,重新构造一棵新的对象树,

然后用新的树和旧的树进行比较,记录2棵树的差异,,把记录的差异应用到前面所构建的真正的DOM树上,视图就更新了。

 

转:https://www.cnblogs.com/huen2015/p/11175600.html



推荐阅读
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • Vue基础一、什么是Vue1.1概念Vue(读音vjuː,类似于view)是一套用于构建用户界面的渐进式JavaScript框架,与其它大型框架不 ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • 本文介绍了OkHttp3的基本使用和特性,包括支持HTTP/2、连接池、GZIP压缩、缓存等功能。同时还提到了OkHttp3的适用平台和源码阅读计划。文章还介绍了OkHttp3的请求/响应API的设计和使用方式,包括阻塞式的同步请求和带回调的异步请求。 ... [详细]
  • 如何压缩网站页面以减少页面加载时间
    本文介绍了影响网站打开时间的两个因素,即网页加载速度和网站页面大小。重点讲解了如何通过压缩网站页面来减少页面加载时间。具体包括图片压缩、Javascript压缩、CSS压缩和HTML压缩等方法,并推荐了相应的压缩工具。此外,还提到了一款Google Chrome插件——网页加载速度分析工具Speed Tracer。 ... [详细]
  • 1.移除consol.log()的babel插件安装:npmibabel-plugin-transform-remove-console-D配置:babel.config.js:这 ... [详细]
  • 本文介绍了腾讯最近开源的BERT推理模型TurboTransformers,该模型在推理速度上比PyTorch快1~4倍。TurboTransformers采用了分层设计的思想,通过简化问题和加速开发,实现了快速推理能力。同时,文章还探讨了PyTorch在中间层延迟和深度神经网络中存在的问题,并提出了合并计算的解决方案。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 一、路由首先需要配置路由,就是点击good组件进入goodDetail组件配置路由如下{path:goodDetail,component:goodDetail}同时在good组件中写入如下点击事件,路由中加入 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 抖音服务器带宽有多大,才能供上亿人同时刷?
    最近看到一个有意思的提问:抖音服务器带宽有多大,为什么能够供那么多人同时刷?今天来给大家科普一下。 ... [详细]
  • 一面自我介绍对象相等的判断,equals方法实现。可以简单描述挫折,并说明自己如何克服,最终有哪些收获。职业规划表明自己决心,首先自己不准备继续求学了,必须招工作了。希望去哪 ... [详细]
  • moment.js 时间日期处理详解
    这篇文章主要介绍了moment.js时间日期处理详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容, ... [详细]
  • 部署Maven环境
    JDK:在maven3.3以上的版本需要JDK版本1.7,内存:没有最低限制。磁盘:1G可用磁盘空间。操作系统: ... [详细]
author-avatar
k婷妈咪1_1997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有