『HTML』Kbone,十分钟让 Vue 项目同时支持小程序( 三 )
本文插图
比如上图的例子 , 我们封装了一个 custom-dom 组件 , 这个组件里面也使用了 custom-dom 组件用于渲染子组件 。 那么只要我们执行一下 setData , 把 children 数据传递过去就可以创建出子组件 , 子组件本身也是 custom-dom 组件 , 它同样可以执行这个逻辑把各自的子组件创建出来 , 这样就实现了组件的递归创建 , 只要我们拥有完整的 Dom 树结构 , 就可以创建出相对应的一棵组件树 。
本文插图
这里递归的终止条件是遇到特定节点、文本节点或者孩子节点为空 。 然后在创建出组件树后 , 将 Dom 节点和自定义组件实例进行绑定以便后续的 Dom 更新和操作即可 。
我们将其归纳为两个模块:仿造接口和自定义组件 。 正因为这个方案是通过提供适配器的方式来仿造出 Web 环境 , 所以用户代码不需要做任何魔改 , 大部分特性都可以继续使用不需要被删减 , 比如 vue-router、window.location 操作等 。
本文插图
原本 Web 端代码是基于 Vue 来搭建的 , 其中还用到了诸多插件/库 , 如 Vue-router、Vuex、Markdown-it 等 , 同时还支持了服务端渲染 。 但是不管 Web 端是怎么实现的 , 底层终究是调浏览器的那些接口 , 所以对于用户层面的代码我们不做任何调整 , 只是将浏览器那一层替换掉即可 。
本文插图
整个构建流程是基于 Webpack 来实现的 , 使用 Kbone 构建出小程序代码也是基于 Webpack 来实现 , 只需要在原本 Web 端构建流程上实现一个 Webpack 插件 , 在构建原本 Web 端代码到小程序端时追加 Kbone 和一些小程序相关的代码即可
- 海峡在线十分钟快闪,蔡英文宣布苏贞昌续任台行政部门负责人
- 「星辰大海123」for Mac(HTML5网页动画设计工具),SVGMaker
- [csgo]CSGO:国外主播连开胶囊,十分钟亏了7万块,真全球破产?
- 「检查」安检员双手十分钟一消毒 上海虹桥机场“五一”完善常态防疫
- 短线■如何在尾盘十分钟打入第二天大概率冲高的短线股票(附选股公式)
- 【WiFi新连接】达达小哥敲开了我家的门……,在直播间下单二十分钟后
- 「颜七公子」Unite mac版是Macos上一款可以将网站转化为应用程序的软件Unite for mac(将网站转化为应用程序) https://www.macw.com/mac/1157.html
- 「热剧天天乐」十分钟可看遍全球,美军航母将无处可逃,国产卫星数量暴增
- 「小鹰说科技」全球最快空射导弹开建,已瞄准俄罗斯,十分钟击毁2千公里外目标
- 「审批」全程“不见面”十分钟完成勘验审批 东昌府区首推“远程视频勘验”