1***@qq.com
1***@qq.com
  • 发布:2020-12-24 15:54
  • 更新:2022-08-30 17:37
  • 阅读:2844

nvue实现全局挂载

分类:nvue

前言
nvue的无法手动扩展vue.prototype导致有时想用全局挂载就无从下手。

实现思路
由于nvue中的全局变量我们能找到的比较好的就是store和globalData,所以考虑在这两个上挂载。

globaldata
每次初始化时直接getApp({allowdefault:true})然后扩展一堆方法,使用时,页面内直接get出来用就好,我这里是作为全局请求api方法,实现类似vue项目中的 this.$api.getlist().then().catch()类似的效果,使用时就是getApp().api.login.getXX().then().catch();

store
同样的,直接在state上挂载静态方法在nvue中是完全没有问题的,this.$store.state.test.gettttt().then().catch(); 依然好用。

反思
目前使用这两种方法都可以实现,但是仔细想想稍有不妥。
store作为状态管理我们管理了静态方法,是不是用偏了;globaldata每次使用必须getApp获取整个app实例,getapp()...的链式写法未免有些奇怪;再globaldata是否有大小限制,或者我们挂载的东西太多会不会影响到app实例;store和globaldata我使用哪个比较合适呢?

请问有谁实现过或者在这方面有经验,帮我解答最后这几个问题!!!

merry christmas 收到下边兄弟的回复,才发现uni本身就是一个全局的对象,使用uni.XXX = function(){};然后页面中随处使用,确实好用。

那么问题又来了,我现在想需要一个可配置的接口地址,使用什么方案比较合适呢?个人还是觉得store比较好直接使用action请求配置服务器,更换每一个接口的地址就可以了。

0 关注 分享

要回复文章请先登录注册

小白请指教

小白请指教

回复 1***@qq.com :
怎么使用的 求教
2022-08-30 17:37
小白请指教

小白请指教

回复 DCMarvel :
在哪注册呢
2022-08-30 17:37
9***@qq.com

9***@qq.com

比如<view>$hideTel('1554442222') <view>
2022-05-18 17:04
9***@qq.com

9***@qq.com

nvue 在模板中怎么使用挂载在prototype上的方法呢
2022-05-18 17:03
苏陌

苏陌

回复 阿楞先生 :
打印一下getApp(),会有惊喜
2021-12-22 14:24
阿楞先生

阿楞先生

老哥,为什么我nvue也获取不到globaldata挂载的方法
2021-12-22 14:21
1***@qq.com

1***@qq.com (作者)

回复 DCMarvel :
额,说的对,然后就是先判断接口拿请求地址,再发正式请求了,受教
2020-12-25 10:28
DCMarvel

DCMarvel

可配置的接口地址什么意思?是地址可变吗?
uni.getList = function(url,param,header){
uni.request({
url: url,
data: param,
header: header,
success: (res) => {
console.log(res.data);
}
});
}
使用动态传入接口不可以吗?
2020-12-25 10:17
1***@qq.com

1***@qq.com (作者)

回复 DCMarvel :
老哥,看一下最新更新的,帮忙解答一下,做配置中心用哪个比较好
2020-12-25 10:07
1***@qq.com

1***@qq.com (作者)

回复 DCMarvel :
试过了,挺好用的,感谢
2020-12-25 10:01