成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小程序組件化

Allen / 798人閱讀

摘要:微信小程序封裝了一些基礎(chǔ)的組件,使用起來很方便,但定制化程度不高,日常開發(fā)中難免有一些功能想要做成組件,在其他地方復(fù)用。在網(wǎng)上找了好久,有很多小程序模塊化框架,比如,,但是都不敢用。今天看到一哥們寫的小程序自定義公眾組件,感覺簡單靠譜。

微信小程序封裝了一些基礎(chǔ)的組件,使用起來很方便,但定制化程度不高,日常開發(fā)中難免有一些功能想要做成組件,在其他地方復(fù)用。在網(wǎng)上找了好久,有很多小程序模塊化框架,比如labrador,wx-component,但是都不敢用。一方面這些框架都比較年輕,不敢輕易用到項(xiàng)目中;另一方面改了微信原先的page,app構(gòu)造函數(shù),不確定因素太多,指不定哪天出什么亂子。
今天看到一哥們寫的小程序自定義公眾組件,感覺簡單靠譜。

其核心思想:

1、組件頁面template,依賴組件的頁面
2、@import組件樣式
3、組件邏輯:
在組件構(gòu)造函數(shù)中獲取到當(dāng)前頁面對象:

    let pages = getCurrentPages()
    let curPage = pages[pages.length - 1]

然后分別將組件的事件,方法復(fù)制到curPage中:

Object.assign(curPage,_comData,_comMethod)

設(shè)置組件數(shù)據(jù):

curPage.setData({_comData})

登陸組件為例:

項(xiàng)目結(jié)構(gòu)
Wechat-APP/
├─app.js
├─app.json
├─app.wxss
├─component/
│ └─login/
│   ├─login.js
│   ├─login.wxml
│   └─login.wxss
├─image/
├─pages/
│ └─index/
└─utils/
login.wxml
  
login.wxss
/* login.wxss */
.__lgpanel_mask{
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100vh;
    background: rgba(0, 0, 0, 0.3);
    display: flex;
    flex-direction: column;
    justify-content: center;
    z-index: 10;
}

.show{
    display: block;
}

.hide{
    display: none;
}

.__lgpanel{
    font-family: "微軟雅黑", "Franklin Gothic Medium", "Arial Narrow", Arial, sans-serif;
    width: 80vw;
    margin: 0 auto;
    background: white;
    border: 2rpx solid #e3e3e3;
    border-radius: 8rpx;
    padding: 20rpx;
}

.__lgpanel_title{
    display: block;
    text-align: center;
    margin: 10rpx;
    padding-bottom: 10rpx;
    border-bottom: 2rpx solid #ff9900;
}

.__lgpanel_username,.__lgpanel_pwd{
    display: flex;
    flex-direction: row;
    justify-content: space-between;
    margin: 40rpx 10rpx;
}

.__lgpanel_username text,.__lgpanel_pwd text{
    flex-shrink: 0;
    width: 30%;
}

.__lgpanel_login{
    display: flex;
    justify-content: space-around;
}
login.js
// 組件數(shù)據(jù)
let _comData = {
    "__lgpanel__.phone":182*****535,
    "__lgpanel__.password":123456,
    "__lgpanel__.isHide":true
}
//組件事件
let _comEvent = {
    __lgpanel_ok:function(){
        console.log("OK")
        this.__lgpanel_hide()
    },
    __lgpanel_cancel:function(){
        console.log("Cancel")
        this.__lgpanel_hide()
    }
}
//方法
let _comMethod = {
    __lgpanel_show:function(){
        this.setData({"__lgpanel__.isHide":false})
    },
    __lgpanel_hide:function(){
        this.setData({"__lgpanel__.isHide":true})
    }
}
//組件類
function LoginPanel(){
    let pages = getCurrentPages()
    let curPage = pages[pages.length - 1]
    //組件中調(diào)用頁面
    this._page = curPage
    Object.assign(curPage, _comEvent, _comMethod)
    curPage.setData(_comData)

    curPage.loginPanel = this
    return this
}

export { LoginPanel }
在index頁面中使用login組件

1.index.wxml中引入login組件模板



  
  

2.index.wxss中引入組件樣式

@import "../../components/login/login.wxss";

3.index.js中注冊組件

import { LoginPanel } from "../../components/login/login"
Page({
    data: {
    },
    onLoad: function () {
        new LoginPanel()  //注冊組件
    },
    login: function () {
        this.__lgpanel_show();    //使用組件方法
    }
})

最終結(jié)果:

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/91386.html

