00:00:00
vite-plugin-html-layout 
此插件专用于 vite 
安装 
npm i vite-plugin-html-layout
使用 
- 指定一个 html 页面为模板页。
 - 指定一个文件夹为存放具体页面地方。
 - 页面解析基于 parse5.js
 - 页面插入基于 handlebars.js
 
vite.config.js
ts
import { defineConfig } from "vite";
import { resolve } from "path";
import CreatHtmlLayout from "vite-plugin-html-layout";
export default defineConfig({
    root: "src",
    plugins: [
        CreatHtmlLayout({
            template: resolve(__dirname, "index.html"),
            components: resolve(__dirname, "components/"),
        }),
    ],
    publicDir: resolve(__dirname, "public"),
    build: {
        outDir: resolve(__dirname, "dist"),
        emptyOutDir: true,
    },
});CreatHtmlLayout ---- 'template' 必须项目:指定具体页面为模板页面。 ---- 'components' 可选项目:指定 components 的存放路径。
'root' 必须项目:为具体页面存放路径,此为 vite 的根目录设置。
'publicDir' 公共文件夹,尽量不要放在 root 里,影响打包效果。 --- 你可以直接在项目文件夹里访问里面的 js、css、image 等等,例如:
<link rel="stylesheet" href="/css/public.css">表示 文件夹 publicDir => css 文件夹 =>public.css。'outDir' 为打包后的存放目录,由于'root'指定了文件夹,所以'outDir'是相对'root'的相对路径。
layout.html
html
<!DOCTYPE html>
<html lang="zh">
    <head>
        <meta charset="UTF-8" />
        <title>{{title}}</title>
        <meta http-equiv="X-UA-Compatible" content="IE=edge" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0" />
        <meta name="keywords" content="{{keyword}}" />
        <meta name="description" content="{{description}}" />
        <link rel="stylesheet" href="./css/public.css" />
    </head>
    <body>
        {{{body}}}
        <script src="/js/jquery.js"></script>
    </body>
</html>/src/index.html
html
<lcode> title="首页", keyword="asdasdasd", description="这是描述" </lcode>
<link rel="stylesheet" href="/css/public.css" />
<link rel="stylesheet" href="/css/swiper.css" />
<div class="aa">
    <script>
        for (var i = 2010; i <= 2029; i++) {
            document.write('<span id="ST' + i + '">' + i + "年</span>");
        }
    </script>
    qaawe
</div>
<script head src="/js/aa.js"></script>
<script body>
    var xx = $(".aa").html();
    console.log(xx);
</script>
<style>
    .aa {
        color: red;
    }
</style>- lcode 标签:用于值替换,每一个必须','隔开。xx='xx'的格式
 - link 标签:会按顺序添加的 head 的尾部,可以随意置放,但限于无外部标签。
 - script 标签:添加 head 表示 按顺序添加 head 的尾部,添加 body 表示 按顺序添加 body 的尾部,无添加的 script 则保持在文件中本来的位置。
 - style 标签:会按顺序添加的 head 的尾部并保持在 link 之后,可以随意置放,但限于无外部标签。
 
components/test.html
html
<b>这是组件中的test.html</b>
<script body src="/js/jqueryjs"></script>- 除了不支持 lcode 标签,其他的和 template 页面用法一样。
 - components 尽量在 template 页面里使用。
 - 在 layout 页面里,只会解析成 html,对 script、link、style 不做出任何处理。