【微信小程序】自定义组件(一)

news2025/7/10 20:45:13

🎁写在前面:

观众老爷们好呀,这里是前端小刘不怕牛牛频道,小程序系列文章又更新了呀。

今天牛牛带来的是微信小程序的自定义组件入门知识,赶紧拿起小本本做笔记呀!

文章目录

    • 一,创建和引用
      • 1.1 介绍
      • 1.2 创建自定义组件
      • 1.3 自定义组件引用
      • 1.4 组件结构
    • 二,自定义组件模板和样式
      • 2.1 组件模板
      • 2.2 组件样式

一,创建和引用


1.1 介绍

自定义组件,就是开发者将页面的某个功能模块抽象化并提取出来的代码块,支持复用,减少一定的代码量。

有了自定义组件,我们就可以将页面复杂的模块分解成几个低耦合的模块。低耦合就是说模块间的关联程度低,避免了过度依赖,利于代码维护等等。当多个页面需要一样的功能模块时,我们还可以封装一个自定义组件,只需要在各页面使用该组件即可。这样代码量是不是一下子减少好多,相当的nice。

1.2 创建自定义组件

自定义组件的创建,类似于页面的创建,也是由jsonwxmlwxssjs四个类型的文件组成

创建有以下两个步骤:

  1. 在项目的根目录下,创建一个components文件夹,用来存放我们的自定义组件代码
    伙伴们是不是觉得跟Vue的组件定义有点像,不过注意的是,vue定义组件只需要vue一个文件即可,而小程序的自定义组件一般来说可不止。
  2. components文件夹下创建一个自定义组件名字的空文件夹,鼠标移至新文件夹上方并右键,再次输入名字,按下回车,开发者工具就会帮你自动生成需要的四个类型的文件
    在这里插入图片描述

一个最简单的自定义组件我们就创建完成啦。

注意:

自定义组件文件夹下需要在json文件中将component设置为true,完成自定义组件声明才可使用。

{
	"component" : true
}

当然,在上面使用的快捷创建自定义组件中,开发者工具已经默认帮你把这一段写好了。

1.3 自定义组件引用

我们先来讲讲它的引用,自定义组件的引用也分为全局引用和局部引用,区别和用法如下。

  • 局部引用: 顾名思义,该组件只有在当前被引用的页面内使用 ,设置方式即在页面的json配置文件中配置usingComponents字段设置一个键值对,key为自定义组件名字,value则是组件定义的路径。需要注意的是,key的值就是该组件的标签名,如<test/>,示例如下所示。

    {
    	"usingComponents" : {
    		"test" : '/components/test/test'
    	}
    }
    

    这时候我们就可以在页面的wxml文件中使用组件啦

    因为 WXML 节点标签名只能是小写字母、中划线和下划线的组合,所以自定义组件的标签名也只能包含这些字符。

  • 全局引用: 就是该组件在所有小程序页面都可以被使用,设置方式差不多,我们直接在app.json全局配置文件中对usingComponents字段设置组件的键值对,与上述一致。

    "usingComponents" : {
    	"test" : '/components/test/test'
    }
    

    tip: 该字段与window同级

如何选择:

当一个组件在需要在多个页面中使用,我们建议使用全局引用,而对于不常用的组件,只在特定页面使用,我们就用局部引用。

1.4 组件结构

我们来简单了解一下各文件的作用

  • wxmlwxss文件负责组件的渲染层

  • 组件的js文件,调用的是Component()函数,负责组件的逻辑层,需要注意的是,组件的事件处理函数需要定义到methods节点,与vue十分相似

  • 组件的json文件,对组件的某些属性进行配置,如component,必须声明为true才可使用。注意,自定义组件也是也可以使用自定义组件的,和页面的引用一样,只需在配置文件进行配置即可。

二,自定义组件模板和样式


2.1 组件模板

组件模板中可以提供一个<slot>节点,作为插入标识位置,这时候当我们的页面引用组件的时候,可以提供一个子节点,插入到<slot>中,示例如下:

  • 组件模板
    在这里插入图片描述

  • 页面
    在这里插入图片描述
    当你有多个slot节点插入时,需要对slotname进行区分

    <slot name='a'></slot>
    <!-- 页面-->
    <test>
    	<view slot='a'></view>
    </test>
    

2.2 组件样式

注意:

  • 组件和引用组件的页面不使用id选择器、属性选择器、标签选择器,请改用class选择器
  • 组件和引用组件的页面中使用后代选择器(.a .b)在一些极端情况下会有非预期的表现,如遇,请避免使用。
  • 子元素选择器(.a>.b)只能用于view组件与其子节点之间
  • fontcolor可以从组件外继承到组件内部
  • 如果你想给组件所在节点添加默认样式,可以使用组件的:host选择器

