service.js 987 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import Vue from "vue";
  2. import path from "path";
  3. import store from '@/store'
  4. export default function () {
  5. const files = require.context("@/service/", true, /\.js$/);
  6. const ignore = ["./request.js"];
  7. let modules = {};
  8. files
  9. .keys()
  10. .filter((e) => !ignore.includes(e))
  11. .map((e) => {
  12. if (e.includes("--ignore")) {
  13. return false;
  14. }
  15. let list = e.substr(2).split("/");
  16. let parents = list.slice(0, list.length - 1);
  17. let name = path.basename(e, ".js");
  18. let curr = modules;
  19. let prev = null;
  20. let key = null;
  21. parents.forEach((k) => {
  22. if (!curr[k]) {
  23. curr[k] = {};
  24. }
  25. prev = curr;
  26. curr = curr[k];
  27. key = k;
  28. });
  29. let ep = files(e);
  30. if (ep.default) {
  31. let service = new ep.default();
  32. if (name == "index") {
  33. prev[key] = service;
  34. } else {
  35. curr[name] = service;
  36. }
  37. } else {
  38. console.error(`Service must export default [${e}]`);
  39. }
  40. });
  41. Vue.prototype.$service = store.$service = modules;
  42. }