Skip to content

编译到各平台的小程序代码中的view部分,为什么要用template 的方式实现? #12588

Answered by Chen-jj
lunyong asked this question in Q & A
Discussion options

You must be logged in to vote

使用 react、vue 开发后,会在逻辑层得出一颗虚拟 dom 树,但小程序渲染层的 dom 结构(wxml)是要提前写死的,所以只能用 <template> 模拟节点,运行时根据 dom 树的数据递归渲染。

taro 1、2 是把 React JSX 直接编译转换成 wxml,并不是在运行 React。

Taro 1、2 和 3 的不同实现方案是对开发体验和性能间的权衡结果。

快手 flex 不生效,大概是和百度小程序一样,template 在逻辑层被编译成一个正真的节点了。

例如:

<template>
  <view style="display: flex">
    <template>
      <text style="flex: 1">
        Hello World!
      </text>
    </template>
  </view>
</template>

在其它小程序的渲染结果:

<view style="display: flex">
  <text style="flex: 1">
    Hello World!
  </text>
</view>

在快手小程序的渲染结果:

Hello World! ```

view 和 text 间多了一个真实存在的 template 节点,导致 flex 失效。

Replies: 2 comments 4 replies

Comment options

You must be logged in to vote
3 replies
@lunyong
Comment options

@Chen-jj
Comment options

@lunyong
Comment options

Answer selected by lunyong
Comment options

You must be logged in to vote
1 reply
@voidman2017
Comment options

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q & A
Labels
None yet
3 participants