当前位置: 首页 > 知识库问答 >
问题:

如何在VuePress Vue组件中将YAML文件作为对象动态加载?

庄浩言
2023-03-14

我正在尝试将SwaggerUI嵌入到我的vuepress站点中。我走了这么远

<template><div :id="id">swagger</div>
</template>

<script>
// import { SwaggerUIBundle, SwaggerUIStandalonePreset } from "swagger-ui-dist"
import SwaggerUI from "swagger-ui";
import x from '@/upload-api.yml'
export default {
  props: {
    src: String
  },
  data() {
    return {
      id: null,
      spec: {}
    };
  },
  mounted() {
    this.id = `swagger${this._uid}`;
    // over here, I want to use `this.src` to pull the data
    console.log(x);
  },
  updated() {
    if (this.id !== null) {
      SwaggerUI({
        domNode: this.$el,
        // dom_id: `#${this.id}`,
        spec: this.spec,
      });
    }
  }
};
</script>

<style></style>

在我的插件我有:

const path = require('path');
module.exports = {
  chainWebpack (config, isServer) {
    config.module
      .rule("compile")
      .test(/\.ya?ml$/)
      .type("json")
      .use("yaml")
      .loader("yaml-loader");
    config.resolve.alias.set("@", path.resolve("."));

这是我试过的一些其他东西

console.log(require(this.src));

这让我很生气

[Vue warn]: Error in mounted hook: "Error: Cannot find module '@/upload-api.yml'"

但这是可行的

console.log(require("@/upload-api.yml"));

共有1个答案

阚正真
2023-03-14

我最后做了以下事情

我也尝试了一个解决方案类似静态图像src在Vue.js模板

# Upload

<SwaggerUi :spec="require('@/upload-api.yml')" />
<template>
  <div>swagger</div>
</template>

<script>
import SwaggerUI from "swagger-ui";
export default {
  props: {
    spec: Object
  },
  mounted() {
    SwaggerUI({
      domNode: this.$el,
      spec: this.spec
    });
  }
};
</script>

<style>
@import "~swagger-ui/dist/swagger-ui.css";
</style>

还有一个插件

const path = require('path');
module.exports = {
  chainWebpack (config, isServer) {
    config.module
      .rule("compile")
      .test(/\.ya?ml$/)
      .type('json')
      .use("yaml")
      .loader("yaml-loader");
    config.resolve.alias.set("@", path.resolve("."));
    // config is an instance of ChainableConfig
  },
}

upload-api.yml

openapi: "3.0.2"
info:
  title: OpenWeatherMap
  version: '1.0'
paths:
  /weather:
    get:
 类似资料:
  • 问题内容: 如何加载YAML文件并将其转换为Python JSON对象? 我的YAML文件如下所示: 问题答案: 你可以使用PyYAML 并在ipython控制台中:

  • 问题内容: 如何将YAML文件解析/读入Python对象? 例如,此YAML: 对于此Python类: 我正在使用PyYAML。 问题答案: 如果您的YAML文件如下所示: 并且您已经这样安装: Python代码如下所示: 变量现在包含带有树数据的字典。如果使用PrettyPrint打印,则会得到类似以下内容的信息: 因此,现在我们已经了解了如何将数据获取到我们的Python程序中。保存数据同样简

  • 问题内容: 我有一个yaml文件,当前写为: 但是,此yaml文件经常更改,因此每次可以使用不同的值添加新条目: 我从使用gopkg.in/yaml.v2包开始就知道,如果所有值都相同,我可以解析yaml文件,例如: 在上面的示例中,它仅适用于密钥/狗密钥,而不适用于其他密钥。 当新值经常添加到yaml文件中时,如何在Go中执行此操作? 谢谢 问题答案: 如果您现在不精确的结构,则应该使您的结构看

  • 问题内容: 在angularjs中,我创建了一些加载JSON对象的对象: 在控制器中,我可以这样称呼它: 如您所见,我正在加载文件。 对文件执行相同的处理流程是什么? 在我的情况下 是对象列表。 有人知道如何使用或其他方式获取CSV数据吗? 问题答案: 您必须将CSV文件解析为一个数组。您可以在其他替代方法中看到此问题 然后,您将得到如下结果:

  • 问题内容: 我有以下代码: 它不起作用。我给了两个按钮,如果按下第一个,则应该加载。如果第二个被按下,则应加载。 我怎样才能做到这一点? 问题答案: 您不能以这种方式将HTML嵌入Javascript。基本上,您想要的是嵌入一个脚本元素,单击按钮时指向某个javascript文件。可以通过将事件与DOM结合来完成:

  • 建议我有这个嵌套数组的对象 所以我想用新的动态id将对象插入到服务数组中,我试过了 但我明白了 而我想得到这个 所以我怎么能这样做提前感谢帮助