b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Vite插件【md文件渲染为js文件】的技术栈vite插件

电脑杂谈  发布时间:2021-01-23 16:19:37  来源:网络整理

编写一个基于vite的插件,该插件将md文件渲染为js文件。

尤达用这种方式描述了维特:

“基于浏览器的本机ES导入的开发服务器。

使用浏览器解析导入,在服务器端按需编译和返回,完全跳过了打包的概念,

服务器可以使用了。

同时,它不仅支持Vue文件,而且还修复了热更新,并且随着模块数量的增加,热更新速度不会降低。

对于生产环境,相同的代码可以与汇总一起打包。 “

此博客的作者希望共享用于编写Vite插件的技术堆栈[将md文件呈现为js文件]:md插件源代码地址

相关文章技术堆栈Vite插件概念

在撰写本文时,尚无有关如何编写Vite插件的官方文档。因此,目前,您只能通过阅读Vite源代码来了解有关如何编写插件的更多信息。

qq桌面pro v282450魔秀主题_看vcd学双语-追赶跑跳碰(1书+1vcd+1c_es文件浏览器pro 1.1.9

我们需要首先阐明一些相关概念,以方便后续工作:

但是其他文件类型的导入无法直接处理。每次浏览器在代码中导入时,都会由Vite的开发服务器进行编译,然后直接提供给浏览器。

例如:* .vue文件将首先在开发服务器上编译,然后发送到浏览器。

这些导入可以是javascript,vue,css文件。也可以是其他类型的文件,但需要在vite中指定变异工具。

这就是Vite开发服务器如此有用的原因-它解决了浏览器的局限性。

创建初始插件

Vite插件只是一个对象,我们可以先返回一个空对象。

创建一个用作插件的js文件plugins / md.ts:

看vcd学双语-追赶跑跳碰(1书+1vcd+1c_qq桌面pro v282450魔秀主题_es文件浏览器pro 1.1.9

export function md()  {
 return {}
}

然后,在vite.config.js中像这样使用它:

import { md } from "./plugins/md";
export default {
  plugins: [md()],
}

一个细心的朋友可能会发现我们导出的是函数而不是对象。这是为了方便将来在插件中添加自定义选项。

例如:如果要指定自定义MD文件样式功能,则可以执行viteAutoRoute({h1_color:'red'})

开发环境

现在,让我们使用之前创建的md文件。

使用vite插件的configureServer选项:

看vcd学双语-追赶跑跳碰(1书+1vcd+1c_es文件浏览器pro 1.1.9_qq桌面pro v282450魔秀主题

// @ts-nocheck
import path from "path";
import fs from "fs";
import marked from "marked";
const mdToJs = (str) => {
  const content = JSON.stringify(marked(str));
  return `export default ${content}`;
};
export function md() {
  return {
    configureServer: [
      // 用于开发
      async ({ app }) => {
        app.use(async (ctx, next) => {
          // koa
          if (ctx.path.endsWith(".md")) {
            ctx.type = "js";
            const filePath = path.join(process.cwd(), ctx.path);
            ctx.body = mdToJs(fs.readFileSync(filePath).toString());
          } else {
            await next();
          }
        });
      },
    ]
  };
}

首先,创建一个函数mdToJs,其中包含路由js文件的必需内容。主要功能是使用marked.js库将字符串呈现为标准md文件。然后,我们在vite开发服务器中为中间件创建一个configureServer数组。

每当vite导入javascript或vue文件时,它都会向该文件发送一个请求到其dev服务器,必要时执行一些转换,然后以浏览器可以处理的形式将其发送回去。

遇到诸如来自“ ./markdown/intro.md”的导入简介之类的信息时,

这将要求文件扩展名为.md。

因此,我们要做的是拦截请求并返回我们生成的moduleContent的主体,并将其类型声明为js。

最后,我们将此configureServer数组添加到返回的对象中,以供Vite使用。

看到这一点后,Vite将我们的列表(总共1个)中间件与自己的中间件合并。

现在,我们可以在Markdowm组件中使用以下md文件:

<template>
  <article class="markdown-body" v-html="content">article>
template>
<script lang="ts">
import { ref } from "vue";
export default {
  props: {
    content: {
      type: String,
      required: true,
    },
  },
};
script>

现在,我们可以运行yarn开发,以查看路由的工作方式:3000 /#/ doc / intro。

生产环境

但是,当我们运行yarn build时,它将不使用我们刚刚完成的configureServer,因为在生产环境中,它使用汇总编译而不是Vite的dev服务器。

因此,我们需要添加一些其他配置以使其在生产环境中正常工作:

// @ts-nocheck
import path from "path";
import fs from "fs";
import marked from "marked";
const mdToJs = (str) => {
  const content = JSON.stringify(marked(str));
  return `export default ${content}`;
};
export function md() {
  return {
	// 这块是之前定义的 configureServer 代码
    transforms: [
      {
        // 用于 rollup // 插件
        test: (context) => context.path.endsWith(".md"),
        transform: ({ code }) => mdToJs(code),
      },
    ],
  };
}

在这里,我们使用了vite插件的transforms选项。这使我们能够定义汇总的插件功能。

es文件浏览器pro 1.1.9_看vcd学双语-追赶跑跳碰(1书+1vcd+1c_qq桌面pro v282450魔秀主题

我们使用带有.md后缀的模块,并返回所需的js内容。

实质上,它与开发服务器具有相同的作用。

现在,我们的自动路由可以在本地开发和生产环境中使用。

路线渲染

插件完成后,将通过h函数呈现到相应页面。

import Intro from "./markdown/intro.md";
import Install from "./markdown/install.md";
import Getstarted from "./markdown/get-started.md";
import { h } from "vue";
import Markdown from "./components/Markdown.vue";
const md = (string) => h(Markdown, { content: string, key: string });
const history = createWebHashHistory();
export const router = createRouter({
  history: history,
  routes: [
    { path: "/", component: Home },
    {
      path: "/doc",
      component: Doc,
      children: [
        { path: "", redirect: "/doc/intro" },
        { path: "intro", component: md(Intro) },
        { path: "get-started", component: md(Getstarted) },
        { path: "install", component: md(Install) },
      ],
    },
  ],
});

摘要

希望您能了解Vite的工作原理以及如何编写一些基本的插件。

以下是完整功能代码的地址:

Kaite-ui官方网站页面:

github开源地址:github开源地址


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-349922-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...