成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

微信小程序wepy框架詳解(一)

maochunguang / 1471人閱讀

摘要:微信小程序的一種框架簡(jiǎn)述由于項(xiàng)目原因,我于兩個(gè)多月前轉(zhuǎn)到微信端用進(jìn)行開(kāi)發(fā)。事件發(fā)起組件的所有祖先組件會(huì)依次接收到事件。注意,如果用了自定義事件,則中對(duì)應(yīng)的監(jiān)聽(tīng)函數(shù)不會(huì)再執(zhí)行。

wepy——微信小程序的一種框架 簡(jiǎn)述

由于項(xiàng)目原因,我于兩個(gè)多月前轉(zhuǎn)到微信端用wepy進(jìn)行開(kāi)發(fā)。
wepy開(kāi)發(fā)風(fēng)格接近于 Vue.js,支持組件 Props 傳值,自定義事件、組件分布式復(fù)用Mixin、Redux、計(jì)算屬性函數(shù)computed、模板內(nèi)容分發(fā)slot等等,支持ES6/7部分語(yǔ)法以及l(fā)ess/sass等樣式語(yǔ)言。

wepy官方文檔地址:wepy官方文檔

wepy的基本用法我就不再贅述,請(qǐng)自行看官方文檔。
值得一提的是初學(xué)者記得在微信開(kāi)發(fā)者工具的項(xiàng)目設(shè)置中如下配置,否則很可能項(xiàng)目報(bào)錯(cuò)無(wú)法運(yùn)行

一、生命周期 應(yīng)用的生命周期
屬性 描述 如何觸發(fā)
onLaunch 監(jiān)聽(tīng)小程序初始化 當(dāng)小程序初始化完成后觸發(fā),可理解為清空后臺(tái)運(yùn)行程序后打開(kāi)小程序時(shí)觸發(fā)
onShow 監(jiān)聽(tīng)小程序顯示 當(dāng)小程序初始化后,或從后臺(tái)切換到前臺(tái)后觸發(fā)(后臺(tái)切換到前臺(tái)后面會(huì)詳細(xì)說(shuō)明)
onHide 監(jiān)聽(tīng)小程序隱藏 當(dāng)小程序從前臺(tái)切換到后臺(tái)時(shí)(前臺(tái)切換到后臺(tái)后面會(huì)詳細(xì)說(shuō)明)
正常觸發(fā)順序

1 onLaunch: 用戶打開(kāi)小程序
2 onShow:初始化結(jié)束或用戶曾在后臺(tái)運(yùn)行小程序,現(xiàn)在又打開(kāi)了小程序
3 onHide:用戶切換到其他應(yīng)用(小程序在后臺(tái)運(yùn)行)

頁(yè)面的生命周期
屬性 描述 如何觸發(fā)
onLoad 監(jiān)聽(tīng)頁(yè)面加載 當(dāng)某頁(yè)面首次加載時(shí)觸發(fā),每個(gè)頁(yè)面只觸發(fā)一次
onReady 監(jiān)聽(tīng)頁(yè)面初次渲染完成 當(dāng)頁(yè)面加載并渲染完成后觸發(fā),每個(gè)頁(yè)面觸發(fā)一次
onShow 監(jiān)聽(tīng)頁(yè)面顯示 一般在onLoad執(zhí)行后執(zhí)行,可以執(zhí)行多次,當(dāng)前頁(yè)面一旦顯示便會(huì)執(zhí)行
onHide 監(jiān)聽(tīng)頁(yè)面隱藏 當(dāng)小程序變?yōu)楹笈_(tái)運(yùn)行或跳轉(zhuǎn)到其他頁(yè)面時(shí)觸發(fā)
onUnload 監(jiān)聽(tīng)頁(yè)面卸載 當(dāng)小程序從前臺(tái)切換到后臺(tái)時(shí)(前臺(tái)切換到后臺(tái)后面會(huì)詳細(xì)說(shuō)明)
正常觸發(fā)順序

1 onLoad: 用戶初次打開(kāi)某頁(yè)面,每個(gè)頁(yè)面只觸發(fā)一次
2 onShow:頁(yè)面一旦顯示即觸發(fā),包括用戶來(lái)回切換頁(yè)面
3 onReady:頁(yè)面初次渲染完成,每個(gè)頁(yè)面只觸發(fā)一次
4 onHide:小程序被切換到后臺(tái)運(yùn)行或者用戶切換到其他頁(yè)面
5 onUnload: 當(dāng)使用重定向方法wx.redirectTo(OBJECT)或關(guān)閉當(dāng)前頁(yè)返回上一頁(yè)wx.navigateBack(),觸發(fā)onUnload。

二、事件傳值

Template:

  Plus

JavaScript:

 goodsChange(data, status) {
      // doSomething
      }

