Open LeeeeeeM opened 6 years ago
最近我们的快应用框架需要支持vue。 我们的快应用框架中包含这么几个部分: 1、APP启动bootstrap,快应用中的代码入口点是rpk包(可以理解为打包之后用zip压缩)中manifest.json文件,原生端初始化V8引擎,加载框架,注入全局的global函数,runtime,以及全局的共享数据。 2、加载页面Page,每一个页面都是一个V8实例,互不干扰,实例化VM,注册Page函数,启动Page相关的生命周期钩子函数。 3、构建页面。 此时只要修改每个页面中的VM,UI随即更新。 我们类比小程序,即可发现mpvue在runtime的时候拦截了全局的Page中的setData函数,开发过原生小程序的同学都知道,这个类似react中的setState函数的钩子是我们修改页面的唯一途径。所以,类似的,我们的快应用框架如果需要引入VUE框架,实际上只需要在Page中拦截vm,只要vm发生变化,随即将数据的变化发送给快应用框架中的对应的VM即可。
最近我们的快应用框架需要支持vue。 我们的快应用框架中包含这么几个部分: 1、APP启动bootstrap,快应用中的代码入口点是rpk包(可以理解为打包之后用zip压缩)中manifest.json文件,原生端初始化V8引擎,加载框架,注入全局的global函数,runtime,以及全局的共享数据。 2、加载页面Page,每一个页面都是一个V8实例,互不干扰,实例化VM,注册Page函数,启动Page相关的生命周期钩子函数。 3、构建页面。 此时只要修改每个页面中的VM,UI随即更新。 我们类比小程序,即可发现mpvue在runtime的时候拦截了全局的Page中的setData函数,开发过原生小程序的同学都知道,这个类似react中的setState函数的钩子是我们修改页面的唯一途径。所以,类似的,我们的快应用框架如果需要引入VUE框架,实际上只需要在Page中拦截vm,只要vm发生变化,随即将数据的变化发送给快应用框架中的对应的VM即可。