自学内容网 自学内容网

【sgCreateCallAPIFunction】自定义小工具:敏捷开发→调用接口方法代码生成工具

 

<template>
  <div :class="$options.name" class="sgDevTool">
    
    <sgHead />
    <div class="sg-container">
      <div class="sg-start">
        <div style="margin-bottom: 10px">调用接口方法定义列表</div>

        <el-input
          style="margin-bottom: 10px"
          ref="textareaValue1"
          type="textarea"
          :placeholder="`请粘贴sf.js中定义的调用方法代码片段(含注释内容)`"
          v-model="textareaValue1"
          show-word-limit
        />

        <el-button type="primary" @click="createResult">运行</el-button>
      </div>
      <div class="sg-center">→</div>

      <div class="sg-end">
        <ouputTextarea ref="ouputTextarea" v-model="textareaValue2" />
      </div>
    </div>
  </div>
</template>

<script>
import sgHead from "@/vue/components/sgHead";
import ouputTextarea from "@/vue/components/ouputTextarea";
export default {
  name: "sgCreateCallAPIFunction",
  components: {
    sgHead,
    ouputTextarea,
  },
  data() {
    return {

      textareaValue1: localStorage[`sgDevTool/leftTextArea`],
      textareaValue2: "",
    };
  },
  watch: {
    textareaValue1(newValue, oldValue) {
      newValue && this.createResult(newValue);
      localStorage[`sgDevTool/leftTextArea`] = newValue;
    },
  },
  created() {},
  methods: {
    createResult(d) {
      if (this.textareaValue1.includes("//")) {
        let texts = this.$g.getMultiLineTexts(this.textareaValue1);

        let apis = [];
        texts.forEach((v, i) => {
          if (v.includes(`_this)`)) {
            apis.push({
              label: texts[i - 1],
              functionName: v.split("({")[0],
              params: v
                .split("({")[1]
                .split("}")[0]
                .split(",")
                .map((v) => {
                  v = v.trim();
                  if (v === "cb") {
                    return `cb: (d) => { 
  //回调函数
},`;
                  } else {
                    return v;
                  }
                }),
            });
          }
        });

        let r = apis.map(
          (v) => `${v.label}
this.$f.${v.functionName}({
  ${v.params.join(": ,\n")}
},this);`
        );

        this.textareaValue2 = r.join("\n\n");

        this.$refs.ouputTextarea.copyResult(); //自动复制生成结果
      } else {
        return this.$message.error(this.$refs.textareaValue1.$attrs.placeholder);
      }
    },
    
  },
};
</script>

<style lang="scss" scoped>
@import "~@/css/sgDevTool";
</style>


原文地址:https://blog.csdn.net/qq_37860634/article/details/142325477

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!