genDirectives(ast) {
    let code = []
    ast.directives.forEach(v => {
      code.push(
        `{name:"${v.name}",directiveName:"${changeCase.lowerCase(
          changeCase.camelCase(v.name),
        )}",rawName:"${v.rawName}"${
          v.value
            ? `,value:(${v.value}),expression:${JSON.stringify(v.value)}`
            : ''
        }${v.arg ? `,arg:"${v.arg}"` : ''}${
          v.modifiers ? `,modifiers:${JSON.stringify(v.modifiers)}` : ''
        }}`,
      )
    })
    code = `${COMMON.directive.name}: [${code.join(',')}]`
    return code
  }
gen common directive, this function would be override by SubClass