9-10月学习收获和感悟
收获:
vue3:通过vue.js了解了部分源码,试着尝试打包里面某个模块如reactiviry,vue3的整体设计思路,响应式系统中渲染器的设计,如diff算法,patch的过程。使用vue3编写个响应式数据,过了遍vue3的基础文档。
《vue.js设计实现》的阅读:阅读到渲染器并写了总结,略读了些后面几章的diff算法和AST技术。印象深刻的有三点:1.权衡。在优化的同时就会有部分损耗,要把损耗降至最低,例如警告信息
2.响应式,以前对于响应式的理解只停留通过es5的defineproperty到es6proxy数据劫持的方法,拦截数据后通过 get 和set对数据进行操作,而不知深层次还是需要外部的副作用函数和桶bucket来去侦听读取和设置的操作3.页面渲染流程
3.依赖 : 关于依赖,之前在ng和现在学的vue中有了解到依赖注入,然后现在在学习到依赖收集;也能更了解了vue 数据驱动视图中get set流程中,属性记录为依赖,深层次就是建立观察者,var dep = new Dep() ,其中get 方法就是做依赖收集的,相当于add,那当数据变化的时候,set就会调用到Dep对象的notify方法。去通知watcher进行视图更新。
《高性能MVVM框架的设计和实现——san》:读了部分源码,除了8和9章之外,都阅读完成。实现了san-cli+antd todolist 其中涵盖大部分语法。
webpack:
- 之前学习部分在vue中的webpack.config.js的配置有入口有出口,没深层次去了解学习到 其整个执行过程。如开始构建某个模块时,将loader加载完成的module进行编译,生成AST树。
- 优化手段:tree-shaking 用到esm规范, 不仅框架也需要,webpack中也用到了,在打包过程中检测工程中没有引用过的模块并进行标记,删除没有引用过的模块,提高构建速度,较少程序运行时间。
react:
1.阅读完成基础的官方文档
- 手写todolist (antd+类组件)
- 学习了hook部分函数
- 对比其他框架,做章节总结。
其他文章的收获:低代码:看b站发现codeFun这个网站,直接可以通过ui设计稿自动切图后直接生成代码;之前自己接触的vForm/若依通过拖拉拽构成表单后生成代码(未深入学习到里面的源码设计,ng以前是直接有组件可设置动态表单的) 也看了些amis,可视化:使用过echart,但阅读了关于d3 、three.js webgl,有浅浅的了解。pnmp:新的一种包管理工具,减少磁盘空间(但还未用过)
心得:
可以在学习的过程中,去对比框架的差异,不仅可以温故知新,而且可以更快的理解这个语言的独特性,同时也防止日后写代码会错乱。
知识点往往是联通的,比如我遇到的父子组件不更新,那就联想到vue2时候数组的问题,恰好这里也是有用到数组,就采用解构,但在全选的时候又不起效了,只要点击,就获取上次未删除之前的值,我看了application里的数组缓存已经是删掉了,那就定位到foreach赋值再解构不行,最后使用到了map方法+es6语法进行解构{...obj,done} 。另外还有在小程序数据不更新,是因为它更新需要setData,所以再San没更新后我又重新set了一遍值。
学会搭配,书本体系全,但是有些难看懂,可以配合着视频看完,带着问题往下看,当时在看到 非原始值的响应式方案在想 非原始值是什么呢?有没有原始值?vue的路由里面有路由守卫,那san里面应该也会有,是怎么写的。
源码阅读:以前自己仅仅是了解面试题上会问到的源码问题,而没去看。但读源码可以学习命名规范,了解其中深层次的原理,定位问题,更好的面向debugger学习。在读深层次的东西的时候,越学越发现自己知识面十分的短浅,日后会多增加项目的实操的同时,巩固基础学习和代码底层的原理,想读完《vuejs设计与实现后》之后再回过头读一下《深入浅出vue.js》,再理解下vue2的原理,
学会做总结。 我遇到问题或者说是很新颖的点我就会把它记录下来。好比工作中时候的冒烟测试,对项目问题的留痕,这样的做法,都会避免和减少错误的发生。同时自己总结出来相当于又复习了一遍。代码是用少了就忘的,所以要靠自己的不断总结和沉淀。
计划:
论文方向初定:看知网部分论文方向是可视化大屏+三维+托拉拽(可视化)相结合,自己会多往这方面去实践下。
todolist优化:最近也看了些vue3和ts的文档,后面会试着优化下