采用ejs的方式
安装语法依赖
1
| npm install vite-plugin-ejs -D
|
配置暴露数据
vite.config.js文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| import { fileURLToPath, URL } from 'node:url' import { defineConfig, loadEnv } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx' import { ViteEjsPlugin } from 'vite-plugin-ejs'
const ejsData = { ENV: loadEnv(process.env.VITE_USER_NODE_ENV, process.cwd(), ''), CDNs: { css: [ "https://unpkg.com/animate.css@4.1.1", "https://unpkg.com/bootstrap@5.3.1/dist/css/bootstrap.min.css", "https://unpkg.com/bootstrap-icons@1.10.0/font/bootstrap-icons.css" ], js: [ "https://unpkg.com/@popperjs/core@2.11.6/dist/umd/popper.min.js", "https://unpkg.com/bootstrap@5.3.1/dist/js/bootstrap.min.js" ] } }
export default defineConfig({ plugins: [ vue(), vueJsx(), ViteEjsPlugin(ejsData) ], resolve: { alias: { '@': fileURLToPath(new URL('./src', import.meta.url)) } } })
|
看到ViteEjsPlugin(ejsData)
了吗,就是这个方法,把你定义的ejsData变量暴露到了index.html文件
使用数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <link rel="icon" href="/logo.png"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title><%= ENV.VITE_APP_TITLE %></title> <% for (let path of CDNs.css) { %> <link href="<%= path %>" rel="preload" as="style" /> <link href="<%= path %>" rel="stylesheet" /> <% } %> </head> <body> <div id="app"></div>
<script type="module" src="/src/main.js"></script> <% for (let path of CDNs.js) { %> <script defer src="<%= path %>"></script> <% } %> </body> </html>
|
看到了吗?ENV.VITE_APP_TITLE
和CDNs.css 、 CDNs.js
都是ejs暴露出来的,采用ejs循环CDNs的数据即可
效果