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

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 关注 分享

要回复文章请先登录注册

有问

有问

感觉没意思。有许多组件要用VUE写,部分组件又只能NVUE支持。。。太麻烦了。
2020-12-24 16:19
DCMarvel

DCMarvel

放在uni下边啊 如果 uni.getlist = func 放心大胆用
2020-12-24 16:00