- API
- $mp
- 小程序 API
- globalData
API
$mp
页面的根 VM 上在页面初始化时保存小程序的相关信息,VM 树上所有的 VM 都可以通过 this.$mp 获取
{platform: 'wechat', // 平台,目前有 微信:'wechat', 支付宝:'alipay',百度智能小程序:'swan'page: Page, // 小程序页面实例query: { id: 100 }, // onLoad 传入的页面参数对象options: { id: 100 }, // 与 query 是同一个对象(别名)}
{platform: 'wechat',app: App, // 小程序程序实例,@0.2.2+,注意,@0.2.1-依然定义为 pagequery: { id: 100 },options: { id: 100 },}
小程序 API
以微信为例,微信小程序 API 可通过全局对象 wx 直接调用如 wx.api,alipay 为 my,百度智能小程序为 swan。
如果需要做同构,那么 api 的调用需要注意平台区分。
比如我们需要使用小程序原生的网络接口 request,但是在不同的平台下命名有所不同。
我们可以手动利用 vue mixin 或其他方式统一 api
export default {methods: {GET (api, callback) {let { platform } = this.$mp || {},request = ()=>{}switch(platform) {case 'wechat':request = wx && wx.requestbreak;case 'alipay':request = my && my.httpRequestbreak;case 'swan':request = swan && swan.requestbreak;default:break;}request && request({url: api,success: callback})}}}
同样具有全局性质的还有全局方法 getApp() 等,类似的全局对象均可直接访问
globalData
由于小程序的各个页面间都是相对独立的,官方提供了 globalData 用于储存全局数据
megalo 将 globalData 改造成了类似于 vue data 的构建形式,可以是对象,也可以说执行方法
// object{globalData: 'I am global data'}{globalData: {msg: 'I am global data'}}// funtion{globalData: ()=>{return {mp: this.$mp}}}