注意 事件函數(shù)要寫(xiě)在methods里

三、Watcher監(jiān)聽(tīng)器

example:

watch = {
  someName(newValue, oldValue) {
    // doSomething
  }
}

someName為被監(jiān)聽(tīng)的某數(shù)據(jù)

newValue為新值,oldValue為舊值

someName一旦變化即觸發(fā)該函數(shù)

監(jiān)聽(tīng)函數(shù)需要寫(xiě)在watch屬性里

四、組件通信方法

組件有三種通信方法

$broadcast:由父組件發(fā)起,所有子組件都會(huì)收到此廣播事件,除非事件被手動(dòng)取消。
如果Page_Index組件發(fā)起一個(gè)$broadcast事件,那么按先后順序采用廣度優(yōu)先遍歷依次接收到該事件的組件為:
ComA、ComB、ComC、ComD、ComE、ComF、ComG、ComH

$emit:與$broadcast正好相反,事件是向上傳遞的。
事件發(fā)起組件的所有祖先組件會(huì)依次接收到$emit事件。
如下圖所示,如果組件ComE發(fā)起一個(gè)$emit事件,那么接收到事件的先后順序?yàn)椋航M件ComA、頁(yè)面Page_Index。

$invoke:是一個(gè)頁(yè)面或組件對(duì)另一個(gè)組件中的方法的直接調(diào)用。
通過(guò)傳入組件相對(duì)路徑找到相應(yīng)的組件,然后再調(diào)用其方法。

比如Page_Index組件中想要調(diào)用ComA組件中的一個(gè)名為someMethod方法的事件

this.$invoke("ComA", "someMethodInComA", "someArguments");

再比如再組件ComA中調(diào)用組件ComG的某個(gè)方法

this.$invoke("./../ComB/ComG", "someMethodInComG", "someArguments")

注意路徑為相對(duì)路徑

組件有兩種通信方式

默認(rèn)通信方式

exapmle using $emit:

super

// events對(duì)象中所聲明的函數(shù)為用于監(jiān)聽(tīng)組件之間的通信與交互事件的事件處理函數(shù)
events = {
"some-event": (p1, p2, p3, p4,  $event) => {
 console.log($event) // 打出觸發(fā)some-event的事件對(duì)象
 console.log(p1, p2, p3, p4)
  }
};

sub

methods = {
    selectType(data) { // 子組件中的某點(diǎn)擊事件
    this.$emit("some-event", 1, 2, 3, 4) // 向父組件的some-event監(jiān)聽(tīng)事件發(fā)送參數(shù)
  }
};

自定義通信方式(1.48版本新增方式,注意兼容問(wèn)題)

example:

@customEvent.user="myFn"

@表示時(shí)間修飾符

customEvent表示事件名稱

.user表示事件后綴,共有三種

@tap.default: 綁定小程序冒泡型事件,.default后綴可省略不寫(xiě)
可以理解為普通的原生冒泡機(jī)制
example:


 
   
        this is a Concentric circle
   
 
methods = {
 centerView(data) {
   console.log("center-view has benn taped")
 },
 middleView() {
   console.log("middle-view has been taped")
 },
 wrapperView() {
   console.log("wrapper-view has been taped")
 }
  };

輸出是這樣的

@tap.stop:綁定小程序捕獲型事件
可以理解為原生js的阻止冒泡機(jī)制e.stopPropagation()/e.cancelBubble = true
example:



  
       this is a Concentric circle
  

methods = {
 centerView(data) {
   console.log("center-view has benn taped")
 },
 middleView() {
   console.log("middle-view has been taped")
 },
 wrapperView() {
   console.log("wrapper-view has been taped")
 }
  };

輸出是這樣的

可以理解為tap.stop是在tap.default函數(shù)末尾添加了以下代碼

e.stopPropagation() // w3c規(guī)定的阻止冒泡機(jī)制
e.cancelBubble = true // ie的阻止冒泡機(jī)制

@eventName.user:綁定用戶自定義組件事件,通過(guò)$emit觸發(fā)。
注意,如果用了自定義事件,則events中對(duì)應(yīng)的監(jiān)聽(tīng)函數(shù)不會(huì)再執(zhí)行。
example:

In parentNode

 
 
methods = {
   selectTypeInParentNode(data) {
   console.log("in methods")
   console.log(data)
  // do something
 }
}
events = {
  "change": (data) => {
   console.log("in events")
   console.log(data)
 }
}

In childNode

      
methods = {
   selectTypeInChildNode(data) {
       this.$emit("change", data) 
       // 會(huì)調(diào)用父組件中的組件的@change屬性所指的事件函數(shù)
       // 而非調(diào)用父組件events里面的監(jiān)聽(tīng)事件
 }
}

自定義方式輸出

兩種方式的區(qū)別

