解读vue-server-renderer源码并在react中的实现 (4)

如果入口文件有依赖别的文件,再次执行 2 - 4步骤,把入口文件换成依赖的文件就好,例如,路由一般都是懒加载的,所以在访问指定路由时,webpack打包出来也会获取这个对应的路由文件,依赖到入口文件里面。

通过沙盒环境执行获取到的返回结果,在vue-hackernews-2.0项目中是 new Vue实例对象。

解析这个vue实例,获取到对应的html字符串,放入html模板中,最后返回给前端。

这样就实现了读取内存文件,得到对应的html数据。主要就是通过 vm模块跟module模块来执行这些代码的。其实这块的整个代码也还是比较简单的。并没有什么复杂的逻辑。

因为项目是基于react和webpack5的,所以在代码的处理上会有些不同,但是实现方案基本还是一致的。

其实说到执行代码,js里面还有一个方法可以执行代码,就是eval方法。但是eval方法在require的时候都是在本地模块中进行查找,存在于内存中的文件我发现没法去进行require查找。所以还是用的vm模块来执行的代码,毕竟可以重写require方法

项目完整代码:GitHub 仓库

博客原文地址

我自己新创建了一个相互学习的群,无论你是准备入坑的小白,还是半路入行的同学,希望我们能一起分享与交流。
QQ群:810018802, 点击加入

QQ群 公众号
前端打杂群

QQ群:810018802

  冬瓜书屋

公众号:冬瓜书屋

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygfyf.html