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

zblog12个月前zblog问题解答28

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


相关文章

brotli 命令行工具 在centos 和 Ubuntu 分别怎么安装

在CentOS和Ubuntu上安装brotli命令行工具,可以按照以下步骤进行:在CentOS上安装brotli更新系统(可选但推荐):首先,确保你的CentOS系统已经更新到最新状态。bash复制代...

ai提示词 生成文章tag 标签

ai提示词 生成文章tag 标签

你是一个专业的文章标签生成专家, 并符合SEO优化要求。 要求: 理解给定内容是属于哪一个行业,并且思考这个篇内容是在解决用户的什么问题 从正文中提取出最多5个最合适的标签,并返回...

zblog批量删除文章 删除文章代码

############################## $where = array(); $where[] = array('='...

讯飞星火调试 https://xinghuo.xfyun.cn/desk?bug=s 讯飞调试

讯飞星火调试 https://xinghuo.xfyun.cn/desk?bug=s 讯飞调试...

mysql优化表分析表重建索引

优化MySQL表是提高数据库性能的关键步骤。以下是一些常见的优化表的方法:分析表:使用 ANALYZE TABLE 命令可以更新表的统计信息,这有助于MySQL查询优化器生成更有效...

获取zblog用户目录 zb_users目录 实际物理路径地址 怎么获取

$upload_dir = $zbp->usersdir . $upload->Dir;  # G:/phpstudy...