xinlei3166 / vitepress-theme-demoblock

一个基于 Vitepress 的主题插件,它可以帮助你在编写文档的时候增加 Vue 示例。
https://xinlei3166.github.io/vitepress-demo/
MIT License
200 stars 50 forks source link

无法解析jsx语法 #33

Closed haiting closed 1 year ago

haiting commented 2 years ago

直接在 MD文件里面写 Vue组件,Vue组件如果是带有jsx语法,会无法渲染,如:

` <template #item="{ element }">

Inner Card content
    </template>

`

:extra参数无法渲染

haiting commented 2 years ago

创建一个 card.md 文件,代码如下:

:::demo

<template>
  <a-card  :extra="<a>More</a>"> Inner Card content </a-card>
</template>

:::

由于:extra="<a>More</a>" 是jsx语法,页面渲染会报错,

报错如下: [plugin:vite:vue] Transform failed with 1 error: /Users/bou/working/code/vue-pro/sinogear-frontend-pro-vue/packages/sinogear-frontend-component-vue/docs/src/components/dict-select.md:16:81: ERROR: Unterminated regular expression

xinlei3166 commented 2 years ago

vue template 里不能使用jsx啊

而且你这也不是jsx代码 语法也不对啊

这代码确定能跑?

haiting commented 2 years ago

旧项目的docs用 markdown-itmarkdown-it-container 等配置markdown确实能跑起来

haiting commented 2 years ago

创建一个 permission.md 文件,代码如下:

<template>
  <a-pagination :total="300"  />
</template>

<script lang="jsx">
export default {
  name: 'SGPagination',
  methods: {
    itemRender({type, originalElement}) {
      if (type === 'prev') {
        return <a>上一页</a>;
      } else if (type === 'next') {
        return <a>下一页</a>;
      }
      return originalElement;
    },
  },
};
</script>

函数 itemRender 属于 jsx 语法,页面会报错,

报错如下: [plugin:vite:vue] Transform failed with 1 error: /docs/src/components/dict-select.md:25:32: ERROR: Unterminated regular expression

xinlei3166 commented 1 year ago

v3.0.0已支持jsx/tsx,参考:main/playground/vitepress/guide/index.md

vitepress-theme-demoblock@3.0.0 vitepress@1.0.0-beta.3 vue@3.3.4