egoist / docute

📚 Effortless documentation, done right.
https://docute.egoist.dev
MIT License
3.8k stars 427 forks source link

RFC: component mixins #185

Closed egoist closed 5 years ago

egoist commented 5 years ago

Docute added componentMixins option in 4.1.0, so you can now use it to add Vue mixins that apply to all markdown components. But what if you want to add some mixins for a specific markdown component? What's the desired way in your opinion?

  1. Use code blocks with a special comment
```js
// @docute-component-mixin
export default {
  data() {
    return { count: 0 }
  },
  methods: {
    inc() {
      this.count++
    }
  }
}

Clicked: {{ count }} times


2. Use code blocks with code block option

````markdown
```js {mixin:true}
export default {
  data() {
    return { count: 0 }
  },
  methods: {
    inc() {
      this.count++
    }
  }
}

Clicked: {{ count }} times


3. Use `script` tag

`script` tags which have a `export default` statement will be considered as Vue mixins.

````markdown
<script>
export default {
  data() {
    return { count: 0 }
  },
  methods: {
    inc() {
      this.count++
    }
  }
}
</script>

Clicked: {{ count }} times

<button v-on:click="inc">click me!</button>
egoist commented 5 years ago

Implemented: https://docute.org/guide/markdown-features#adding-vue-mixin