1.5k 词
介绍Rspress 是一个由字节跳动团队开发的基于 Rsbuild 的静态站点生成器,基于 React 框架进行渲染,内置了一套默认的文档主题,你可以通过 Rspress 来快速搭建一个文档站点,同时也可以自定义主题,来满足你的个性化静态站需求,比如博客站、产品主页等。当然,你也可以接入官方提供的相应插件来方便地搭建组件库文档。 对于这类静态站点生成器,常见的还有: VuePress Vue 驱动的静态网站生成器 VitePress Vite 和 Vue 强力驱动的静态网站生成器, VitePress 甚至比 VuePress 要更轻更快,但它在灵活性和可配置性上作出了一些让步,比如它不支持插件系统。 Hexo 快速、简洁且高效的博客框架 Hugo Hugo是由Go语言实现的静态网站生成器。简单、易用、高效、易扩展、快速部署。 docsify docsify 可以快速帮你生成文档网站。不同于 GitBook、Hexo 的地方是它不会生成静态的 .html 文件,所有转换工作都是在运行时, 所以对SEO不太友好,更合适用于公司内部的技术文档等。可直接部署在 G...
5.6k 词
前言​ 前端开发中处理对象和数组时,我们经常会碰到数据拷贝的情景,如果出现一些不恰当的拷贝就会导致一些难以预料的错误,难以排查与维护。拷贝又常常分为深拷贝和浅拷贝,因此弄清楚两者的概念及区别尤为重要。 举个简单例子: ​ 相信大家对于这种表格并不陌生,在操作栏会有一个显示详细数据的功能,这需要实现一个数据回显的功能用于显示详细数据。 ​ 如果这里通过回显数据 = 表格数据 直接赋值就会出现一个问题,当我在回显数据上使用了修改功能后,哪怕没有选择确定或者保存,外面表格的数据都会发生变化。 这种就是典型的浅拷贝带来的问题,对拷贝数组做出的更改有时会影响到源数组。注意这里的有时,后文会介绍为什么。 引言 我们先来看个最简单的拷贝: 123const a = 10;cosnt b = a;console.log(b); 毫无疑问,输出结果是10。 为了深入理解拷贝这一过程,我们需要研究数据在内存中的存储方式。 对于上面的基本数据类型(number)的存储,js会采用值类型栈存储的方式直接把a的值拷贝给b。 值类型栈存储: 主要针对(Num...
779 词
javascript的垃圾回收机制背景JavaScript 是使用垃圾回收的语言,也就是说**执行环境**负责在代码执行时管理内存。在` C `和` C++`等 语言中,跟踪内存使用对开发者来说是个很大的负担,也是很多问题的来源。JavaScript 为开发者卸下 了这个负担,通过**自动内存管理**实现内存分配和闲置资源回收。 实现思路 基本思路很简单:确定哪个变量不会再 使用,然后释放它占用的内存。这个过程是周期性的,即垃圾回收程序每隔一定时间(或者说在代码执 行过程中某个预定的收集时间)就会自动运行。垃圾回收过程是一个近似且不完美的方案,因为某块内存是否还有用,属于“不可判定的”问题,意味着靠算法是解决不了的 垃圾回收程序必须跟踪记录哪个变量还会使用,以及哪个变量不会再使用,以便回收 内存。如何标记未使用的变量也许有不同的实现方式。不过,在浏览器的发展史上,用到过两种主要的标记策略:`标记清理`和`引用计数`。 实现方法标记清除法(常用)首先它会遍历堆内存上所有的对象,分别给它们打上标记,然后在代码执行过程结束之后,对所使用过的变量取消标记。在清除阶段再把具有标记的...