默認(rèn)冒泡方式

in parentNode

  
events = {
    "change": (data) => {
    console.log("in events")
    console.log(data)
}
    }

in childNode

 
selectType(data) {
    console.log("center-view has benn taped")
    this.$emit("change", data)
  },

printf

自定義方式可以看上面詳細(xì)說(shuō)明

printf

五、組件化和Props傳值

此處以動(dòng)態(tài)傳值為例

父組件中

 
      
 
 methods = {
  async goodsSelectChange(data, status) { // 傳遞給子組件的函數(shù)
   // doSomething
  },

子組件中

   +
props = { // 接收父組件傳遞下來(lái)的數(shù)據(jù)
 parentToChildData: {}
};
methods = {
 goodsChange(data, status) {
   this.$emit("parentToChildFunction", data, status) // $emit為向上傳值,具體可參考官方文檔的組件傳值
   // 給父組件的parentToChildFunction屬性的函數(shù)(goodsSelectChange)傳遞參數(shù)(data,status)
 }
};

本文參考

WePY 讓小程序支持組件化開(kāi)發(fā)的框架

WePY 生命周期

基于微信小程序的在線商城

謝謝
本文章內(nèi)容有任何問(wèn)題請(qǐng)留言提問(wèn),若有錯(cuò)誤歡迎糾正
本人郵箱 xbc18304999858@gmail.com





文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/98846.html

相關(guān)文章

  • 信小程序學(xué)習(xí)與wepy框架的使用詳解

    摘要:,至此咱們的微信小程序的簡(jiǎn)單使用及了解算是分享完了,畢竟個(gè)人也是道行有限,沒(méi)有鉆研太深,這些只是本人在實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中用到和總結(jié)的經(jīng)驗(yàn),有太多不足或不對(duì)的地方,希望大家多多給予指出與改正,咱們一起來(lái)共同學(xué)習(xí)與進(jìn)步 微信小程序是一種不需要下載安裝即可使用的應(yīng)用,在國(guó)內(nèi)它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因?yàn)樗膫涫軞g迎度以及越來(lái)越被企業(yè)所重視,也就形成了咱們開(kāi)...

    sf190404 評(píng)論0 收藏0
  • 信小程序學(xué)習(xí)與wepy框架的使用詳解

    摘要:,至此咱們的微信小程序的簡(jiǎn)單使用及了解算是分享完了,畢竟個(gè)人也是道行有限,沒(méi)有鉆研太深,這些只是本人在實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中用到和總結(jié)的經(jīng)驗(yàn),有太多不足或不對(duì)的地方,希望大家多多給予指出與改正,咱們一起來(lái)共同學(xué)習(xí)與進(jìn)步 微信小程序是一種不需要下載安裝即可使用的應(yīng)用,在國(guó)內(nèi)它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因?yàn)樗膫涫軞g迎度以及越來(lái)越被企業(yè)所重視,也就形成了咱們開(kāi)...

    stormjun 評(píng)論0 收藏0
  • 信小程序學(xué)習(xí)與wepy框架的使用詳解

    摘要:,至此咱們的微信小程序的簡(jiǎn)單使用及了解算是分享完了,畢竟個(gè)人也是道行有限,沒(méi)有鉆研太深,這些只是本人在實(shí)際項(xiàng)目開(kāi)發(fā)過(guò)程中用到和總結(jié)的經(jīng)驗(yàn),有太多不足或不對(duì)的地方,希望大家多多給予指出與改正,咱們一起來(lái)共同學(xué)習(xí)與進(jìn)步 微信小程序是一種不需要下載安裝即可使用的應(yīng)用,在國(guó)內(nèi)它在企業(yè)推廣中的受歡迎度以及就這兩年的使用及普及熱度,然而就是因?yàn)樗膫涫軞g迎度以及越來(lái)越被企業(yè)所重視,也就形成了咱們開(kāi)...

    xiao7cn 評(píng)論0 收藏0
  • 信小程序wepy框架學(xué)習(xí)和使用心得

    摘要:四最后一點(diǎn)點(diǎn)感悟本文總結(jié)的比較淺顯很多地方說(shuō)的也不是太詳細(xì)歡迎大家留言一起交流探討堅(jiān)持學(xué)習(xí)不斷探索總結(jié)路漫漫其修遠(yuǎn)兮吾將上下而求索參考資料官方文檔微信小程序官網(wǎng)開(kāi)發(fā)文檔官方開(kāi)發(fā)文檔 一、微信小程序wepy框架簡(jiǎn)介: 微信小程序WePY框架是騰訊官方推出來(lái)的框架,類似的框架還有美團(tuán)的mpvue,京東的Taro等; 目前公司開(kāi)發(fā)小程序主要用到的是微信原生方法和官方的wepy框架; wepy...

    Baaaan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<