『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 和一些小程序相关的代码即可
推荐阅读
- 物联网:HTML基础回顾
- 漫漫笑已经很久没人给我打电话了,幽默笑话:不行!至少十分钟
- 开心小萌都遇到查车发现驾照丢了怎么办?别急十分钟就搞定
- [女排]探营女排十分钟,国手训练一幕引发网友疯狂吐槽:我比她练得好
- 海峡在线十分钟快闪,蔡英文宣布苏贞昌续任台行政部门负责人
- Aggro电竞▲十分钟亏了7万块,真全球破产?,CSGO:国外主播连开胶囊
- #岳云鹏#又失败了?岳云鹏请烧饼当私教帮助减肥,不到十分钟就宣告结束了
- 「星辰大海123」for Mac(HTML5网页动画设计工具),SVGMaker
- 打野@你的打野真的不强吗?打野三点一线法,十分钟碾压对面一万经济
- [csgo]CSGO:国外主播连开胶囊,十分钟亏了7万块,真全球破产?
