通过在页面或自定义组件的 JSON 配置中添加以下配置开始适配

zblog1年前zblog问题解答37

JSON 配置

通过在页面或自定义组件的 JSON 配置中添加以下配置开始适配:

{ "componentFramework": "glass-easel" }

添加后,WXML 模板将被编译为适配 glass-easel 的新格式 ProcGen,并同时保持对旧版组件框架 exparser 兼容。

为一个页面或自定义组件添加这个配置后,所有它依赖的组件也将自动被标记为 glass-easel 适配(包括 usingComponents 依赖和 componentGenerics#default 依赖)

在 app.json 中添加这个配置可以全局开启 glass-easel 支持。但需要注意的是,配置后编译生成的模板虽然也能在 exparser 上运行,但兼容版本在 exparser 上有可能遇到边界情况下的兼容性问题,因此除非不需要兼容旧版本基础库或者小程序整体都以 Skyline 运行,否则应该更谨慎地使用全局配置。

插件暂未支持页面或自定义组件级别的 componentFramework 配置项,可以在 plugin.json 中添加这个配置项来开始适配。

变更点适配

glass-easel 在设计上兼容绝大多数的旧版组件框架 exparser 的接口,仅有少数地方需要变更:

  1. [必须] 模板中数据绑定外的转义改为标准 XML 转义,数据绑定内的转义现在无需转义

    • 兼容性:[需要手动兼容] exparser 上不能使用新的转义写法

    • 旧例:

      <view prop-a="\"test\"" prop-b="{{ test === \"test\" }}" />
    • 新例:

      <view prop-a="&quot;test&quot;" prop-b="{{ test === "test" }}" />
  2. [必须] 模板中不再支持 wx-ifwx-for 两种写法,仅支持 wx:ifwx:for

    • 兼容性:[推荐直接变更] exparser 同样可以使用 wx:ifwx:for

    • 旧例:

      <view wx-if="{{ arr }}" />
    • 新例:

      <view wx:if="{{ arr }}" />
  3. [必须] 运行在 exparser 兼容模式上时,不支持 WXSS input 标签选择器

    • 兼容性:[推荐直接变更]

    • 旧例:

      input {
         height: 30px;}
    • 新例:

      .my-input {
         height: 30px;}
  4. [必须] 自定义组件 JS 配置 options 中的 styleIsolation 改为在 JSON 中配置

    • 兼容性:[推荐直接变更] exparser 同样会读取 JSON 中的 styleIsolation

    • 旧例:

      Component({
        options: {
          styleIsolation: 'isolated'
        }
      })
    • 新例:

      {
        "component": true,
        "styleIsolation": "isolated"
      }
  5. [必须] 自定义组件 JS 配置 options 中的 addGlobalClass 改为在 JSON 中配置

    • 兼容性:[推荐废弃] exparser 不会读取 JSON 中的 addGlobalClass,但 addGlobalClass 可以等价转换为对应的 styleIsolation 从而兼容:

    1. 由于当 styleIsolation 并非默认值时,addGlobalClass 无效,因此如果组件已经有 styleIsolation 配置项,直接去掉 addGlobalClass 即可

    2. 如果组件使用 Page({}) 进行注册,由于 Page({}) 拥有 styleIsolation: shared 默认值,因此 addGlobalClass 不会生效,去掉即可

    3. 区分自定义组件是否做为页面使用,按照下表将 addGlobalClass 转换为 styleIsolation


      作为页面根节点不作为页面根节点
      addGlobalClass: true无需添加(没有意义)styleIsolation: apply-shared
      addGlobalClass: falsestyleIsolation: sharedstyleIsolation: isolated


相关文章

php exlpode 字符串转数组函数(普通字符串 分割 + 正则表达式 分割)

============普通字符串 分割explode() 函数是 PHP 中的一个非常实用的字符串处理函数,它的作用是将一个字符串按照指定的分隔符分割成数组。这个函数经常用于处理 CSV 文件、UR...

zblog更新用户文章数量sql

我有两个表     zbp_member  和 zbp_post  ,zbp_post &...

宝塔批量绑定域名 上千 怎么快速!界面会卡死! server_name Nginx域名绑定

/www/server/panel/vhost/nginx/站点.cn.conf直接在 第二行修改即可server{    listen 80;    serv...

php array_pop 函数 从数组的最后一个元素弹出值,并返回这个值。

php array_pop 函数array_pop 函数是 PHP 中的一个内置函数,它的作用是从数组的最后一个元素弹出值,并返回这个值。同时,该数组的长度会减少 1,因为被弹出的元素已经从...

/www/server/php/80/sbin/php-fpm: error while loading shared libraries: libsodium.so.23: cannot open

/www/server/php/80/sbin/php-fpm: error while loading shared libraries: libsodium.so.23: cannot open

安装php8失败  安装php8.0失败机器的安装源不行 安装源无法安装libsodium-devel软件,所以安装好php后会报错,更换系统的安装源后,重新安装libs...

IDE爆红问题 PHP注释  php Doc注释

IDE爆红问题 PHP注释 php Doc注释

/** @var ZBLOGPHP $zbp @var string $blogpath */解决 IDE爆红问题加了phpdoc注释:这段PHPDoc注...