小程序開發經驗總結

1、WXML

1.1:wx:if與wx:else

前端經過後端的接口獲取信息列表,若是有數據則展現數據內容,不然則顯示找不到信息。
若是if-else使用布爾值的狀態做這個開關的話,頁面會先出現false的狀態,再更新爲true,即閃現找不到信息的內容,這種交互不是很理想。javascript

<view wx:if="{{true}}">
    <text>這是信息列表</text>
</view>
<view wx:else>
    <text>找不到信息</text>
</view>

最好的作法是使用下面這種,一開始設置info爲null,css

data:{
    info:null
}
<view wx:if="{{info === 1}}">
    <text>這是信息列表</text>
</view>
<view wx:if="{{info === 0}}">
    <text>找不到信息</text>
</view>

1.2:wx:for

for循環要添加wx:for-item="item" wx:key="item"html

1.3:block標籤

wx:if、wx:for、wx:else這些沒有樣式意義的語法儘可能使用block前端

1.4:template組件模板

公共的頁面模塊/組件,可直接在wxml使用,也可使用import方式。若是涉及到css,須要在wxss裏@import引入。vue

/**
* 方式一:直接使用
* 1. 給template 設置name屬性
* 2. 組件傳過來的值能夠直接使用  hidden="{{!isloading}}"
*/
<template name="loading">
  <view class="weui-loadmore" hidden="{{!isloading}}">
    <view class="weui-loading"></view>
    <view class="weui-loadmore__tips">正在加載</view>
  </view> 
</template>

/** 
* 方式二:按路役引入 
* 1. is 等同方式一的name
* 2. data="{{isloading}}" 給template的數據
*/
<import src="../template/loading.wxml"/>
<template is="loading" data="{{isloading}}"></template>

1.5:腳本語言wxs

專門運行於wxml頁面的腳本語言,與javascript不一樣,不支持使用ES6語法,也不能引用js。java

<wxs module="wxs" src="../../utils/wxs.wxs"></wxs>
module.exports = {
    //輸出百分比
    formatProgress: function (c,m) {
        return c/m*100
    }
}

2、WXSS

2.1:背景Icon

小程序的 background 裏只能使用完整的https圖片路徑,項目中使用icon的方式:react

  • 矢量圖svg:具有完美的可伸縮性,容易進行調整(顏色、大小等);
  • data-uri:圖片體積小於20Kb使用base64方式。前端圖片最優化的引入方式分析
  • 較大文件:直接在wxml使用image標籤
  • 引入外部icon:如阿里巴巴矢量圖庫,可以使用網絡路徑下載到本地的方式來使用。

png本地壓縮工具:Tinypngios

2.2:重置樣式

部分樣式重置git

2.3:font-family標準規範

font-family: 
/*西文:*/
-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Ubuntu,Helvetica Neue,Helvetica,Arial,
/*中文:*/
PingFang SC,Hiragino Sans GB,Microsoft YaHei UI,Microsoft YaHei,Source Han Sans CN,sans-serif;

​ 參考文章:最標準的系統字體規範font-familygithub

2.4:合理使用rpx單位

rpx 是一個至關於屏幕寬度百分比的相對單位,如下狀況不建議使用:

  • font-size和border-width;
  • animation動畫中涉及translate位移:部分機器在rpx轉成px出現小數時,如262.89px,微信會向下取值爲262px,產生1px的差距。
  • canvas繪圖,好比二維碼、分享圖片等。

3、JavaScript

3.1:二次封裝wx.request方法

使用promise方式二次封裝

3.2:頁面的生命週期

  • onLoad: 頁面加載,一個頁面只會調用一次。能得到到頁面參數options。
  • onShow: 頁面顯示,每次打開頁面都會調用一次,從後臺切換前臺也會調用一次:手機從熄屏切回顯屏、從最小化回到最大化。
  • onReady: 頁面初次渲染完成,一個頁面只會調用一次,表明頁面已經準備穩當,能夠和視圖層進行交互。
  • onHide: 頁面切換到後臺、navigateTo 、 tab 切換時調用。
  • onUnload: 頁面卸載。當頁面被關閉或內存不足主動銷燬頁面。

3.3: new Date兼容性

安卓能識別new Date("2018-05-30 00:00:00")格式,但在IOS只能識別2018/05/30 00:00:00格式。須要將短橫替換爲斜槓。var iosDate= date.replace(/-/g, '/')

3.4:冒泡事件

  • bindtap :事件綁定不會阻止冒泡事件向上冒泡
  • catchtap:事件綁定能夠阻止冒泡事件向上冒泡

4、小程序功能

4.1:canvas生成圖片

canvas多行文字及生成分享圖片

4.2:插件的使用

小程序插件的使用

4.3:頁面棧限制

小程序的頁面棧限制5個,超過5個以後沒法進入下一個頁面。

故要慎用頁面數量,導航API要靈活結合wx.navigateTo、wx.redirectTo、wx.navigateBack

小程序頁面5層限制的一種解決方案

4.4:提示彈窗Dialog

  • 代碼前面使用wx.hideLoading會致使後面的wx.showToast出不來。由於wx.showToast具有隱藏wx.showLoading()提示框的功能。

5、其它

5.1:主流框架

  • mpvue:使用vue語法規範編譯成小程序和h5語法
  • Taro:基於react可同時編譯成小程序、h五、react-native等。

5.2:經常使用插件

相關文章
相關標籤/搜索