摘要:
介入webpack 的打包流程,将某个包给mock 掉 在某些情况下,我们对于包的体积比较敏感,某些第三方的包引用了其他第三方的包,而且第三方的包不支持摇树,我们希望在打包的时候将第三方包所依赖的第三方包给去除掉,因为那部分功能我们并不使用。思路是采用mock 的方式,将第三方的第三方包给去除。 被 阅读全文
摘要:
monorepo中如何共享bundle 在monorepo中的多个app,由于它们的npm 包都是在最顶层的workspace 管理安装的,在编译各个子应用的时候,为了节省bundle的大小,如何才能将每个应用中公用的vendor bundle 抽出来。本篇就是基于此对webpack的一些探讨 借助 阅读全文
摘要:
Fast 中的 Decorator 在 typesciprt 及 js 中的差异 结论 ts 中约定属性的装饰器语法只有两个参数type PropDecorator<T> = (target: T, key:string):void; 而在 js 中旧的装饰器的语法var type PropDeco 阅读全文
摘要:
csp 的条件下对于懒加载的影响 本文介绍在开启CSP的条件下,webpack 的懒加载会受到的影响。 Trusted Types 简单的说就是在使用Trusted Types的条件下,对于 DOM 的一些属性的赋值,必须要经过 policy,否则,浏览器会报错。这个安全机制是为了防止 XSS 攻击 阅读全文
摘要:
从浏览器的渲染角度来进行性能优化 性能瓶颈 js 执行引擎与渲染引擎是互斥的,他们是共同存在与浏览器的 UI 线程里面 js 引擎负责执行我们的 js 代码从而产生 Dom 树, 渲染引擎则是依据 Dom 树,样式树来构建渲染树,然后排版与绘制,然后组合,从而计算出显示的像素点。 整个的流程需要在一 阅读全文
摘要:
40行代码实现zonejs 之前看到过别人写过一个40行代码实现Vue中的Reactivity功能,觉得蛮好玩的。Angular的变更检测是基于Zonejs的。市面上也有一些文章介绍zonejs,我也读过好多遍Zonejs的源码。所以,我也来了个40行代码实现ZoneJs的。这个是我的github。 阅读全文
摘要:
ZoneJs 源码解析 ZoneJs是什么,它能干什么,它是怎么做到的? Zone是为js的执行提供了一个共享的数据上下文。为js函数执行维护了一个逻辑上的调用栈。 同时提供了对于函数执行方法的拦截,在函数执行前后,添加一些通用的逻辑(例如日志,异常处理)。 统一的任务模型,提供对于宏任务/微任务/ 阅读全文
摘要:
React Fiber调度算法笔记 React 从v16开始引入了Fiber,为了支持时间分片,优先调度,支持渲染过程中中断,恢复。中断是为了让浏览器有机会响应更高优先级的事件。刚看到这个功能的时候就开始猜想,js是单线程的,要实现这个功能,React的渲染过程得自己将任务分片,每次执行一个分片,然 阅读全文
摘要:
Webpack 打包实战 本文从一个简单的例子出发,比较一下,我们的代码经过webpack 打包后会变成啥样,带有HMR的情况下,会有什么不同 我们的代码 // index.js import {greeting} from './moduleA' let cleanup=null; functio 阅读全文
摘要:
介绍一下webpack hmr相关的API webpack首先将模块变成对象的一个属性,该属性是一个方法,调用它就返回最新的模块。模块的变更就变成了更新这些方法的定义。其次,webpack对于我们代码的import,做了拦截,会变成从它的模块对象里面去读取模块,同时它做了缓存。最后,当模块变化的时候 阅读全文