溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

微信小程序template模板與component組件的區(qū)別是什么

發(fā)布時間:2021-02-04 16:18:12 來源:億速云 閱讀:603 作者:小新 欄目:web開發(fā)

這篇文章將為大家詳細講解有關微信小程序template模板與component組件的區(qū)別是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

前言:

除了component,微信小程序中還有另一種組件化你的方式template模板,這兩者之間的區(qū)別是,template主要是展示,方法則需要在調(diào)用的頁面中定義。而component組件則有自己的業(yè)務邏輯,可以看做一個獨立的page頁面。簡單來說,如果只是展示,使用template就足夠了,如果涉及到的業(yè)務邏輯交互比較多,那就最好使用component組件了。

一. template模板:

1. 模板創(chuàng)建:

建議單獨創(chuàng)建template目錄,在template目錄中創(chuàng)建管理模板文件。

由于模板只有wxml、wxss文件,而且小程序開發(fā)工具并不支持快速創(chuàng)建模板,因此就需要直接創(chuàng)建wxml、wxss文件了,一個template的模板文件和樣式文件只需要命名相同即可。如果模板較多,建議在template目錄下再創(chuàng)建子目錄,存放單獨的模板。

微信小程序template模板與component組件的區(qū)別是什么

2. 模板文件:

template.wxml文件中能寫多個模板,用name區(qū)分:

<template name="demo">
<view class='tempDemo'>
 <text class='name'>FirstName: {{firstName}}, LastName: {{lastName}}</text>
 <text class='fr' bindtap="clickMe" data-name="{{'Hello! I am '+firstName+' '+LastName+'!'}}"> clcikMe </text>
</view>
</template>

3. 樣式文件:

模板擁有自己的樣式文件(用戶自定義)。

/* templates/demo/index.wxss */
 .tempDemo{
 width:100%;
 }
 view.tempDemo .name{color:darkorange}

4. 頁面引用:

page.wxml

<!--導入模板-->
<import src="../../templates/demo/index.wxml" />
<!--嵌入模板-->
<view>
 <text>嵌入模板</text>
 <template is="demo" data="{{...staffA}}"></template><!--傳入?yún)?shù),必須是對象-->
 <template is="demo" data="{{...staffB}}"></template><!--傳入?yún)?shù),必須是對象-->
 <template is="demo" data="{{...staffC}}"></template><!--傳入?yún)?shù),必須是對象-->
</view>

page.wxss

@import "../../templates/demo/index.wxss" /*引入template樣式*/

page.js

Page({
 /**
  * 頁面的初始數(shù)據(jù)
  */
 data: {
  staffA: { firstName: 'Hulk', lastName: 'Hu' },
  staffB: { firstName: 'Shang', lastName: 'You' },
  staffC: { firstName: 'Gideon', lastName: 'Lin' }
 },
 clickMe(e) {
  wx.showToast({ title: e.currentTarget.dataset.name, icon: "none", duration: 100000 })
 }
 ......
})

備注:

一個模板文件中可以有多個template,每個template均需定義name進行區(qū)分,頁面調(diào)用的時候也是以name指向?qū)膖emplate;

template模板沒有配置文件(.json)和業(yè)務邏輯文件(.js),所以template模板中的變量引用和業(yè)務邏輯事件都需要在引用頁面的js文件中進行定義;

template模板支持獨立樣式,需要在引用頁面的樣式文件中進行導入;

頁面應用template模板需要先導入模板 <import src="../../templates/demo/index.wxml" /> ,然后再嵌入模板<template is="demo" data="{{...staffA}}"></template>

二. Component組件:

1. 組件創(chuàng)建:

新建component目錄——創(chuàng)建子目錄——新建Component;

微信小程序template模板與component組件的區(qū)別是什么微信小程序template模板與component組件的區(qū)別是什么

2. 組件編寫:

新建的component組件也由4個文件構(gòu)成,與page類似,但是js文件和json文件與頁面不同。

js代碼:

// components/demo/index.js
Component({
 /**
  * 組件的屬性列表
  */
 properties: {
  name: {
   type: String,
   value: ''
  }
 },

 /**
  * 組件的初始數(shù)據(jù)
  */
 data: {
  type: "組件"
 },

 /**
  * 組件的方法列表
  */
 methods: {
  click: function () {
   console.log("component!");
  }
 }
})

json配置文件:

{
  "component": true,
  "usingComponents": {}
}

3. 組件引用:

頁面中引用組件需要在json配置文件中進行配置,代碼如下:

 {
  "navigationBarTitleText": "模板demo",
  "usingComponents": {
   "demo": "../../components/demo/index" 
  }
 }

然后在模板文件中進行使用就可以了,其中name的值為json配置文件中usingComponents的鍵值:

<demo name="comp" />
<!--使用demo組件,并傳入值為“comp”的name屬性(參數(shù))-->

這樣就可以了。

PS:組件中不會自動引用公共樣式,如果需要則需在樣式文件中引入:

@import "../../app.wxss";

關于“微信小程序template模板與component組件的區(qū)別是什么”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI