获得徽章 1
- #青训营笔记创作活动#
2月18日 day30
总结一下,qiankun 一共有 3 种沙箱:
SnapshotSandbox:记录 window 对象,每次 unmount 都要和微应用的环境进行 Diff
LegacySandbox:在微应用修改 window.xxx 时直接记录 Diff,将其用于环境恢复
ProxySandbox:为每个微应用分配一个 fakeWindow,当微应用操作 window 时,其实是在 fakeWindow 上操作
要和这些沙箱结合起来使用,qiankun 会把要执行的 JS 包裹在立即执行函数中,通过绑定上下文和传参的方式来改变 this 和 window 的值,让它们指向 window.proxy 沙箱对象,最后再用 eval 来执行这个函数。展开评论点赞 - #青训营笔记创作活动#
2月17日 day29
package.json 是前端每个项目都有的 json 文件,位于项目的根目录。许多脚手架在搭建项目时也会自动帮我们自动初始化好 package.json。
package.json 里面有许许多多的配置,与项目息息相关,了解它们有助于了解项目,提效开发,规范代码。展开评论点赞 - #青训营笔记创作活动#
2月16日 day28
所有人都知道 Webpack 很复杂,但 Webpack 的源码却很优雅,是一个典型的可插拔架构,不仅逻辑清晰,而且灵活好扩展。近几年出来的一些构建工具,大多也都参考了 Webpack 的这种架构方式。
而实现这一切的核心就是借助了 Tapable。
关于 Tapable 的源码其实并没有多少代码量,学习它的原理首当其冲的一定是可以让你在日常 Webpack Plugin 开发中更得心应手,解决相关问题更加顺畅。
其次,Tapable 的内部以特别巧妙的方式实现了发布订阅模式,这之中会有非常多的知识点:比如懒编译或者叫动态编译,关于类与继承抽象类的面向对象思想以及 this 指向的升华等等...展开评论点赞