组件样式特性:

  • 组件样式隔离,对于组件内部设定的样式,不对会组件外部的UI结构造成任何影响,而同理,组件外部的样式也不会对组件内部有影响,除了上文提到fontcolco的样式继承。

  • 需要注意的是,组件样式隔离只对class选择器有作用,对其他选择器,没有作用。

修改组件样式隔离选项:

  • 我们可以在组件的json文件中新增一个配置,即:
    styleIsolation :'isolated'
    
    当值为isolated,则为开启样式隔离
    若为apply-shared,页面的样式可以影响到组件,但是组件不可影响组件外的样式。
    若为shared,则为双向影响。

今天的小程序文章到这里就结束啦,如果觉得对您有帮助的话,可以关注牛牛接下来的文章

感谢您的支持,您的支持是我们创作的最大动力!!!
最后祝小伙伴们中秋节快乐呀!!!

债见~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/406426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若依数据分页功能的实现

目录 一、问题引出 二、原理分析&#xff1a; ①前端部分&#xff1a; ②后端部分&#xff1a; 三、总结 一、问题引出 我们可以注意到若依界面中处理大量数据时&#xff0c;一个页面展示不过来时&#xff0c;会采纳多页处理的方法。 此时我们拿若依里边的系统管理中的日志…

Umi4 从零开始实现动态路由、动态菜单

Umi4 从零开始实现动态路由、动态菜单&#x1f355; 前言&#x1f354; 前期准备&#x1f4c3; 数据表&#x1f917; Mock数据&#x1f517; 定义类型&#x1f388; 开始&#x1f383; 获取路由信息&#x1f9f5; patchRoutes({ routes, routeComponents})&#x1f4f8; 生成动…

第二十一篇 vue组件引入使用

这篇内容是关于组件在Vue中的引入和使用&#xff1b;什么是组件以及做组件化的开发&#xff0c;在Vue中&#xff0c;组件是构成页面中独立结构单元&#xff0c;能够减少重复代码的编写&#xff0c;提高开发效率&#xff0c;降低代码耦合度&#xff0c;便于维护和管理&#xff1…

前端请求中body和query传参

前端发送请求最常用的是get请求和post请求 get请求只能传query参数&#xff0c;query参数都是拼接在请求地址上的。 post可以传body和query两种形式的参数。 get请求在url中传送的参数是有长度限制的&#xff0c;而post没有限制。 get比post更不安全&#xff0c;因为参数直接…

十、Echart图表 之 dataZoom区域缩放 基本使用与配置大全

&#x1f353; 作者主页&#xff1a;&#x1f496;仙女不下凡&#x1f496; &#x1f353; 前言介绍&#xff1a;以下&#x1f447;内容是我个人对于该技术的总结&#xff0c;如有不足与错误敬请指正&#xff01; &#x1f353;Echart官网地址&#xff1a;https://echarts.ap…

layui-icon各种常用动态图标

<buttonid"btnPrintDetail"class"<br/>layui-btnicon-btn"><iclass"<br/>layui-icon">&#xe66d;</i>明细打印</button> icon很多&#xff0c;选择起来纷繁复杂&#xff0c;罗列一点常用的&#xff0c;用…

uniapp scroll-view基础用法

前言 在uniapp日常开发的过程中经常会有局部滚动的需求&#xff0c;而scroll-view组件正好可以满足这一需求。需注意在webview渲染的页面中&#xff0c;区域滚动的性能不及页面滚动。 纵向滚动 将scroll-view组件中的属性scroll-y设定为true开启纵向滚动功能&#xff0c;给scr…

【vue2】axios请求与axios拦截器的使用详解

&#x1f973;博 主&#xff1a;初映CY的前说(前端领域) &#x1f31e;个人信条&#xff1a;想要变成得到&#xff0c;中间还有做到&#xff01; &#x1f918;本文核心&#xff1a;当我们在路由跳转前与后我们可实现触发的操作 【前言】ajax是一种在javaScript代码中发请…

SAP ABAP——SAP简介(三)【S/4 HANA前端显示界面】

&#x1f482;作者简介&#xff1a; Thunder Wang&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后端的开发语言AB…

Ubuntu18.04安装Nvidia驱动【全网不坑,超全步骤】(亲测~)

