2024-8-10 打卡第十一天 学习视频链接
es6中的module
- module能单独命名,数据和代码的集合体
- 特征:
- 外部特征:主要指的是模块与外部环境(如其他程序或模块)联系的接口,以及模块所展示的功能。包括输入输出参数,引用的全局变量。
- 内部特征:内部环境具有的特点,对应局部函数,数据,代码
- 为什么需要模块化:代码抽象,代码封装,代码复用,依赖管理
- 没有模块化
- 变量和方法不容易维护,容易污染全局作用域
- 加载资源的方式通过script标签从上到下
- 引入资源
- js模块化机制
- commonjs nodejs
- AMD(require.js)
- CMD(sea.js)
函数式编程
- 三种编程范式
- 命令式编程
- 声明式编程
- 函数式编程:强调函数执行的结果而非过程,使用简单的单元逐层推导
- 优点:
- 能够更好的管理状态,因为终止是无状态,优化代码减少出错的情况
- 更简单的复用,固定输入和固定输出,无外部影响和副作用
- 更优雅的组合
- 隐形好处是减少代码量,提高维护性
- 缺点:
- 性能:对方法进行过度包装,产生上下文切换的性能开销
- 资源占用:js对垃圾回收所产生的压力超过其他方式
- 递归陷阱:迭代使用递归操作,会陷入递归陷阱
- 优点:
CSR和SSR
- CSR:客户端渲染
- SSR:js文件比较大,加载慢,首屏白屏。用SSR服务端渲染解决问题,由服务端直接生成html返回给浏览器来渲染首屏内容,但是服务端渲染页面交互能力有限,实现复杂交互,引入js文件。把页面的展示内容和交互写在一起,代码执行两次,叫做同构
- 两个的区别就在于最终的html代码是从客户端添加的还是服务端添加的。从客户端添加的就是CSR,从服务器渲染的就是SSR
html文档渲染过程中,css文件和js文件的下载,是否会阻塞渲染
- CSS阻塞:CSSDOM tree和DOM tree合成 render tree绘制页面。css文件的下载和解析不会影响dom解析,但是会阻塞dom渲染。并且在css文件没下载和解析完成之前,后续的js脚本不能执行。css文件的下载不会阻塞前面的js脚本执行。
- js阻塞:js文件的下载和解析会阻塞GUI渲染进程,也就是会阻塞dom和css的解析和渲染过程