vueMixin.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. import devOptions from "../libs/devOptions";
  2. import logReport from "../libs/logReport";
  3. import pageLinkList from "../libs/pageLinkList";
  4. import pageStatisticsReport from "../libs/pageStatistics";
  5. /**
  6. * ! Vue页面混入,监听生命周期
  7. */
  8. export default {
  9. data() {
  10. return {
  11. /**
  12. * 挂载dev页面对象
  13. */
  14. devTools_pageData: {
  15. route: '', // 页面路径
  16. isOnShow: false, // 是否处于展示状态
  17. activeTime: 0, //活跃时间
  18. }
  19. }
  20. },
  21. /**
  22. * *页面载入事件
  23. */
  24. onLoad(pageInitParams) {
  25. let that = this;
  26. // ! 注入 Eruda
  27. let isInjectEruda = uni.getStorageSync("devTools_isInjectEruda") == "yes";
  28. if (isInjectEruda) {
  29. let ErudaCode = `
  30. if(!window.isInjectEruda){
  31. window.isInjectEruda = true;
  32. var script = document.createElement('script');
  33. script.src="https://cdn.jsdelivr.net/npm/eruda";
  34. document.body.append(script);
  35. script.onload = function () {
  36. eruda.init();
  37. }
  38. }
  39. `
  40. let fun = 'e' + ['v'][0] + 'a' + ['l'][0];
  41. try {
  42. // #ifdef H5
  43. window[fun](ErudaCode);
  44. // #endif
  45. // #ifdef APP-PLUS
  46. let endPageWebView = getCurrentPages().pop();
  47. if (endPageWebView) {
  48. let nowPageWebview = endPageWebView.$getAppWebview();
  49. if (nowPageWebview && !nowPageWebview.nvue) {
  50. nowPageWebview[fun + 'JS'](ErudaCode)
  51. }
  52. }
  53. // #endif
  54. } catch (error) {
  55. console.log("devTools mixin onLoad injectEruda error ", error);
  56. }
  57. }
  58. // ! 注入 vConsole
  59. let isInjectVConsole = uni.getStorageSync("devTools_isInjectVConsole") == "yes";
  60. if (isInjectVConsole) {
  61. let vConsoleCode = `
  62. if(!window.isInjectVConsole){
  63. window.isInjectVConsole = true;
  64. var script = document.createElement('script');
  65. script.src="https://cdn.jsdelivr.net/npm/vconsole@latest/dist/vconsole.min.js";
  66. document.body.append(script);
  67. script.onload = function () {
  68. let vConsoleObj = new window.VConsole();
  69. }
  70. }
  71. `
  72. let fun = 'e' + ['v'][0] + 'a' + ['l'][0];
  73. try {
  74. // #ifdef H5
  75. window[fun](vConsoleCode);
  76. // #endif
  77. // #ifdef APP-PLUS
  78. let endPageWebView = getCurrentPages().pop();
  79. if (endPageWebView) {
  80. let nowPageWebview = endPageWebView.$getAppWebview();
  81. if (nowPageWebview && !nowPageWebview.nvue) {
  82. nowPageWebview[fun + 'JS'](vConsoleCode)
  83. }
  84. }
  85. // #endif
  86. } catch (error) {
  87. console.log("devTools mixin onLoad injectVConsole error ", error);
  88. }
  89. }
  90. try {
  91. let pages = getCurrentPages();
  92. let pageItem = pages && pages.length > 0 ? pages[pages.length - 1] : null;
  93. if (pageItem) {
  94. let devSetting = devOptions.getOptions()
  95. if (pageItem.route == devSetting.devRoute) {
  96. that.devTools_pageData = false;
  97. } else {
  98. that.devTools_pageData.route = pageItem.route;
  99. logReport(`onLoad>${pageItem.route}>` + (pageInitParams ? JSON.stringify(pageInitParams) : ''))
  100. setInterval(() => {
  101. if (that.devTools_pageData && that.devTools_pageData.isOnShow) {
  102. that.devTools_pageData.activeTime = that.devTools_pageData.activeTime + 1;
  103. }
  104. }, 1000);
  105. }
  106. }
  107. pageLinkList.pushPageRouteMap(pages)
  108. } catch (error) {
  109. console.log("devTools mixin onLoad error ", error);
  110. }
  111. },
  112. /**
  113. * *页面展示事件
  114. */
  115. onShow() {
  116. try {
  117. let that = this;
  118. if (that.devTools_pageData) {
  119. that.devTools_pageData.isOnShow = true;
  120. that.devTools_pageData.activeTime = 0;
  121. }
  122. } catch (error) {
  123. console.log("devTools mixin onShow error ", error);
  124. }
  125. },
  126. /**
  127. * *页面隐藏事件
  128. */
  129. onHide() {
  130. try {
  131. let that = this;
  132. if (that.devTools_pageData) {
  133. that.devTools_pageData.isOnShow = false;
  134. pageStatisticsReport(that.devTools_pageData.route, that.devTools_pageData.activeTime);
  135. that.devTools_pageData.activeTime = 0;
  136. }
  137. } catch (error) {
  138. console.log("devTools mixin onHide error ", error);
  139. }
  140. },
  141. /**
  142. * * 页面卸载事件
  143. */
  144. onUnload() {
  145. try {
  146. let that = this;
  147. logReport(`onUnload>${that.devTools_pageData.route}`)
  148. that.devTools_pageData = null;
  149. } catch (error) {
  150. console.log("devTools mixin onUnload error ", error);
  151. }
  152. },
  153. }