联享懂营销的专业网站设计制作公司

小程序为何要引入原生组件

2022-10-19 围观热度 709小程序/H5/公众号

      为了应对这种强交互的场景,小程序引入了原生组件。小程序是 Hybrid 应用,除了 Web 组件的渲染体系,还有由客户端原生参与组件(原生组件)的渲染。原生组件可以直接与逻辑层通信,如图 7-13 所示。

图 7-13 原生组件通信
      可以看到,引入原生组件之后,组件和逻辑层的通信绕过了 setData,也避开了数据通信和重渲染流程,渲染性能好了很多。逻辑层直接与原生组件进行通信,就可以节省交互过程的中转通信次数,同时减少 WebView 的计算和渲染工作。对于地图 <map>、画布 <canvas> 等交互频繁和复杂的组件,使用原生组件,体验会好更多。
      除此之外,原生组件还扩展了 Web 的能力,比如输入框组件(input、textarea 等)有更好的控制键盘的能力。如果你仔细研究,就可以发现小程序的输入框在聚焦的时候是原生组件,在失焦的时候则是普通的 Web 输入框,因此样式会有一些不一致的地方。根据小程序开发者指南的描述,当开发者使用了原生组件后,渲染过程包括以下 3个步骤。
      (1)首先,渲染层会根据逻辑层传入的数据创建该组件。
      (2)然后,该组件会被插入页面,同时根据样式和属性设计,WebView 会渲染布局,可以得到组件的位置和宽高。
      (3)最后,我们将计算得到的数据告诉客户端,客户端就可以将原生组件渲染到具体的位置上。
      接下来,组件有任何变更,同样可以通过以上步骤来更新原生组件。简单来说,这就相当于我们使用WebView 生成一个 DOM,然后计算布局信息给客户端进行渲染。但是这种方式会有一个问题,如果你也在 WebView 中插入过原生组件就会发现,原生组件的层级比所有其他 WebView 的组件要高,我们无法正确处理页面的层级关系。
      因此,小程序专门提供了 <cover-view> 和 <cover-image> 组件,它们可以覆盖在部分原生组件上。这两个组件也是原生组件,可以用来兼容一部分原生组件导致的层级关系。例如对于一个表单页面,当你需要在输入框上面盖一层自定义的弹窗时,你就可以用 <cover-view> 或者 <cover-image> 组件来实现。另外需要注意的是,部分 CSS 样式无法应用于原生组件。很多奇奇怪怪的样式问题都跟原生组件有关。例如,对原生组件设置 CSS 动画的效果常常不如预期、无法定义原生组件为 position:fixed 等。

  • 7x24

    全国售后支持123

  • 14

    14年行业服务经验

  • 26

    全国售后支持

  • 200

    超百人设计、研发团队

  • 2

    服务企业客户2万家

  • 9

    连续9年守合同重信用企业

关于我们
广州联享信息科技有限公司成立于2011年,是成熟的企业互联网解决方案服务商。致力于帮助每个企业实现互联网智能经营。截止目前,联享科技在全国设有26家分公司,拥有员工200余人,总公司现设有客服事业部、运营事业部、网络事业部、行政事业部四大职能部门...
联享科技已覆盖互联网主要城市
目前总部设立于广州,并在深圳、上海、北京、杭州、长沙、武汉、郑州、石家庄等全国26座城市设有分公司及30余家核心城市代理,更多城市正在筹建中,敬请期待

Copyright © 2007-2022 联享信息科技有限公司(a020.cn)版权所有

常年法律顾问:广东梵意律师事务所 周乙飞律师(主任)