詳解如何開發一個鳳蝶H5(支付寶小程序)的組件

今天嘗試的折騰了一下鳳蝶5(支付寶的小程序),現在開放的東西還很少。ide不是很好用。

鳳蝶H5是有dom的,對於開發者來說非常好。這也符合web前段開發的習慣。

大體上和微信小程序差不了太多。至於詳細的模塊組件就不介紹了,可以去看官方文檔,

文檔地址鏈接:   鳳蝶H5開放文檔鏈接 

其中最重要的部分就是組件了,鳳蝶H5的頁面是由組件組合而成的,下面我會在實戰中介紹組件。

首先看一下組件的目錄結構以及各個文件的作用:

如下圖:

zujianmulu

1. .axml  視圖展示文件,該文件描述了這個組件長啥樣子

2. .js  該文件描述了這個組件中需要的業務邏輯

其中兩個重要的東西分別是:

a. data對象,和微信小程序一樣,data是用來裝載視圖層所需數據的。默認情況下data會注入一個schemaData(用來描述組件數據格式的東西,具體語法請看官方文檔,很容易理解)

b. onReady方法,是在組件渲染完畢後調用的一個方法。它有一個參數,這個參數就是組件對應的dom節點。

可以通過setData()方法來動態設置data中的數據。

3. .json 這個文件轉載了一些符合schemaData約定的靜態數據。該文件中的數據會提供給.axml使用

4. .less css文件,描述.axml中view樣式。

5. .schema 組件所需數據格式描述.

6. package.json 該文件不是必須存在的,不存在時,表示該組件是一個可編輯組件,此時組件不能放在 FengdieContainer 中;存在時,表示該組件是一個可拖拽、可複製組件,需描述相關信息,包括 name snapshot title,其中,name 需和組件 component 名保持一致,且可複製組件只能放在 FengdieContainer中。

總結一下:.sechema規範組件所需數據格式->.json初始化view層所需數據(數據格式遵循.sechema規範)->.js調用onReady來處理業務邏輯,將處理結果存放data中->.axml從.json和data中拿到數據顯示

基於以上組件的知識,下面製作一個簡單的組件來實踐。

1. 第一步:刪掉系統默認帶的組件如圖:

shandiaozujian

刪除的時候會抱一堆錯誤, 記得將pages/index.axml中的引用的組件一併刪掉(如果還出問題,重啓ide)

2. 第二步: 我們選擇自定義組件 

起名叫CardList

然後各個文件內容如下:(都很簡單,就不一一介紹了,主要是搞清楚渲染的流程就可以了)

CardList.axml:

<view class="card-list-wrapper">

  <view class="card-title">

    <img src="`titlePic`" />

  </view>

  <view class="card-list-item" a:for="`items`">

    <view class="pleft">

      <img src="`item`.`image`"/> 

    </view>

    <view class="iright">

      <view class="title">`item`.`title`</view>

      <view class="assist">

        <view class="date">`item`.`date`</view>

        <view class="praise fa fa-thumbs-o-up">+`item`.`praise`</view>

      </view>

    </view>

  </view>

</view>


CardList.js:

import { Component } from 'fengdie-component';

import './CardList.less';

export default Component({

    data:{

        titlePic:'https://cdns.911app.cn/Fgx6q1TZPA7jkjrx61iGt-XAvp-q', //頂部圖片

        items:[] //列表數據集

    },

    onReady(dom){

        let cards = [];  //模擬從服務器拿到的數據

        for(let i=0; i<10; i++){

            cards[i] = {

                 "image":"https://cdns.911app.cn/Fgx6q1TZPA7jkjrx61iGt-XAvp-q",

                 "title":"這裏是標題啦"+i,

                 "date":"2017-01-11 12:1"+i,

                 "praise":i

            };

        } 

        this.setData({items:cards}); //設置列表數據

    }

});



CardList.less:

.card-list-wrapper{

    background: #EFEFF4;

    display: flex;

    flex-direction: column;

}

.card-title{

    img{

      height: 160px;

      width: 100%;

    }

    display: flex;

    background: #fff;

    height: 160px;

    width: 100%;

    align-items: center;

    justify-content: center;

}

.card-list-item{

    display: flex;

    flex-direction: row;

    background: #fff;

    margin-bottom:20px;

    padding: 20px;

    -moz-box-shadow:2px 2px 10px #ccc;

    -webkit-box-shadow:2px 2px 10px #ccc;

    box-shadow:2px 2px 10px #ccc; 

}

.pleft{

    img{

        width: 140px;

        height: 140px;

    }

    width: 173px;

    height: 140px;

}

.title{

    flex: 1;

}

.iright{

    display: flex;

    flex-direction: column;

    margin-left:20px;

    width: 100%;

}

.assist{

    display: flex;

    flex-direction: row;

    align-items: center;

}

.date{

    flex: 3;

}

.praise{

    flex: 1;

}


CardList.schema:

Array(卡片列表數據規範) {

  image(左邊圖片地址):Image[maxWidth:140,maxHeight:140],

  title(條目標題):Text,

  date(時間):Date,

  praise(點在數量): Number

}


我沒有貼出來得默認就可以了,會自動處理,不用管。

運行結果如圖:

模擬器:

mnoniqi

真機:

zhenji

然後簡單介紹一下ide的一些常用功能:

ide

聲明: 文章由911小程序轉載而來,如圖片不能正常顯示,請訪問原地址:  原文http://911app.cn/article/articleinfo?articleId=22

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章