Error: Expect END descriptor with depth 0 but get another at i.value (:39360/__pageframe__/__dev__/WAWebview.js...:1) at Function.G [as _startCb] (:39360/__pageframe__/__dev__/WAWebview.js:1) at n (:39360/__...pageframe__/__dev__/WAWebview.js:1) at h (:39360/__pageframe__/__dev__/WAWebview.js:1) at :39360.../__pageframe__/__dev__/WAWebview.js:1 at t.(:39360/appservice/anonymous function) (http://127.0.0.1...:39360/__pageframe__/__dev__/WAWebview.js:1:94975) at :39360/__pageframe__/pageframe.html:1 at
数据通信 首先要知道小程序时运行在基础库之上的,但它们都是压缩打包好的,后面找到反编译出来的基础库代码,其中最重要的就是 WAService.js 和 WAWebview.js,它们分别是视图层和逻辑层的核心实现...> index.js 可以看到文件开头就是对 rpx 的转换 image.png 之后创建 style 标签,动态添加到视图层中 image.png 最后 附上 WAService.js 和 WAWebview.js
所有的小程序基本都最后都被打成上面的结构 1、WAService.js 框架JS库,提供逻辑层基础的API能力 2、WAWebview.js 框架JS库,提供视图层基础的API能力 3、WAConsole.js...AppView 这里可以理解为h5的页面,提供UI渲染,底层提供一个WAWebview.js来提供底层的功能,具体如下: 1、消息通信封装为WeixinJSBridge(开发环境为window.postMessage...WeixinJSCore.invokeHanlder实现,这个WeixinJSCore是微信提供给JS调用的接口(native实现) invokeHandler: 调用原生能力 publishHandler: 消息分发 微信组件 在WAWebview.js
这就是微信传说中的基础库里了,在渲染层引入的是 WAWebview.js 。.../WAWebview.js ,接下来就看到格式化的代码了: 是 2.32.3 版本,目前微信已经更到 3.x.x 了,新增了渲染引擎 Skyline,为了简单些这次就先看 2.x 的版本了。
进阶篇内容主要从以下几个方面来分享下 微信小程序的架构核心文件 WAService.js WAWebview.js appservice.js 的解析; 和其他文件在逻辑层和渲染层的⚠️注意事项 websocket...WAWebview.js 文件这个大致和 WAService.js 文件分析方式一样,大家感兴趣的可以自行尝试下,留给大家自己研究,理解的肯定比我写出来的要深刻很多。
解析的算法在底层基础库 WAWebview.js 文件中,我们现在此提前解析一下事件模块完整的流程,为了防止到后面底层基础库章节再讲的话,知识形成不了闭环。我这里解析的基础库版本为2.11.0。
这里说明下本篇文章中文件里面的内容每一个文件的来源和用途,我都会在后续章节中讲解出来 因为里面涉及的内容过多 我怕放在一篇文章里会太长大家看了会厌烦,所以我会分为几篇来说明,后面的 appservice 和 一些基础包和 WAWebview.js....wxvpkg 包里面这个基础库文件的 WAWebview.js 和 WAService.js,对应这两个 webview 里面的 js 引用你可以仔细观察下.wxvpkg 文件解包后的格式: ?
后来,我看到了这句: 如果不是开发环境就使用WAWebview.js,在开发环境中使用使用xxSDK,那么生产环境是怎么回事?如果是在开发环境会去下载最新的SDK,好像不对~~,哈哈。。
解析的算法在底层基础库 WAWebview.js 文件中,我们现在此提前解析一下事件模块完整的流程,为了防止到后面底层基础库章节再讲的话,知识形成不了闭环。
而基础库目录包括 WAService.js 和 WAWebview.js 文件。...小程序框架在开发者工具中以 WAService.js 命名(WAWebview.js 不知其作用,听说在真机环境使用该文件)。
运行openVendor(),你就会得到上面的wcss、wxss、WAService.js、WAWebview.js四个文件了。
当然这里只是简要介绍了一下,真实情况要比这个复杂,我们从视图层基础库的代码中也可以窥探到一些有意思的东西,比如组件占位符的样式,内联样式的转换等等(有兴趣的同学可以试着在基础库的 WAWebview.js
wxss转css transConfigToPf: 模板页配置 transWxmlToHtml: wxml转html transManager: 管理器 WAConsole.js: 框架JS库,控制台能力 WAWebview.js
实现打包到这里 **.html 其它页面的html 主包一般都是2M左右大小,也有特别的会达到4M+ 未列进来的文件: 文件名 作用 WAService.js 逻辑层基础库文件,提供逻辑层基础能力 WAWebview.js
/dev/WAWebview.js 渲染层底层基础库 ./dev/hls.js 优秀的视频流处理工具 ....我们在控制抬手动执行$gwx()的返回值 generateFunc()函数 返回的树形结构,就是该页面wxml对应的js对象形式表示的dom树 这是一个类似Virtual Dom的对象,交给了 WAWebview.js...WAWebview.js 处理虚拟dom树时,会去循环遍历attr属性,判断attr中的属性名是否为事件属性 if (n = e.match(/^(capture-)?(mut-)?...下图是我们在逻辑层接收到的数据和准备发送的数据结构 可以看到数据结构是一样的, 目前在触发sendData方法之前这些逻辑的解析包括event参数的组装都是在渲染层的底层基础库WAWebview.js
小程序核心基础库文件解读 刚才我们看到了小程序运行时核心的基础库文件,其中WAservice.js、WAwebView.js、appservice.js等文件是承载小程序运行环境的最核心文件,所以,有必要对这几个文件进行重点解读
所有的小程序基本都最后都被打成上面的结构 1、WAService.js 框架JS库,提供逻辑层基础的API能力 2、WAWebview.js 框架JS库,提供视图层基础的API能力 3、WAConsole.js...是一致的,这个也是我们平时建议的开发方式,将一根页面拆分成一个个小的业务组件或者UI组件: 所有的小程序基本都最后都被打成上面的结构 WAService.js 框架JS库,提供逻辑层基础的API能力 WAWebview.js
由WAWebview.js来提供底层的功能,具体如下: 消息通信封装为WeixinJSBridge 日志组件Reporter封装 wx api(UI相关) 小程序组件实现和注册 VirtualDOM,Diff
领取专属 10元无门槛券
手把手带您无忧上云