相關(guān)文章

  • 業(yè)內(nèi)首個(gè) React Native轉(zhuǎn)微信程序引擎 Alita 正式發(fā)布

    摘要:得益于運(yùn)行階段處理邏輯的設(shè)計(jì),支持將使用的應(yīng)用轉(zhuǎn)換成微信小程序。我們也在考察這一新的跨端方案和微信小程序融合轉(zhuǎn)化的可行性。 作者:京東ARES多端技術(shù)團(tuán)隊(duì) 前言 Alita是一套由京東ARES多端技術(shù)團(tuán)隊(duì)打造的React Native代碼轉(zhuǎn)換引擎工具。它對React語法有全新的處理方式,支持在運(yùn)行時(shí)處理React語法,實(shí)現(xiàn)了React Native和微信小程序之間的主要組件對齊,可以用...

    陸斌 評(píng)論0 收藏0
  • cml遷移指南(CML Migrate Guide)

    摘要:今天,為了讓大家的項(xiàng)目優(yōu)雅升級(jí),快速接入,給你帶來一份豐盛的遷移指南目錄結(jié)構(gòu)和微信小程序一樣,包含一個(gè)描述整體程序的和多個(gè)描述各自頁面的。 cml 作為真正讓一套代碼運(yùn)行多端的框架,提供標(biāo)準(zhǔn)的MVVM模式,統(tǒng)一開發(fā)各類終端。 同時(shí),擁有各端獨(dú)立的 運(yùn)行時(shí)框架(runtime)、數(shù)據(jù)管理(store)、組件庫(ui)、接口(api)。 此外,cml在跨端能力加強(qiáng)、能力統(tǒng)一、表現(xiàn)一致等方面...

    FreeZinG 評(píng)論0 收藏0
  • vue和微信程序的區(qū)別、比較

    摘要:相比之下,小程序的鉤子函數(shù)要簡單得多。一生命周期先貼兩張圖生命周期小程序生命周期相比之下,小程序的鉤子函數(shù)要簡單得多。的鉤子函數(shù)在跳轉(zhuǎn)新頁面時(shí),鉤子函數(shù)都會(huì)觸發(fā),但是小程序的鉤子函數(shù),頁面不同的跳轉(zhuǎn)方式,觸發(fā)的鉤子并不一樣。 前言 寫了vue項(xiàng)目和小程序,發(fā)現(xiàn)二者有許多相同之處,在此想總結(jié)一下二者的共同點(diǎn)和區(qū)別。相比之下,小程序的鉤子函數(shù)要簡單得多。 寫了vue項(xiàng)目和小程序,發(fā)現(xiàn)二者有...

    yck 評(píng)論0 收藏0
  • vue和微信程序的區(qū)別、比較

    摘要:相比之下,小程序的鉤子函數(shù)要簡單得多。一生命周期先貼兩張圖生命周期小程序生命周期相比之下,小程序的鉤子函數(shù)要簡單得多。的鉤子函數(shù)在跳轉(zhuǎn)新頁面時(shí),鉤子函數(shù)都會(huì)觸發(fā),但是小程序的鉤子函數(shù),頁面不同的跳轉(zhuǎn)方式,觸發(fā)的鉤子并不一樣。 前言 寫了vue項(xiàng)目和小程序,發(fā)現(xiàn)二者有許多相同之處,在此想總結(jié)一下二者的共同點(diǎn)和區(qū)別。相比之下,小程序的鉤子函數(shù)要簡單得多。 寫了vue項(xiàng)目和小程序,發(fā)現(xiàn)二者有...

    mcterry 評(píng)論0 收藏0
  • 「輕算賬」程序實(shí)踐筆記

    摘要:資源開發(fā)文檔是一套完全免費(fèi)的微信小程序開發(fā)框架,擴(kuò)展了小程序的能力。推薦有一些不錯(cuò)的解決方案封裝封裝跨頁面事件通訊監(jiān)聽數(shù)據(jù)變化開發(fā)如何在微信小程序的頁面間傳遞數(shù)據(jù)需要時(shí)可以快速過一遍。微信小程序回調(diào),,,的使用例子供參考 這篇文章主要記錄我做小程序「輕算賬」過程中遇到的一些問題和解決方案,就當(dāng)是做個(gè)總結(jié),也希望其中有能夠幫助到他人的信息。 showImg(https://segment...

    BigTomato 評(píng)論0 收藏0
  • 詳解 mpvue 程序框架 及和原生的差異

    摘要:在這一步,實(shí)例已完成以下的配置數(shù)據(jù)觀測,屬性和方法的運(yùn)算,事件回調(diào)??梢灾苯訉懙葮?biāo)簽的寫法之前會(huì)的工程師上手框架的成本較低 簡介 1.美團(tuán)工程師推出的基于Vue.js封裝的用于開發(fā)小程序的框架2.融合了原生小程序和Vue.js的特點(diǎn)3.可完全組件化開發(fā) 特點(diǎn) 1.組件化開發(fā)2.完成的Vue.js開發(fā)體驗(yàn)(前提是熟悉Vue)3.可使用Vuex管理狀態(tài)4.Webpack構(gòu)建項(xiàng)目5.最終H5...

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<