在我的“个人页面”项目中,我使用的是 NuxtJS,它的@nuxt/content
内容模块和 Vuetify UI 框架。
最近发现一个问题:在markdown文件里面的Vuetify组件在生成静态站点时没有渲染,但是在开发模式下运行项目时可以正确渲染。我检查了@nuxt/content中关于这个问题的问题,发现了 2 个问题:#221和#700
主要讨论在issue #221内。
不久,我从问题中了解到:Vuetify 加载程序不检查降价文件的内容,这就是为什么在运行nuxt generate
Vuetify 组件时(可以在没有导入的任何组件中使用)在降价文件中使用时不会呈现。在nuxt dev
模式下 Vuetify 组件被正确渲染,因为 treeshake 在开发模式下被禁用
在 markdown 文件中,我只使用了一个组件 - <v-alert>
,所以最后的解决方案是下一个:
import Vue from 'vue'
import { VAlert } from 'vuetify/lib'
Vue.component('VAlert', VAlert)
我需要在显示降价文件内容的页面上使用此代码。有了它,nuxt generate
结果就是我想要的 - 如果在 Markdown 文件中使用,Vuetify 组件将成功呈现。
但是这段代码也带来了一个问题:如果我使用它运行它,当nuxt dev
我Unexpected token 'export'
访问显示带有 Vuetify 组件的降价页面时会出错。
最后的问题是:如何使用模板从页面中删除这些导入以显示降价内容?可能类似于“条件导入”(使这些导入仅在运行时执行nuxt generate
)或其他什么?
当然,每次我在开发模式下运行项目时,我都可以评论/取消评论,但我不确定这是正确的方式。