如果一个npm包不满足需求,如何修改其部分功能
一、使用 Fork Fork 源代码,通过在 GitHub 上或其他托管平台上 Fork 第三方包的源代码库。对其源代码进行修改,修改完成后将修改后的包发布到 npm 上。如果你不希望它是公开的,那么你可以搭建一个 npm 的私有包。直接将项目中的包切换我们自己发布的包。 二、提交 PR 如果你认为你的修改对其他用户也有帮助,可以向原始包的维护者提交 Pull Request(PR)...
一、使用 Fork Fork 源代码,通过在 GitHub 上或其他托管平台上 Fork 第三方包的源代码库。对其源代码进行修改,修改完成后将修改后的包发布到 npm 上。如果你不希望它是公开的,那么你可以搭建一个 npm 的私有包。直接将项目中的包切换我们自己发布的包。 二、提交 PR 如果你认为你的修改对其他用户也有帮助,可以向原始包的维护者提交 Pull Request(PR)...
内存管理 垃圾回收算法被分为两种,一个是 Major GC,主要使用了 Mark-Sweep & Mark-Compact 算法,针对的是堆内存中的老生代进行垃圾回收;另外一个是 Minor GC,主要使用了 Scavenger 算法,针对于堆内存中的新生代进行垃圾回收。V8 引擎的新生代内存大小^( 网传主流说法,没有找到具体的源码,仅做参考。)^ 32MB(64 位)、16MB...
写在前面 相较于简写形式带来的代码体积减小,易于理解的代码书写方式能显著提升可维护性,因此在选择简写方案时需谨慎。 Arguments setInterval(function () { console.log("z"); }, 100); // before setInterval('console.log("z")', 100); // after Variables va...
URL 是由几个部分组成: protocol: // hostname:port / pathname ? query # hash 路由模块需要实现的功能就是 —— 解析 URL 中的 pathname,根据不同的路径将请求分配给相应的模块去处理。 一个简单的路由是一个类,它的方法能够返回不同的拦截切面,这样的类叫做 HTTP 服务中间件(Middleware)。具体实现代码如下: ...
各类调试工具原理 Chrome DevTools 原理 Chrome DevTools 分为两部分,backend 和 frontend: backend 和 Chrome 集成,负责把 Chrome 的网页运行时状态通过调试协议暴露出来。 frontend 是独立的,负责对接调试协议,做 UI 的展示和交互。 两者之间的调试协议叫做 Chrome DevTools Pr...
React Typescript Cheetsheet JSX.Element vs React.ReactNode jsx.element -> React.createElement 的返回值 React.ReactNode -> 组件返回值的集合 interface or type? 使用 Interface 直到你需要 Type 在编写库或第...
在运行时清理代码是构建高效、可预测应用程序的必不可少的部分。在 JavaScript 中,合理管理事件监听器,在不再需要监听事件的时候将它们移除是必要的。 用下面代码进行实验 : <button id="button">Do Something</button> <script> document.getElementById('button').a...
原文:Inside look at modern web browser Part 1 Chrome 的多进程架构图,多个渲染进程的卡片(render process)是用来表明 Chrome 会为每一个 tab 创建一个渲染进程。 Chrome 浏览器会有一个浏览器进程(browser process),这个进程会和其他进程一起协作来实现浏览器的功能。对于渲染进程(rendere...
原文:Inside look at modern web browser Part 1 Chrome 的多进程架构图,多个渲染进程的卡片(render process)是用来表明 Chrome 会为每一个 tab 创建一个渲染进程。 Chrome 浏览器会有一个浏览器进程(browser process),这个进程会和其他进程一起协作来实现浏览器的功能。对于渲染进程(rendere...
对于项目中大量数据通常存在两种情况: 第一种就是数据可视化,比如像热力图,地图,大量的数据点位的情况。 第二种情况是长列表渲染。 1.时间分片 不使用分片 .circle { position: absolute; width: 10px; height: 10px; border-radius: 50%; } .box { width: 100vm...