xszi / docs

持续更新...
https://xszi.github.io/docs/
3 stars 0 forks source link

FE备忘(2021) #7

Open xszi opened 3 years ago

xszi commented 3 years ago

偶有所想,分享记录

xszi commented 3 years ago

1. SourceMap

sourceMap的主要作用是为了方便测试,因为现在的前端代码都是模块化、组件化。在上线之前会对JS和CSS代码进行合并压缩。对于开发者来说,对这样的线上代码进行调试是痛苦的,压缩之后的代码可阅读性很差。sourceMap的作用就是让浏览器的调试面板将生成后的代码映射到源码文件中,开发者可以在源码文件中做调试工作。

SourceMap的作用

  1. 开发环境生成SourceMap方便调试代码
  2. 生产环境通常会禁用掉SourceMap,避免源码泄露,但是一些第三方库,比如BootStrap会提供sourceMap方便用户测试
  3. 生产环境错误监控系统可以收集出错堆栈,经过SourceMap还原出错位置。(使用sentry进行前端监控

sourceMap生成过程举例:

SourceMap原理

用编码的方式记录代码的位置,后续使用的时候再映射还原。

VLQ编码 ,可变长度编码

surge hugo —— 个人博客部署快速通道

jamStack —— 国外一个建站帮助网站

—————— 2020.12.04

xszi commented 3 years ago

2. HMR原理

HMR(Hot Module Replacement)是webpack最令人兴奋的特性之一,用于在不刷新页面、不丢失页面状态的情况下对应用发生变更的文件进行热更新。

在HMR出现之前,已有很多live reload库,能做到代码编译后自动刷新浏览器,不需要手动更新,如果应用是无状态的话,这样做没什么问题,但是一旦有状态的话,刷新页面就会导致状态丢失。举例说明:如果一个系统有个登陆页面,用户输入完用户名和密码,获取到JWT(JSON Web Token),将JWT保存在变量中,那么如果页面刷新的话JWT就会丢失,导致开发需要再次登陆,这种体验就很差了。

—————— 2020.12.25

xszi commented 3 years ago

3. 2021前端趋势 —— 狼叔

像airpack、http import、imove、midway-hooks、ykfe/ssr这些其实会成为前端新基建。

—————— 2021.01.12

xszi commented 3 years ago

4. 前端开发过程遇到的问题 / 建议

问题:

  1. 产品需求规划没有开发参与,版本开发周期未能与开发商量,导致开发时间不能合理安排;
  2. 前端开发人员太少
  3. 产品持续在版本周期加新需求
  4. 编码规范

建议:

  1. 团队影响力,技术开源
  2. 团队业余活动
  3. 找一些基础性的项目共同参与,共同成长
  4. 技术分享内容可以分享一些自己开发项目内的经验,困扰,难点
  5. 交叉参与别人的项目,codeReview

—————— 2021.01.15

xszi commented 3 years ago

5. wizard2021年度计划

—————— 2021.01.21

xszi commented 3 years ago

6. UV,PV,VV

举例: 你今天10点钟打开了百度,访问了它的三个页面;11点钟又打开了百度,访问了它的两个页面,则UV数为+1,PV数+5,VV数+2.

—————— 2021.01.22

xszi commented 3 years ago

7. Github Actions

将个人项目部署到github上面:

如何部署Node.js项目

xszi commented 3 years ago

8. CSS变量

两个demo:

源码

xszi commented 3 years ago

9. 使用blink-mind开源库修改实现一个思维导图工具

复制问题:从其他思维导图工具复制节点到当前工具下粘贴?

步骤:

  1. 自己写个工具查看复制的内容粘贴后在浏览器中显示,发现不同层级的节点显示时有不同的缩进(Tab)
  2. 将复制的text内容根据缩进量表示父子树形关系并转换为JSON对象
  3. 将JSON对象粘贴到目标位置

关键位步骤2

大体逻辑:

  1. 判断是否包含换行符,若存在,则尝试将文本转换成JSON对象
  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表示一个堆栈,

另一种想法:使用reduce处理树形结构数据?

xszi commented 3 years ago

10. 前端学习思路

  1. 功能相似的技术只学一种,比如webpack, rollup, gulp都是工程化打包工具,学其一,其他几个初步了解后等工作中用到后在花时间去学;react可以多练练,毕竟可以加分很多
  2. 数据可视化方向,未来的VR、AR都是跟图像跟前端有联系的的产业,所以可以往这个方向靠,计算机视觉,图形学,数学,此类方向上限更高,不易被淘汰;
  3. 通用领域知识,一旦你下决心从事这个领域,也是能够尽早学习它比较好,不过由于这些知识是领域相关的,如果能一边学习,一边通过实践来打磨,就会掌握得更快。专用领域知识,不一定要很早去学,有一个技巧是,当你用到的时候再去学习它们。如果你没有用到,你可以知道有这门技术,能做什么就行了,不用花大量时间和精力去钻研它们。

《跟月影学可视化》学习地址

可视化学习资料:

关于域名 同源和同站(不一定是顶级域名) public_suffix_lis

域名泛解析