[!NOTE] KEEP FORWARD
本篇用于快速记录下随时想到或遇见的东西,不追求格式和准确性,日后再分类和归档👻
“你掉的是这个 金知识点? 还是这个 银知识点 ?”
iframe内再嵌套iframe的场景,内层iframe如何同外层window通信
- 如果知道间隔多少层,直接用window.parent….parent.postMessage()发消息;同源的情况下可以直接window.top 访问到最外层window
- 层层转发
- 现代浏览器 BroadcastChannel api
iframe 内的请求无法携带cookie,除非设置了samesite=none,同时必须设置secure属性
词法环境 https://dev.to/wisdomudo/understanding-lexical-environment-in-javascript-a-beginners-guide-5bp1
去中心化?
思考一个问题:
在一个微前端中,主应用和子应用都用到了一个js sdk,通过cdn的方式引入,它们可能需要不同的版本,在js sdk中判断了如果当前已有全局变量,则不再赋值,主应用和子应用引入sdk的时机可能由于网络波动的影响引用顺序不同
模块联邦 module federation webpack5提出的概念,在构建工具、微前端有应用
端到端测试 playwrite
什么是CId
什么是UUID
# Understanding UUID: Purpose and Benefits of a Universal Unique Identifier
prefetch 和 preload
==preload 预加载==
通过为link标签的rel属性设置 preload ,能够声明一个获取请求,指定页面马上就需要的资源,这会在页面生命周期的早期就进行加载,早于浏览器的主渲染启动,注意,它只会更早地去下载和缓存脚本,但不会加载和执行
1 | <link rel="preload" href="xxx" as="script" /> |
通过再设置一个type属性能够帮助浏览器确定资源类型并确定能否支持该种资源,不支持会直接忽略,支持则下载。例如
1 | <head> |
如上面代码所示,不建议为同一资源的多种类型指定预加载。相反,最佳实践是仅为大多数用户可能实际使用的类型指定预加载
==prefetch 预取==
它是用于预取将在下一次导航/页面加载时使用的资源(例如,当你跳转到下一页时)。这是可以的,但对于当前页面没有用!此外,浏览器会给预取(prefetch)的资源比预加载(preload)的资源更低的优先级——当前页面比下一页更重要。
硬链接和软链接
document.elementsFromPoint(x, y) 关键点采样
requestIdleCallback
window.requestIdleCallback() 方法插入一个函数,这个函数将在浏览器空闲时期被调用。这使开发者能够在主事件循环上执行后台和低优先级工作,而不会影响延迟关键事件,如动画和输入响应。函数一般会按先进先调用的顺序执行,然而,如果回调函数指定了执行超时时间timeout,则有可能为了在超时前执行函数而打乱执行顺序。`
删除server-side-render-resource/lib/resource.js line143的__INITIAL_STATE__,
另一个注意的点,修改node_modules里面的文件后,刷新页面没有变化,需要npm run dev重启项目,考虑dev模式下为什么会这样
OpaqueResponseBlocking是啥?
Navigator.sendBeacon
sendBeacon API〔方案選單〕
http2 push cache
html attribute VS JS property
参考文档:HTML attributes vs DOM properties
html attribute是html元素具有的属性,
JSON schema
json schema是一个用来定义json数据约束的标准,
GIT
1 | git删除远程分支 |
参考文档:git pull&git fetch
1 | // 解构 |
1 | // 注意``模板字符串会带上``内的所有内容,注意不要在里面回车换行 |
1 | // 使用import导入一个用export default默认导出的值时,不用花括号 |
js运算符
1 | 异或 ^ |
js数组
1 | let arr=[1,2,3,4,5] |
懒加载
参考文档:js实现图片懒加载原理 懒加载
postcss
postcss可以理解为一个平台,在上面可以跑很多插件,对开发时写好的css做一些处理,一些插件比如autoprefixer,autoprefixer是一个后处理器,可以实现css3代码自动补全。autoprefixer使用的是browserlist
npx执行包命令
比如npx browserlist
1 | npx lessc target.less #得到编译后的css文件 |
har文件
全称Http Archive Format,是用来记录浏览器加载网页时所消耗时间的工具,它会记录每一个http请求发出直到收到完整http响应中间消耗的时间,可以迅速帮助我们知道是哪些HTTP请求没有得到及时的回复,从而进行更一步的排查。
1 | npm list -g --depth 0 #npm查看全局安装的包 |
在Chrome元素tab选中一个元素后,可以通过$0访问到这个元素,在console tab中调用monitorEvents($0, ‘click’),两个参数分别为’元素‘和‘事件名’,可以在触发此事件后输出此事件对象
浏览器devtools cmd+shift+p
在Chrome console 的$_会缓存上一个输出的值
Package.json中版本号管理:
1 | "3.0.4"表示安装指定3.0.4版本 |
Brew install 出现tar:error……错误
Bintray 要关闭了, 所以 Homebrew 的归档之后就没再往Bintray 那边传了, 而新版的 Homebrew 已经去除了Bintray相关,使用 ghcr.io 服务了.
正常情况下通过 Homebrew 官网提供的命令安装的用户是无感的, 但是由于国内特殊网络环境的问题, 我使用的是如上文所说的国内镜像, 而国内的镜像是依然指向 Bintray 的, 所以才会出现无法打开归档的错误
Brew安装的软件位于:/usr/local/Cellar/
npm出于安全考虑,不支持以root用户运行,用root身份运行时会自动转成nobody用户来运行,nobody用户几乎没有权限,如果加上了–unsafe-perm参数,就不会切换到nobody用户上,运行时是哪个用户就是哪个用户
1 | open -W [url] // 在浏览器打开url |
document.referer返回一个url,用户是从这个url跳转或打开当前页面的。如果用户是直接打开的页面比如从书签或地址栏直接搜索,``document.refere`r将为空字符串
1 | wc file.txt # 输出为行数、单词数、文件大小 |