Markdown and Vue SFC
Each Markdown file is first compiled into HTML, and then converted to a Vue SFC. In other words, you can write a Markdown file like a Vue SFC:
- Blocks
<script>and<style>are treated as Vue SFC blocks as they are. In other words, they are hoisted from the<template>block to the top-level of SFC. - Everything outside
<script>and<style>will be compiled into HTML, and be treated as Vue SFC<template>block.
Warning
As Vue SFC can contain only one <script> element, you should avoid using more than one <script> in VuePress markdown.
Here comes an example:
Input
_Hello, {{ msg }}_ <RedDiv> _Current count is: {{ count }}_ </RedDiv> <button @click="count++">Click Me!</button> <script setup> import { h, ref } from 'vue' const RedDiv = (_, ctx) => h( 'div', { class: 'red-div', }, ctx.slots.default(), ) const msg = 'Vue in Markdown' const count = ref(0) </script> <style> .red-div { color: red; } </style>Output
Hello, Vue in Markdown
Current count is: 0
