微信小程序开发必备-Trace

小程序开发


浏览:1175 次

下载:到本地grace目录

创建页面时,请使用Grace替换的page方法。

从“grace/index.js”导入createPage

创建页面({

数据:{

用户信息:{},

canIUse:真

}

加载(){

//通过$data分配直接更新数据

this.$data.canIUse=假

//通过$http发起网络请求

这个。$http。帖子(“https://www.dtworkroom.com/doris/1/2.0.0/test“,{xx:7})。然后((d)=>{

控制台.log(d)

}).catch(错误=>{

console.log(错误状态,错误消息)

})

//全局事件总线-侦听事件

这是一辆$bus$打开(“enventName”,(数据)=>{

console.log(数据)

})

//返回上一页并传递数据

this.$goBack({retValue:“8”})

},

//跨页价值转移

$onBackData(数据){

//接收从页面返回的数据,

}

...

})

注意:Grace的所有方法和属性名称都以“$”开头。

数据响应型

微信小程序中的数据发生变化后,应通过setData明确更新,例如:

//更新单个字段

this.set数据({

用户信息:res.userInfo

})

//更新多个字段

this.set数据({

用户信息:res.userInfo

canIUse:假

})

这显然受到React的影响。我不想学习。如果你用过Vue,你应该觉得它看起来很不雅观。尤其是当代码中有许多零散的值要更新时,代码看起来是多余的。此外,有时您必须调整setData以更改变量

现在,Grace将使您的代码更加优雅。您可以像Vue一样更新数据:

this.$data.userInfo=res.userInfo;

//更新多个字段,而不是重新分配

this.$数据={

用户信息:res.userInfo

canIUse:假

}

现在,您可以通过赋值直接更新界面。当然,您仍然可以使用此Set Data来更新数据。Grace将自动同步此$数据。

注意事项

Grace的数据响应原理与Vue相同(如果您熟悉Vue,可以跳过它)。因此,与Vue一样,由于JavaScript的限制,Grace无法检测数组下标赋值和对象添加或删除属性。然而,grace提供了$set(target、key、value)方法。有关详细信息,请访问。

数据更改缓存

根据微信小程序的官方优化建议,grace可以避免以下问题:

频繁取消设置数据

为了解决这个问题,grace引入了一种数据更改缓存机制。下面是一个示例:

//开始缓存数据更改此操作$数据$缓存();

//接下来是n密集型数据更新$data name=“doris”this.$data.userCard。no=“610xxx889”this.$data.balance=66666

....

//统一提交此更改$数据$提交();

调用$cache()后,将缓存所有数据更改(不会触发setData)。只有当$commit被调用时,它才会被统一刷新,这避免了频繁调用setData导致的性能消耗。

在后台状态页面上设置数据

当页面进入后台状态(用户不可见)时,它不应继续设置数据。后台状态页的呈现用户感觉不到。此外,后台状态页还将抢先执行前台页。当页面进入后台时,grace将自动停止更新数据。当页面再次转到前景时,渲染将自动启动。

Http协议

Grace通过Promise Request封装wx,并支持拦截器、请求配置等:

安静的API

$http。get(url,[data],[options])

$http。post(url,data,[options])

$http。put(url,数据,[选项])

$http.delete(url,[data],[options])

$http.patch(url,[data],[options])

多个并发请求

var getUserRecords=()=>{

返回this.$http.get('/user/133/records');

}

var getUserProjects=()=>{

returnthis.$http.get('/user/133/projects');

}

这个。$http。所有([getUserRecords(),getUserProjects()])

.then(this.$http.pread(函数(记录、项目){

//两个请求现在都已完成

}))

.catch(函数(错误){

console.log(错误)

})

拦截器

//添加请求拦截器this.$http.interceptors.request。使用((config,promise)=>{

//在发送请求之前做些什么

config.headers[“X-Tag”]=“grace”;

//使用自定义数据//promise完成请求。resolve(“假数据”)返回配置;

})

//添加一个响应拦截器this.$http.interceptors.response.use(

(回应,承诺)=>{

//对响应数据进行处理。//只需返回响应的数据字段return response.data

},

(错误,承诺)=>{

//处理响应错误//promise.resolve(“ssss”)

}

)

Grace使用的http请求库是$htt