1. 程式人生 > >騰訊雲開發微信小程序使用體驗

騰訊雲開發微信小程序使用體驗

增刪改查 限制 doc 選擇圖片 事件對象 hidden udp dde 數據庫權限

主體內容

  • 代碼構成
    • 數據:JSON 配置文件
    • 結構:WXML 模版文件
    • 樣式:WXSS 頁面樣式
    • 交互:JS 腳本邏輯文件
  • 雲開發
    • 雲數據庫
    • 雲函數
    • 雲存儲

WXML

是小程序框架設計的一套標簽語言,結合小程序的基礎組件,事件系統,可以構建出頁面的結構,充當的就是類似HTML的角色

  • 常見組件
    • <view></view>類似於div
    • 胡子語法{{}}插值
    • 數據存儲在base.js文件中
  • 列表渲染
    • wx:for {{index}} {{item}}
    • wx:key
  • 條件渲染
    • 使用wx:if="{{condition}}" 來判斷是否需要渲染該代碼塊, 也可以用wx:elseif和wx:else來添加一個else塊
    • wx:if vs hidden : 如果需要頻繁切換的情景下,用hidden更好,如果在運行時條件不大可能改變則 wx:if 較好

WXSS

  • WXSS(WeiXin Style Sheets)是一套用於小程序的樣式語言,用於描述WXML的組件樣式,也就是視覺上的效果。

  • 尺寸單位:rpx(responsive pixel) 可以根據屏幕寬度進行自適應, 適配不同寬度的屏幕 (規定屏幕寬度為750rpx)
  • 建議使用iphone6作為設計稿標準
  • 引入外部wxss: @import ‘./test_0.wxss‘

  • 推薦使用小程序第三方樣式庫
    • WeUI :一套同微信原生樣式視覺體驗一致的基礎樣式庫
    • iView Weapp:一套高質量的微信小程序UI組件庫 可構建後臺管理系統
    • Vant Weapp:輕量、可靠的小程序UI組件庫

JS

  • 事件機制

    • 事件是對用戶的交互操作行為的相應
    • bind VS catch : bind允許事件冒泡 catch不允許事件冒泡
    • 事件對象event

微信小程序>雲開發

騰訊雲 + 微信小程序

  • 雲函數
  • 雲數據庫
  • 雲存儲

?

小程序傳統開發模式

開發成本比較高 開發效率低 運維成本高

  • 客戶端
  • 服務端
    • 後端代碼
    • 數據庫
  • 運維

小程序雲開發模式

Serverless 開發者更關註業務邏輯

  • 客戶端 + 雲開發 減低成本

  • 不需要運維成本

雲函數

  • 獲取appid
  • 獲取openid
  • 生成分享圖
  • 調用騰訊雲SDK

雲數據庫

  • 數據增刪改查

雲存儲

  • 管理文件
  • 上傳文件
  • 下載文件
  • 分享文件

基礎環境

個小程序帳號可免費創建兩個環境建議:

  • 開發環境

  • 生產環境

調試基礎庫版本應在 2.2.3 以上版本

雲數據庫能力

雲開發提供了一個JSON數據庫 提供了2GB免費存儲空間

數據類型

  • String: 字符串
  • Number: 數字
  • Object:對象
  • Array:數組
  • Bool: 布爾值
  • GeoPoint : 地理位置點
  • Date : 時間
  • Null

操作雲數據庫

  • 小程序控制(讀寫數據庫受權限控制限制)

  • 雲函數控制(擁有所有讀寫數據庫的權限)
  • 控制臺控制(擁有所有讀寫數據庫的權限)

雲數據庫權限管理

  • 僅創建者可寫, 所有人可讀(文章類)

  • 僅創建者可讀寫
  • 僅管理端可寫
  • 僅管理端可讀寫

數據庫初始化

初始化

const db = wx.cloud.database()

切換環境

const testDB = wx.cloud.database({
    env:'test'
})

選擇雲開發的編譯路徑

通過雲開發實現增刪查改

db.collection('name').doc('id')add() or ...

### 雲函數

調用雲函數的方法:

     wx.cloud.callFunction({
         name: '',
         data:{}
     }).then(res => {}).catch()

雲存儲

能力

  • wx.cloud.uploadFile 上傳文件
  • wx.cloud.downloadFile 下載文件
  • wx.cloud.deleteFile 刪除文件
  • wx.cloud.getTempFileURI 獲取臨時鏈接

實例

upload: function (){
    //選擇圖片api wx.chooseImage()
    wx.chooseImage({
        count: 1,
        sizeType:['original','compressed'],
        sourceType: ['album','camera'],
        success(res) {
            //tempFilePath 可以作為img標簽的src屬性顯示圖片(圖片的臨時路徑)
            const tempFilePaths = res.tempFilePaths;
         //調用雲存儲api 上傳文件 wx.cloud.uploadFile
            wx.cloud.uploadFile({
                cloudPath: new Date().getTime()+'.png'//上傳到雲儲存的路徑
                filePath:'tempFilePaths[0]'// 文件路徑 因為tempFilePaths為數組
                success:res => {
                    console.log(res.fileID)
                    db.collection('image').add({
                        data: {
                            fileID: res.fileID
                        }
                    }).then(res => {
                        console.log(res);
                    }).ctach( err => {
                        console.error(err);
                    })
                },
                fail:console.error
            })
        }
    })    
}

技術分享圖片

拉取雲存儲到頁面

getFile(){
    wx.cloud.callFunction({
        name:'login',
    }).then(res => {
        db.collectin('image').where({
            _openid:res.result.openid
        }).get().then(res2 => {
            console.log(res);
            this.setData({
            //將拉取結果傳給data中的images
                images: res2.data
            })
        })
    })
}

文件下載

cloud.wxml:

<block wx:for="{{images}}">
    <image src="{{item.fileID}}"></image>
    <button data-fileid="{{item.fileID}} 
    bind:tap="downloadFile>文件下載</button>
</block>

cloud.js:

downloadFile(event){
    wx.cloud.downloadFile({
        fileID:event.target.dataset.fileid,//所需下載文件名
        success: res => {
            //返回臨時文件路徑
            console.log(res.tempFilePath)
            //把當前文件保存到手機相冊
            wx.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success(res => {
                   //自動消失的提示框
                    wx.showToast({
                        title:'保存成功'
                    })
                })
            })
        },
        fail: console.error
    })
}

技術分享圖片

騰訊雲開發微信小程序使用體驗