Open xszi opened 3 years ago
sourceMap的主要作用是为了方便测试,因为现在的前端代码都是模块化、组件化。在上线之前会对JS和CSS代码进行合并压缩。对于开发者来说,对这样的线上代码进行调试是痛苦的,压缩之后的代码可阅读性很差。sourceMap的作用就是让浏览器的调试面板将生成后的代码映射到源码文件中,开发者可以在源码文件中做调试工作。
sourceMap生成过程举例:
// index.js
const sayHello = function () {
console.log('hello sentry');
}
npm i -g uglify-js
uglifyjs index.js -o output.min.js --source-map "filename='output.min.js.map'"
// output.min.js
const sayHello=function(){console.log("hello sentry")};
// output.min.js.map
{
"version": 3,
"file": "output.min.js.map",
"sources": [
"index.js"
],
"names": [
"sayHello",
"console",
"log"
],
"mappings": "AAAA,MAAMA,SAAW,WACbC,QAAQC,IAAI"
}
uglifyjs压缩代码生成sourceMap文件,然后可对mapping 关系进行优化。
用编码的方式记录代码的位置,后续使用的时候再映射还原。
VLQ编码 ,可变长度编码
HMR(Hot Module Replacement)是webpack最令人兴奋的特性之一,用于在不刷新页面、不丢失页面状态的情况下对应用发生变更的文件进行热更新。
在HMR出现之前,已有很多live reload库,能做到代码编译后自动刷新浏览器,不需要手动更新,如果应用是无状态的话,这样做没什么问题,但是一旦有状态的话,刷新页面就会导致状态丢失。举例说明:如果一个系统有个登陆页面,用户输入完用户名和密码,获取到JWT(JSON Web Token),将JWT保存在变量中,那么如果页面刷新的话JWT就会丢失,导致开发需要再次登陆,这种体验就很差了。
http import
会大行其道像airpack、http import、imove、midway-hooks、ykfe/ssr这些其实会成为前端新基建。
问题:
建议:
举例: 你今天10点钟打开了百度,访问了它的三个页面;11点钟又打开了百度,访问了它的两个页面,则UV数为+1,PV数+5,VV数+2.
将个人项目部署到github上面:
如何部署Node.js项目
blink-mind
开源库修改实现一个思维导图工具复制问题:从其他思维导图工具复制节点到当前工具下粘贴?
步骤:
关键位步骤2
大体逻辑:
\t
)的数量来决定父子关系,注意这里只计算有效内容前置的\t
数量,如\t\t abc \t
, 则\t
数量为2
2.1. 若当前行的\t
字符数量多于前一行,无论大多少,都认为是前一行的直接子节点
2.2. 若当前行\t
字符数量少于前一行,则需要计算少了多少个\t
来决定往前找多少层找到父节点,如果找不到有效父节点(如少了的\t
数量超过当前缓存的层级数),则直接作为顶层节点返回。
2.3. 若当前行的\t
字符数量等于前一行,则认为当前行和前一行是兄弟以下面机构表示具有缩进的text复制文本,“|-”表示一个Tab缩进
node0
| - node1
| - | - node1.1
| - | - node1.2
| - | - | - node1.2.1
| - node2
| - | - node2.1
| - | - node2.2
| - node3
使用堆栈用来寻找各节点的父节点,用一个cachedNodePath
表示一个堆栈,
\t
减少数量算出层级(level)减少数量,并从 cachedNodePath
抛出这个数量的节点cachedNodePath
为空,则当前行认为是顶层节点另一种想法:使用reduce处理树形结构数据?
《跟月影学可视化》学习地址
可视化学习资料:
关于域名 同源和同站(不一定是顶级域名) public_suffix_lis
域名泛解析
偶有所想,分享记录