小程序模板和组件的使用和区别

标签:程序,模板,组件,使用,区别 发布时间:2019年06月14日 点击6

不得不说微信小程序的官方文档照旧有许多坑啊(⊙﹏⊙)

使用模板和组件的目的:实当代码复用

template(模板)

相对于component而言,template更加轻量级,它的功能有限,重要是用于展示。模板只有两个以.wxml.wxss结尾的文件

定义模板

新建一个与pages同级的文件夹 => templates,在templates下创建templateItem文件夹,然后在这个文件夹里创建同名的.wxml.wxss的文件

使用name属性,作为模板的名字,然后在<template/> 内定义代码片段,template必须要写

templateItem.wxml :

<template name="msgItem">    
    <view class="content">我是模板的内容</view>
</template>复制代码

可以在templateItem.wxss中添加一些悦目的样式

.content {   
    width: 100%;    
    height: 400rpx;   
    background-color: yellowgreen;    
    display: flex;    
    justify-content: center;    
    align-items: center;
}复制代码

接下来就可以在页面中使用模板了

使用模板

要使用模板,首先得在要使用的页面引入模板临时会话,使用import标签导入,使用is属性,声明必要使用的模板,比如在index.wxml中使用:

index.wxml :

<!-- index.wxml -->
<import src="../../templates/templateItem/templateItem.wxml" />
<view>    
    <template is="msgItem" />
</view>复制代码

细致: import标签不能省略 /,不然会报错

如今,模板的内容可以表现在页面上了,但是模板的样式却没有生效。想要让样式生效,必须在index.wxss 中引入模板的样式文件:

/** index.wxss **/
/** 假如下面还有样式 这里的分号不能省略 **/
@import "../../templates/templateItem/templateItem.wxss";复制代码

如今,模板的颜色也出来啦~

                            


到这里,一个最简单的模板就完成了

模板传值

模板除了可以写代码片段外,is属性可以使用Mustache语法,来动态决定详细必要渲染哪个模板

index.js中的data中添加一些数据,

// index.js?
//获取应用实例
cosnt app = getApp()?;
Page({    
    data: {    
        hero: {  
             name: '盖伦',
             profession: '兵士',
             skill: '得玛西亚公理' 
       }
    }
})复制代码

修改一下模板:

<template name="msgItem">
    <view class="content">
        <view class="content">我是模板的内容</view>
        <view>            
            <text>{{ name }}</text>---            
            <text>{{ professios }}</text>---            
            <text>{{ skill }}</text>        
         </view>   
    </view>
</template>复制代码

在模板原理的样式基础上中增长:

flex-direction: column;复制代码

保存并运行,此时,就多了好多内容了(#^.^#)

                                     


模板的作用域

模板拥有本身的作用域,只能使用data 传入的数据以及模板文件中定义的<wxs />模块

component(组件)

从小程序基础库版本 1.6.3 开始德龙驾驶室,小程序支撑简洁的组件化编程。所有自定义组件相干特征都必要基础库版本 1.6.3 或更高。

开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自定义组件在使用时与基础组件特别很是相似。

自定义组件

在pages的同级目录下创建components文件夹

类似于页面,一个自定义组件由json wxml wxss js 4个文件组成。要编写一个自定义组件,首先必要在json文件中进行自定义组件声明(将component字段设为true),使用微信开发者工具百度优化公司,创建component会主动生成。

{    "component": true}复制代码

在组件文件中编写一些看起来很厉害的代码

<!-- 这是自定义组件内部的内容 -->
<view class="herocontainer">    
    <view>姓名:{{ hero8721 }}</view>    
    <view>职业:{{ hero8693fession }}</view>    
    <view>技能:{{ hero.skill }}</view>
</view>复制代码

在自定义组件的js文件中成都人事考试网首页,必要使用 Component 来注册组件,并提供组件的属性定义、内部数据和自定义方法

// 这是自定义组件内部的js文件
Component({    
    properties: {        
        // hero收一个对象        
        hero: Object    
    },    
    data: {   
        //这里是一些组件内部数据   
    },    
methods: {        
    //这里是自定义方法    
}})复制代码

也给它添加一些看起来很厉害的样式

/** 这是自定义组件内部的wxss文件 **/
.herocontainer {    
    width: 750rpx;    
    height: 200rpx;    
    background-color: yellow;    
    color: hotpink;
}复制代码

细致:在组件wxss中不应该使用ID选择器、属性选择器和标签名选择器

自定义组件中,写了wxssjs,使用时无需在页面中导入,只需导入组件即可

使用自定义组件

使用自定义组件前,首先要在要使用的页面的json文件中进行引用声明,此时必要提供每个自定义组件的标签名和对应的自定义组件文件路径

{    
    "usingComponents": { 
      "my-component": "../../components/mycomponent/mycomponent"    
    }
}复制代码

如许,在页面的wxml 中就可以像使用基础组件一样使用自定义组件啦,节点名就是自定义组件的标签名,节点属性就是自定义组件的属性值

<view>    
    <my-component hero="{{hero }}" />
</view>复制代码

黄色部分为组件的内容:

            


自定义组件传值

页面 -----> 组件

组件中通过proprtties写上要接受的值

页面通过属性名称和值的体例传递

上面就是页面传值到组件

组件 -----> 页面

页面中写监听事件

组件中写触发事件

在自定义组件中添加一个事件

<button bindtap="onTap">点击按钮触发事件</button>复制代码

在组件的js文件methods中添加方法,通过this.triggerEvent()给也面传值,在data中定义一个数据用来传给页面

data: { 
    message: '迎接来到好汉联盟'  
},
onTap(){    
    const message = this.data.message    
    this.triggerEvent('myevent',message)
}复制代码

在页面的js中,添加一个与data同级的方法,通过事件对象的e.detail拿到传过来的值

Page({    
    onMyEvent(e){ 
       console.log(e.detail)    
    }
})复制代码

在页面中绑定事件

<my-component hero="{{ hero }}" bindmyevent="onMyEvent" />复制代码

点击按钮之后,控制台会输出组件传过来的值

不出不测就是 ==> 迎接来到好汉联盟

细致坑点

  • 由于wxml节点标签只能是小写字母、中划线和下划线组合,自定义组件也只能是如许

  • 自定义组件也是可以引用自定义组件的,引用方法类似于页面引用自定义组件的体例

  • 自定义组件和页面所在项目根目录名不能以wx-为前缀,否则会报错

总结

  • template 和 components 的共性: 不能单独呈现出来,必须倚赖表现在页面

  • 不同点:template比较轻量级,没有本身的逻辑处理能力,只能来着页面表现值

  • 组件要重量级一些,它有本身的逻辑处理能力

手机网站建设