renderjs.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. exports.uniRenderjsPlugin = void 0;
  7. const debug_1 = __importDefault(require("debug"));
  8. const compiler_sfc_1 = require("@vue/compiler-sfc");
  9. const uni_cli_shared_1 = require("@dcloudio/uni-cli-shared");
  10. const debugRenderjs = (0, debug_1.default)('uni:h5-renderjs');
  11. function uniRenderjsPlugin() {
  12. return {
  13. name: 'uni:h5-renderjs',
  14. transform(code, id) {
  15. const { type, name } = (0, uni_cli_shared_1.parseRenderjs)(id);
  16. if (!type) {
  17. return;
  18. }
  19. debugRenderjs(id);
  20. if (!name) {
  21. this.error((0, uni_cli_shared_1.missingModuleName)(type, code));
  22. }
  23. return `${(0, compiler_sfc_1.rewriteDefault)(code.replace(/module\.exports\s*=/, 'export default '), '_sfc_' + type)}
  24. ${type === 'renderjs' ? genRenderjsCode(name) : genWxsCode(name)}`;
  25. },
  26. };
  27. }
  28. exports.uniRenderjsPlugin = uniRenderjsPlugin;
  29. function genRenderjsCode(name) {
  30. return `export default Comp => {
  31. if(!Comp.$renderjs){Comp.$renderjs = []}
  32. Comp.$renderjs.push('${name}')
  33. if(!Comp.mixins){Comp.mixins = []}
  34. Comp.mixins.push({beforeCreate(){ this['${name}'] = this },mounted(){ this.$ownerInstance = this.$gcd(this, true) }})
  35. Comp.mixins.push(_sfc_renderjs)
  36. }`;
  37. }
  38. function genWxsCode(name) {
  39. return `export default Comp => {
  40. if(!Comp.$wxs){Comp.$wxs = []}
  41. Comp.$wxs.push('${name}')
  42. if(!Comp.mixins){Comp.mixins = []}
  43. Comp.mixins.push({beforeCreate(){ this['${name}'] = _sfc_wxs }})
  44. }`;
  45. }