index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. /**
  2. * vk-unicloud框架客户端(前端)
  3. * author VK
  4. */
  5. import userCenter from './libs/vk-unicloud/vk-unicloud-user-center'
  6. import callFunctionUtil from './libs/vk-unicloud/vk-unicloud-callFunctionUtil'
  7. import pubfn from './libs/function/index'
  8. import modal from './libs/function/modal'
  9. import navigate from './libs/function/vk.navigate'
  10. import localStorage from './libs/function/vk.localStorage'
  11. import aliyunOSSUtil from './libs/function/aliyunOSSUtil'
  12. import openapi from './libs/openapi/index'
  13. import requestUtil from './libs/function/vk.request'
  14. import importObject from './libs/function/vk.importObject'
  15. import filters from './libs/function/vk.filters'
  16. import mixin from './libs/mixin/mixin.js'
  17. import initPermission from './libs/function/permission'
  18. import storeMixin from './libs/store/mixin/mixin'
  19. import initGlobalError from './libs/store/libs/error'
  20. import consoleLog from './libs/install/console.log'
  21. import updateManager from './libs/function/updateManager.js'
  22. // #ifdef H5
  23. import h5 from './libs/function/vk.h5'
  24. // #endif
  25. var vk = {
  26. userCenter,
  27. callFunctionUtil,
  28. /**
  29. * 发起一个云函数请求
  30. */
  31. callFunction : callFunctionUtil.callFunction,
  32. checkToken : callFunctionUtil.checkToken,
  33. pubfn,
  34. // #ifdef H5
  35. h5,
  36. // #endif
  37. alert : modal.alert,
  38. toast : modal.toast,
  39. confirm : modal.confirm,
  40. prompt : modal.prompt,
  41. showActionSheet : modal.showActionSheet,
  42. showLoading : modal.showLoading,
  43. hideLoading : modal.hideLoading,
  44. setLoading : modal.setLoading,
  45. navigate,
  46. // 保留当前页面,并进行页面跳转
  47. navigateTo : navigate.navigateTo,
  48. // 关闭当前页面,并进行页面跳转
  49. redirectTo : navigate.redirectTo,
  50. // 并关闭所有页面,并进行页面跳转
  51. reLaunch : navigate.reLaunch,
  52. // 并关闭所有非tab页面,并进行tab面跳转
  53. switchTab : navigate.switchTab,
  54. // 页面返回
  55. navigateBack : navigate.navigateBack,
  56. // 跳转到首页
  57. navigateToHome : navigate.navigateToHome,
  58. // 跳转到登录页
  59. navigateToLogin : navigate.navigateToLogin,
  60. // 跳转到小程序
  61. navigateToMiniProgram : navigate.navigateToMiniProgram,
  62. // 本地缓存
  63. localStorage : localStorage,
  64. // 获取应用语言列表
  65. getLocaleList : pubfn.getLocaleList,
  66. // 获取应用当前语言
  67. getLocale : pubfn.getLocale,
  68. // 获取应用当前语言对象
  69. getLocaleObject : pubfn.getLocaleObject,
  70. // 设置应用当前语言
  71. setLocale : pubfn.setLocale,
  72. // 本地缓存
  73. ...localStorage,
  74. // 阿里云oss
  75. aliyunOSSUtil,
  76. // 更新管理器
  77. updateManager,
  78. // 开放API
  79. openapi,
  80. // 请求库
  81. requestUtil,
  82. // 发起URL请求
  83. request: requestUtil.request,
  84. // 导出云对象
  85. importObject,
  86. };
  87. // vk实例初始化
  88. vk.init = function(obj={}){
  89. let {
  90. Vue, // Vue实例
  91. config, // 配置
  92. store, // vuex简写法则(新版本无需传store)
  93. } = obj;
  94. if(typeof store !== "undefined"){
  95. // 兼容旧版本
  96. Vue.use(store);
  97. }else{
  98. // 新版本无需传store
  99. Vue.mixin(storeMixin);
  100. if(config.globalError){
  101. Vue.use(initGlobalError);
  102. }
  103. }
  104. // 自定义云函数路由配置
  105. vk.callFunctionUtil.setConfig(config);
  106. // 重写 console.log
  107. Vue.use(consoleLog);
  108. };
  109. vk.getGlobalObject = function(){
  110. if (typeof globalThis === "object") return globalThis;
  111. if (typeof self === "object") return self;
  112. if (typeof window === "object") return window;
  113. if (typeof global === "object") return global;
  114. };
  115. // 加载拓展功能
  116. vk.use = function(obj, util){
  117. for(let name in obj){
  118. if(obj[name] && typeof obj[name].init === "function"){
  119. obj[name].init(util);
  120. }
  121. vk[name] = obj[name];
  122. }
  123. };
  124. const install = Vue => {
  125. // 全局混入
  126. Vue.mixin(mixin);
  127. // #ifndef VUE3
  128. // 加载全局过滤器开始
  129. for(let i in filters){
  130. Vue.filter(i, filters[i]);
  131. }
  132. Vue.prototype.vk = vk;
  133. Vue.prototype.$fn = vk.pubfn;
  134. // #endif
  135. // #ifdef VUE3
  136. // 将vk挂载到Vue实例
  137. Vue.config.globalProperties.vk = vk;
  138. Vue.config.globalProperties.$fn = vk.pubfn;
  139. // #endif
  140. // 将vk挂载到uni对象
  141. if (typeof uni == "object") uni.vk = vk;
  142. // 将vk挂载到全局
  143. let vkGlobalThis = vk.getGlobalObject();
  144. if (typeof vkGlobalThis == "object") vkGlobalThis.vk = vk;
  145. let util = { vk };
  146. // 加载插件
  147. vk.use({
  148. callFunctionUtil : vk.callFunctionUtil,
  149. openapi : vk.openapi
  150. }, util);
  151. initPermission(Vue);
  152. }
  153. export default {
  154. install
  155. }