手打基础丸 🧆 => 精选基础知识,经过多道工序精心制作而成,口感鲜嫩多汁。一口咬下,香气四溢,加上传统前端风味,令人回味无穷...... 助力食用者厚积薄发,夯实根基进阶上层。
JS的内存泄露问题?
内存泄露是指已分配的内存空间没有及时被垃圾回收机制回收的问题。这种情况积累过多后会导致程序崩溃。
可能出现的情况:
意外的全局变量:一个变量没有被及时被垃圾回收就会被人为是全局的,会造成意外的全局变量出现,导致内存泄露(可以使用use strict或let const 在函数内定义变量)
未清除的定时器:页面关闭时未清除定时器那么它引用的对象不会被垃圾回收,导致内存泄露
闭包:如果一个闭包中引用了外部变量而这个闭包又被其他代码引用,那么这个变量不会被垃圾回收,造成内存泄露(尽量避免使用闭包)
DOM引用:页面dom元素被js引用后没有正确释放
对象循环引用:两个或多个对象互相引用对象就都不会被垃圾回收
// 可以手动执行垃圾回收 global.gc();
浏览器同源策略?
为了保障了用户的信息和隐私,浏览器安全策略中的有一个比较重要的规则即仅允许当前网页的脚本同来自同源(协议、主机、端口号全部相同)的窗口进行交互。
可以通过CORS、JSONP、代理等实现跨域需求
前端后端分离开发?
前端后端分别进行独立开发和部署,通过API接口数据交互。
分工明确、前后端解耦、前端可以使用现代化技术框架和技术提升用户体验、可扩展性更好
但是也会增加沟通成本、维护成本,需要更加健全的安全保障措施
包管理工具?
npm:Node.js自带的包管理工具,基于命令行,开源包丰富,使用方便,但可能出现包冲突问题
Yarn:facebook的开源包管理工具,解决npm在包安装速度和版本管理上的一些问题,可能出现版本冲突问题
Pnpm:基于命令行,支持重用已安装的包,安装速度可观,磁盘占用少,但学习成本高
CSS工程化?
指CSS在项目中进行模块化、组件化、可维护性、可重用性等方面的处理
常用工具包括css预处理器(Sass、Less、Stylus等)、css后处理器(PostCss等)、模块化工具(CSS Modules等)、命名规范(BEM、SMACSS等)