获得徽章 16
#每天一个知识点# npm 模块安装机制和实现原理
安装机制:查询node_modules目录中是否存在指定模块,存在不重新安装;不存在向registry查询模块压缩包网址,下载压缩包存放在根目录下的.npm目录里,解压压缩包到当前目录的node_modules目录
实现原理:
1. 执行工程自身preinstall
2. 确定首层依赖模块:dependencies 和 devDependencies 属性中直接指定的模块
3. 获取模块:获取模块信息、模块实体、查找该模块依赖
4. 模块扁平化:遍历所有节点,逐个将模块放在根节点下,如果发现重复模块则丢弃
5. 安装模块:更新 node_modules目录,执行模块中的生命周期函数
6.执行工程自身生命周期
展开
评论
#每天一个知识点# React 懒加载的实现原理主要基于 ES6 中的 import() 动态导入语法和 React 中 Suspense 组件的机制。当使用 React.lazy 导入一个组件时,实际上该组件会作为只包含该组件的缓存模块进行封装。只有在该组件被渲染并且所依赖的模块已经完成下载,才会真正地引用和加载该组件,否则会出现尚未准备好的状态并等待模块下载完成。此时就可以使用 Suspense 组件和 fallback 属性来显示一个或多个组件在数据装载完成之前显示的内容。当组件和它所依赖的所有组件加载完成后,React 会自动取消注释并显示该组件及其所依赖的组件。
展开
评论
#每天一个知识点# 客户端发送的、Nginx 反向代理服务器接收到的请求数量,就是我们所说的负载量。请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则。将服务器接收到的请求按照规则分发的过程,称为负载均衡。负载均衡在实际项目操作过程中,有硬件负载均衡和软件负载均衡两种。
评论
#每天一个知识点# CSP指的是内容安全策略,为了缓解很大一部分潜在的跨站脚本问题,浏览器的扩展程序系统引入了内容安全策略(CSP)的一般概念。这将引入一些相当严格的策略,会使扩展程序在默认情况下更加安全,开发者可以创建并强制应用一些规则,管理网站允许加载的内容。通常有两种方式来开启 CSP,一种是设置 HTTP 首部中的Content-Security-Policy,一种是设置 meta 标签的方式。
展开
评论
#每天一个知识点# 常见的内存泄漏原因包括:
忘记释放内存:在使用动态分配的内存后,忘记释放它,导致内存泄漏。
重复释放内存:在释放内存之前,多次释放同一块内存,导致内存泄漏。
使用已经释放的内存:在释放内存之后,再次使用已经释放的内存,导致程序崩溃。
内存泄漏的积累:由于程序中存在多个内存泄漏点,导致内存泄漏不断积累,最终导致程序崩溃。
展开
评论
#每天一个知识点# 泛型是定义类型的变量,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。泛型是创建可重用组件的方法工具,它能够创建可以使用多种数据类型而不单一数据类型的组件,而且,它在不影响性能或生产率的情况下提供了类型安全性。泛型允许我们创建泛型类、泛型函数、泛型方法和泛型接口。
评论
#每天一个知识点#
当使用 echarts 绘制柱状图时,可以通过调整 barWidth 和 barMaxWidth 来设置柱子的宽度。barWidth 控制每个柱子的宽度,可以指定一个具体的数值,例如 20。barMaxWidth 控制柱子的最大宽度,例如 40,当柱子的宽度超过 barMaxWidth 时,其宽度将被限制为 barMaxWidth
展开
评论
#每天一个知识点# 延迟加载js的方式:
defer 属性:给 js 脚本添加 defer 属性,异步加载脚本,但会推迟到页面解析完成后再执行,这样的话就能使页面的渲染不被阻塞。
async 属性:给 js 脚本添加 async 属性,异步加载脚本,当脚本加载完成后立即执行 js 脚本,加载不会阻塞页面的解析过程,但执行脚本时,如果文档没有解析完成的话同样会阻塞。
动态创建 DOM 方式:动态创建 DOM 标签的方式,可以对文档的加载事件进行监听,当文档加载完成后再动态的创建 script 标签来引入 JS 脚本。
展开
评论
#每天一个知识点# DNS劫持:攻击者篡改DNS解析设置,将域名由正常IP指向由攻击者控制的非法IP,导致访问域名打开的却不是对应的网站,而是一个不可达或者假冒的网站
评论
#每天一个知识点#
SEO: Search Engine Optimization, 搜索引擎优化。利用搜索引擎的规则提高网站在有关搜索引擎内的自然排名。目的是让其在行业内占据领先地位,获得品牌收益。
评论
#每天一个知识点# 常见的CSS元素关系
父子关系:使用空格分隔父元素和子元素。例如,div p 表示选择 div 元素内的所有 p 元素
直接子元素关系:使用大于号 > 分隔父元素和直接子元素。例如,ul > li 表示选择 ul 元素的直接子元素 li
兄弟关系:使用波浪号 ~ 分隔两个兄弟元素。例如,h1 ~ p 表示选择紧接在 h1 元素后面的所有 p 元素
相邻兄弟关系:使用加号 + 分隔两个相邻的兄弟元素。例如,h1 + p 表示选择紧接在 h1 元素后面的第一个 p 元素
元素选择器:使用标签名选择元素。例如,div 表示选择所有的 div 元素
类选择器:使用类名选择元素。例如,.red 表示选择所有具有 red 类名的元素
ID选择器:使用ID属性选择元素。例如,#myElement 表示选择具有 myElement ID的元素
属性选择器:根据元素的属性值来选择元素。例如,[type="text"] 表示选择所有 type 属性值为 "text" 的元素
展开
评论
#每天一个知识点# meta 元素四大属性
1.charset:声明页面的字符编码,常用的值有:UTF-8(Unicode字符编码)、ISO-8859-1(拉丁字母表的字符编码)
2.content:配合name或http-equiv使用,能够给这两个属性提供一个值
3.http-equiv:定义该属性可以改变服务器和用户代理的行为
4.name:用于定义页面的元数据,不能与http-equiv、charset共存,通常是content配合使用
展开
评论
#每天一个知识点#
懒加载(Lazy Loading): 懒加载是指延迟加载页面或组件中的资源(如图片、视频、JavaScript 文件等),直到这些资源即将被使用时才进行加载。
预加载(Preloading): 预加载是在页面加载过程中提前加载未来可能需要用到的资源,以便在需要时能够立即使用。
评论
#每天一个知识点#
LRU 全称是 Least Recently Used,即最少使用的意思,广泛的应用于缓存机制汇总。当缓存使用空间达到上限后,就需要从已有的数据中淘汰一部分以维持缓存的可用性,而淘汰数据的选择就是通过 LRU 算法完成的。
LRU算法的基本思想是基于局部性原理的时间局部性:如果一个信息项正在被访问,那么在近期它很可能还会被再次访问。所以顾名思义,LRU 算法会选出最近最少使用的数据进行淘汰。
展开
2
#每天一个知识点#
hash路由模式实现原理:使用windowd的onhashchange事件监听监听hash值得变化,从而对页面进行跳转(渲染)
history路由模式:利用HTML5 History Interface中新增的pushState() 和replacestate()
展开
评论
#每天一个知识点# 常用的几种 Content-Type
1.application/x-www-form-urlencoded: 最原生的form表单,如果不设置属性就会以此种形式提交数据
2.multipart/form-data: 常见的post提交数据的表单格式,在form里面需指明enctype为该类型
3.application/json:json序列号数据。告诉服务器该消息形式为json字符串
4.text/xml: 用来提交xml格式的数据。
5.text/html: HTML格式。
展开
评论
下一页
个人成就
文章被点赞 128
文章被阅读 16,952
掘力值 812
收藏集
0
关注标签
7
加入于