突发奇想--使用js-dom进行离屏渲染

         这2天,研究单元测试的内容,读了一遍vitest 和 @vue/test-utils 的文档,并记录原理和技巧在公司WIKI上!夜来无事,对电脑在思考如何解释单元测试的一些概念,为什么Nodejs环境中,可以执行组件的代码,js-dom是什么,虚拟定时器是什么呢,

       突然想到,js-dom可以在内存中,把一个vue组件加载为渲染后的html,那么我是不是可以启动一个webWorker进程,对(大型的)Vue组件进行离屏渲染呢?比如我们现在维护的Grid组件,臃肿且卡顿了。假如某个更新逻辑需要400ms,这在主页面上就是严重卡顿,要掉6,7帧。这种情况时,在主Vue中,留置一些Stub位,然后将一些相关属性传递给webWorker,等它返回消息后,直接将对应的html更新到stub桩位上即可!

        这种使用js-dom + webWoker进行离屏渲染,那么虽然不能让用户尽早看到更新结果,但是能避免卡顿,至少页面主进程是光滑不掉帧的。

       但是经查询,jsdom 或 happydom都是运行在nodejs环境中,即使是vue的createSSRApp 也是一样,那么有没有在webWork渲染Vue组件的办法呢?更棘手的是,即使输出了有效的字符串,如何绑定上事件以及后续的mount等生命周期等逻辑,也就是所谓有“重新注水”!

      于是新的思路是,利用vue的自定义渲染器,写一组nodeOps方法,它只用于操作字符串,最后输出字符串。同时记录mount事件,因为后续要回放这个事件!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章