uni 全局组件

灯火 Lv3

vue3-inset-loader

编译阶段在sfc模板指定位置插入自定义内容,适用于vite构建的vue应用,常用于小程序需要全局引入组件的场景。(由于小程序没有开放根标签,没有办法在根标签下追加全局标签,所以要使用组件必须在当前页面引入组件标签)

因为 vue-inset-loader 不支持vue3 + vite ,我就改了下,现在只支持 vue3 + vite了

第一步 安装

将文件放在 plugins/vue3-inset-loader 下

安装依赖

1
pnpm i strip-json-comments@3.1.1 @vue/compiler-sfc -D

第二步 vite.config.js注入loader

1
2
3
4
5
6
7
8
9
10
11
12
import { defineConfig } from 'vite'
import vue3InsetLoaderPlugin from './plugins/vue3-inset-loader'

// https://vitejs.dev/config/
export default defineConfig({
build: {
sourcemap: process.env.NODE_ENV === 'development',
},
plugins: [
vue3InsetLoaderPlugin
],
})

第三步 pages.json配置文件中添加insetLoader

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

"insetLoader": {
"config":{
"confirm": "<BaseConfirm ref='confirm'></BaseConfirm>",
"abc": "<BaseAbc ref='BaseAbc'></BaseAbc>"
},
// 全局配置
"label":["confirm"],
"rootEle":"div"
},
"pages": [
{
"path": "pages/tabbar/index/index",
"style": {
"navigationBarTitleText": "测试页面",
// 单独配置,用法跟全局配置一致,优先级高于全局
"label": ["confirm","abc"],
"rootEle":"div"
}
},
]

配置说明

  • config (default: {})
    定义标签名称和内容的键值对
  • label(default: [])
    需要全局引入的标签,打包后会在所有页面引入此标签
  • rootEle(default: ``)
    根元素的标签类型,没有时直接放在元素上面(vue3支持非根元素写法)

labelrootEle 支持在单独页面的style里配置,优先级高于全局配置

源码

vue3-inset-loade

  • 标题: uni 全局组件
  • 作者: 灯火
  • 创建于 : 2024-01-31 01:56:24
  • 更新于 : 2024-01-31 01:57:45
  • 链接: https://blog.juniverse.top/2024/01/31/uni-g-compontents/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论