微信小程序组件如何为?

摘要:前置 微信小程序官方文档自定义组件章节内容比较杂,以下是我的学习记录。 小程序自定义组件 原生微信小程序支持简洁的组件化编程,通过组件化编程可以: 将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用 将复杂的页面拆分成多个低耦合
前置 微信小程序官方文档自定义组件章节内容比较杂,以下是我的学习记录。 小程序自定义组件 原生微信小程序支持简洁的组件化编程,通过组件化编程可以: 将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用 将复杂的页面拆分成多个低耦合的模块,有助于代码维护 发布第三方原生小程序自定义组件或组件扩展,壮大社区 快速开始 创建组件 一个组件包含四个文件,分别是 json、wxml、wxss、js。 在 Com.json 中将 component 字段设为 true Comp.json { "component": true } 在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式 Comp.wxml <view class="title"> {{title}} </view> Comp.wxss .title { color: green; } 编写自定义组件的 js 文件 在自定义组件的 js 文件中,需要使用 Component 方法注册组件。 Comp.js Component ({ data: { title: "Hi", }, }); 使用组件 使用已注册的自定义组件前,首先要在页面的 json 文件中进行引用声明。此时需要提供自定义组件的标签名和对应的自定义组件文件路径: page.json { "usingComponents": { "component-tag-name": "path/to/the/custom/component" } } page.wxml <component-tag-name></component-tag-name> 组件样式 :host 选择器 组件可以指定它所在节点的默认样式,使用 :host 选择器。 Comp.wxss :host { color: yellow; } 组件样式隔离 默认情况下,自定义组件的样式只受到自定义组件 wxss 的影响。app.wxss 或页面的 wxss 中使用了标签名选择器(或一些其他特殊选择器)来直接指定样式,这些选择器会影响到页面和全部组件。通常情况下这是不推荐的做法。通过 styleIsolation 指定样式隔离。 Comp.js Component ({ options: { styleIsolation: "isolated", }, }); styleIsolation 支持以下取值: isolated 表示启用样式隔离,在自定义组件内外,使用 class 指定的样式将不会相互影响(一般情况下的默认值); apply-shared 表示页面 wxss 样式将影响到自定义组件,但自定义组件 wxss 中指定的样式不会影响页面; shared 表示页面 wxss 样式将影响到自定义组件,自定义组件 wxss 中指定的样式也会影响页面和其他设置了 apply-shared 或 shared 的自定义组件。(这个选项在插件中不可用。) 如果这个 Component 构造器用于构造页面 ,则默认值为 shared ,且还有以下选项可用: page-isolated 表示在这个页面禁用 app.wxss ,同时,页面的 wxss 不会影响到其他自定义组件; page-apply-shared 表示在这个页面禁用 app.wxss ,同时,页面 wxss 样式不会影响到其他自定义组件,但设为 shared 的自定义组件会影响到页面; page-shared 表示在这个页面禁用 app.wxss ,同时,页面 wxss 样式会影响到其他设为 apply-shared 或 shared 的自定义组件,也会受到设为 shared 的自定义组件的影响。 也可以在页面或自定义组件的 json 文件中配置 styleIsolation (这样就不需在 js 文件的 options 中再配置)。例如: Comp.json { "styleIsolation": "isolated" } 在 Component 的 options 中设置 addGlobalClass: true。 这个选项等价于设置 styleIsolation: apply-shared ,但设置了 styleIsolation 选项后这个选项会失效。 外部样式类 有时,组件希望接受外部传入的样式类。此时可以在 Component 中用 externalClasses 定义段定义若干个外部样式类。
阅读全文