微信小程序中,數據狀態不一樣頁面中不能跨頁面同步更新,也就是缺失相似vuex,mobx,redux全局的數據狀態管理功能。 有些人移植了這些庫,可是畢竟不是微信小程序生態的東西。vue
Tencent也發佈了相似的庫,叫作 westore,基於小程序開發,很是小巧好用,很是推薦。 可是因爲重寫了Page方法,而如今不少項目都有本身的框架(已經重寫了Page方法等),重構代價較大, 因此參考實現了 wxscv,喜歡的朋友直接去github查看。git
const scv = require("../../libs/scv/scv.js"); Page(scv.observer({ //初始化參數 data:{ userinfo: scv.require("userinfo.js") //引入model }, test:function(){ this.data.userinfo.nickName = "awen"; //設置數據 this.update(); //更新數據 }, ... }))
基本全部的api就在上面了。github
model以文件的方式存在,單獨創建一個文件夾來存放model文件。默認的是 根目錄下的models文件夾。若是要修改wxscv庫文件或者models文件的存放默認位置。可使用:**wx.__scvModelBaseDir="xxxx"** 來設定models文件夾的路徑,值得注意的是這是相對於scv.js文件的相對位置。vuex
let app = getApp(); // 初始化數據 let defData = app.globalData.userInfo; // let defData = wx.getStorageSync(key) module.exports = { // 數據 data:defData, // 更新回調 onUpdate:function(){ console.log("onUpdate", this.data); app.globalData.userInfo = this.data; // 也能夠進行一些其餘的數據操做。 // wx.setStorage({}) ... // or wx.request({}) } }
返回的對象分兩部分redux
所有就這些了。 簡單就對了小程序