當初作這個小程序是爲了婚禮前的須要,結婚以後,但願這個小程序可以留存下來,特意花了一些空閒時間將小程序轉化成爲「相冊類小程序」css
注意:使用mpvue前,首先你得先熟悉vue框架的基本使用 html
注意:接下來展現的代碼,有幾個對比,分別是本人優化前和優化後的代碼對比,感興趣的能夠着重看一下優化後的成熟寫法。vue
首頁着重和你們講解下背景音樂的實現方法node
const audioCtx = wx.createInnerAudioContext()
wx.createInnerAudioContext 接口獲取實例git
接着,經過實例的相關方法來實現音樂的播放與暫停功能數據庫
關於小程序音頻相關文檔json
具體代碼以下:小程序
以上代碼中使用到了雲開發相關功能,文章後面會介紹,請你們稍安勿躁後端
map標籤 關於map組件的使用文檔api
這裏講一下標記點markers:
進行雲開發首先咱們須要找到上面這個文件,在上面這個json文件中加上上面這行代碼
cloudfunctionRoot
用於指定存放雲函數的目錄
增長字段 "cloud": true實現雲開發能力的兼容性
在開發者工具工具欄左側,點擊 「雲開發」 按鈕便可開通雲開發
雲開發提供了一個 JSON 數據庫
雲開發提供了一塊存儲空間,提供了上傳文件到雲端、帶權限管理的雲端下載能力,開發者能夠在小程序端和雲函數端經過 API 使用雲存儲功能。
雲函數是一段運行在雲端的代碼,無需管理服務器,在開發工具內編寫、一鍵上傳部署便可運行後端代碼。
在小程序端開始使用雲能力前,需先調用 wx.cloud.init
方法完成雲能力初始化
在開始使用數據庫 API 進行增刪改查操做以前,須要先獲取數據庫的引用。如下調用獲取默認環境的數據庫的引用:
要操做一個集合,需先獲取它的引用:
例:首頁獲取背景音樂資源
例:首頁獲取輪播圖數組
這裏用到了雲函數,之因此用雲函數是由於小程序端在獲取集合數據時服務器一次默認而且最多返回 20 條記錄,雲函數端這個數字則是 100。
上面咱們講過在project.config.json文件中配置雲函數存放位置
下面是雲函數messageList的index.js文件:
使用雲函數前,在開發者工具上,找到messageList目錄,右鍵如圖:
點擊上傳並部署:雲端安裝依賴(不上傳node_modules)
獲得如圖的提示:
安裝完點擊完成就能使用當前雲函數了,使用方法即:
數組之因此要倒序是由於但願新祝福的的用戶在最前面顯示
這裏咱們用到了雲函數獲取用戶信息,
當小程序端調用雲函數時,雲函數的傳入參數中會被注入小程序端用戶的 openid,開發者無需校驗 openid 的正確性,由於微信已經完成了這部分鑑權,開發者能夠直接使用該 openid
不成熟寫法:
下面是雲函數user的index.js文件:
主要是爲了獲取當前操做用戶的openid,獲取當前用戶的openid方法:
接着判斷當前用戶是否已經存在於數據庫中,即getIsExist()方法:
若是獲得的數組長度爲零則添加改用戶到數據庫,不然則提醒當前用戶已經送過祝福
接下來介紹存儲用戶信息的方法,即addUser():
存入到數據庫的信息是這樣的:
成熟寫法(使用雲函數一次搞定):
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database() exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const dbName = 'user' const filter = { _openid: wxContext.OPENID } const countResult = await db.collection(dbName).where(filter).count() const total = countResult.total if (total) { return { has: true } } else { return db.collection(dbName).add({ data: { user: event.user, _openid: wxContext.OPENID, time: db.serverDate() } }) } }
toMessage (e) {
const that = this
if (e.target.errMsg === 'getUserInfo:ok') { wx.getUserInfo({ success: function (res) { that.userInfo = res.userInfo wx.navigateTo({ url: `/pages/writeMessage/main?avatar=${that.userInfo.avatarUrl}&name=${that.userInfo.nickName}` }) that.addUser(that.userInfo) } }) } }, addUser (obj) { wx.cloud.callFunction({ name: 'addUser', data: { user: obj } }) }
大概的功能就是這麼多,但願能夠幫助到你們,以爲寫得不錯的記得給做者點個贊,大家的支持是我不斷更新的最大動力!
一開始不清楚隨筆和文章的區別,仍是但願這篇隨筆能展現在博客園首頁(因此改爲隨筆),讓更多的朋友看到
但願對那些有想法又不會後臺開發的朋友一些啓示做用,祝你早日作出只屬於本身的小程序。