Ubuntu18.04安装Nvidia驱动【全网不坑&#xff0c;超全步骤】亲测&#xff5e;为了方便以后回忆以及给像我一样的菜鸡提供思路&#xff0c;给出具体的步骤&#xff1a;No.1 查看自己的电脑显卡型号&#xff08;已知麻烦自动略过&#xff09;No.2 下载电脑对应的Nvidia版本驱动N…

Vue脚手架报错:‘v-model‘ directives require no argument 解决方案

1、报错&#xff1a; v-model directives require no argument 截图 2、原因&#xff1a; ESLint对vetur进行了eslint检查 3、解决方法 ① 修改模板中使用v-show 将 v-model:show"show" 改为 v-model"show" ② vetur插件的作者给出了解决办法 我们可…

【一起学Rust | 框架篇 | Viz框架】轻量级 Web 框架——Viz

文章目录前言特点一、Hello Viz1. 创建项目2. 引入viz3. 运行Hello Viz4. 运行结果注意二、Hello Viz代码详解导入组件处理请求主函数三、常见用法简单的处理程序实现处理程序特质路由传参链式组合程序中间件参数接收器路由一个简单的路由CRUD操作资源总结前言 Viz&#xff0c…

TS的类型声明

目录 1.TS把JS变成了静态类型的语言&#xff0c;可以给变量指定类型 2.JS中的函数是不考虑参数的类型和个数的&#xff0c;但是TS会考虑函数的参数类型和个数&#xff0c;且要规定返回值类型。 3.常见的TS类型 1.可以直接使用字面量进行类型声明 字面量声明的应用:可以使用…

讲解HTML和CSS(超详细)

讲解HTML和CSS&#xff08;超详细&#xff09;一、初始HTML和CSS1.html的发展历史2.html3.css二、HTML1.基本框架2.HTML5常用的标签和属性三、CSS1.css的使用2.css选择器总结提示&#xff1a;以下是我的一些经验之谈&#xff0c;下面案例可供参考 一、初始HTML和CSS 1.html的…

手撕前端面试题【javascript~ 总成绩排名、子字符串频次统计、继承、判断斐波那契数组等】

前端JavaScript面试题&#x1f353;&#x1f353;总成绩排名&#x1f353;&#x1f353;子字符串频次&#x1f353;&#x1f353;继承&#x1f353;&#x1f353;判断斐波那契数组&#x1f353;&#x1f353;js中哪些操作会造成内存泄漏?html页面的骨架&#xff0c;相当于人的…

Vue中的过滤器(filter)

一、Vue中的过滤器是什么 过滤器&#xff08;filter&#xff09;是输送介质管道上不可缺少的一种装置,大白话&#xff0c;就是把一些不必要的东西过滤掉,过滤器实质不改变原始数据&#xff0c;只是对数据进行加工处理后返回过滤后的数据再进行调用处理&#xff0c;我们也可以理…

Java利用fastjson解析复杂嵌套json字符串、json数组;json字符串转Java对象,json数组转list数组

文章目录前言一、什么是JSON对象&#xff1f;二、什么是json字符串&#xff1f;二、什么是JSON数组&#xff1f;三、复杂、嵌套的json字符串四、json字符串转换4.1 简单json字符串转换为java对象4.2 简单json字符串数组转换为list数组4.3 复杂嵌套json字符串数组转换为Java对象…

十大常用web前端UI组件库,赶紧收藏

今天主要介绍web前端常用的UI库&#xff0c;这些网站基本都是背靠互联网大厂&#xff0c;值得web前端开发者收藏&#xff0c;当然还是要多多学习使用。 Vant 一款有赞出品轻量、可靠的的移动UI组件库&#xff0c;目前支持 Vue2、Vue3、React&#xff0c;微信和支付宝小程序&a…

Vue基础语法知识(自用,完整版)

Vue基础语法知识 1、想让Vue工作&#xff0c;就必须创建一个Vue实例&#xff0c;且要传入一个配置对象 2、root容器里的代码依然符合html规范&#xff0c;只不过混入了一些特殊的Vue语法 3、root容器中里的代码被称为【Vue模板】 4、Vue实例和容器是一一对应的 5、真实开发…

手机+PC电脑如何使用油猴插件和油猴脚本?

一、移动端使用油猴脚本 移动端可以不使用油猴插件&#xff0c;就可直接安装脚本&#xff08;需要浏览器支持&#xff09;&#xff0c;这样天然支持油猴脚本的移动浏览器还是很多&#xff0c;比如&#xff1a;书签地球、X浏览去、M浏览器等&#xff0c;但是各个浏览器的支持情…