# root
**Repository Path**: Yimi178/root
## Basic Information
- **Project Name**: root
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-05-07
- **Last Updated**: 2026-05-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Root
借助 Vite 模拟出虚拟根组件(支持SFC的App.vue),解决 uniapp 无法使用公共组件问题
[](https://www.npmjs.com/package/@uni-ku/root)
[](https://www.npmjs.com/package/@uni-ku/root)
[](https://www.npmjs.com/package/@uni-ku/root)
> [!Tip]
> 我们提供基于 Uniapp 技术支持服务及定制开发,详细需求可添加作者了解,联系QQ: 319619193
> [!Note]
> Root 支持 HBuilderX 或者 CLI 创建的 Uniapp Vue3 项目
>
> 新增可通过 useXXX() 组合式方法调用的例子,适用于各大由此方案实现的组件库,请往下拉至例子区域
### 🎏 支持
- 自定义虚拟根组件文件命名(App.ku.vue文件命名支持更换)
- 更高灵活度的获取虚拟根组件实例(获取KuRootView的Ref)
- 自动提取PageMeta到页面顶层(自动提升小程序PageMeta[用于阻止滚动穿透]组件)
### 📦 安装
```bash
pnpm add -D @uni-ku/root
yarn add -D @uni-ku/root
npm install -D @uni-ku/root
```
### 🚀 使用
#### 1. 引入 `@uni-ku/root`
```ts
// vite.config.(js|ts)
import Uni from '@dcloudio/vite-plugin-uni'
import UniKuRoot from '@uni-ku/root'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
// 若存在改变 pages.json 的插件,请将 UniKuRoot 放置其后
UniKuRoot(),
Uni()
]
})
```
> [!Note]
> **CLI**:`直接编写` 根目录下的 vite.config.(js|ts)
>
> **HBuilderX**:在根目录下 `创建` vite.config.(js|ts) 并写入
#### 2. 创建 `App.ku.vue`(可自定义此根组件名称,请下拉至功能参考设置)
通过标签 `
(点击展开) 功能一:自定义虚拟根组件名称(默认:App.ku.vue)
#### 1. 通过设置 vite.config.(js|ts) 下插件的参数 `rootFileName` 来自定义虚拟根组件名称
```ts
// vite.config.(js|ts)
import Uni from '@dcloudio/vite-plugin-uni'
import UniKuRoot from '@uni-ku/root'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
UniKuRoot({
// 默认含后缀 .vue,直接设置命名即可
rootFileName: 'KuRoot',
}),
// ...other plugins
]
})
```
#### 2. 创建/修改虚拟根组件为 `KuRoot.vue`,即可实现自定义,其余功能不变
```ts
// App.ku.vue 文件重命名为 KuRoot.vue
```
(点击展开) 功能二:使用虚拟根组件实例(即:App.ku.vue)
> 有两种启用方式,局部或全部启用
#### 一、 局部启用
#### 1. 暴露出 App.ku.vue 里所要被使用的变量或方法
```vue
(点击展开) 功能三:过滤掉不需要根组件的页面
如果遇到一些不需要根组件的页面,可以设置 `excludePages` 选项来过滤
> `excludePages` 选项支持采用 glob 模式进行编写
```ts
// vite.config.(js|ts)
import Uni from '@dcloudio/vite-plugin-uni'
import UniKuRoot from '@uni-ku/root'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
UniKuRoot({
excludePages: [
'pages/exclude.vue',
'pages/exclude/**/*.vue'
],
}),
Uni()
]
})
```
(点击展开) 示例一:全局共享组件例子:Toast
> 不仅是 Toast 组件,还可以是 Message、LoginPopup 等等
- 🔗 [查看以下完整项目例子](https://github.com/uni-ku/root/tree/main/examples)
1. 编写 Toast 组件
```vue
(点击展开) 示例二:全局共享布局例子:ConfigProvider
> 不仅仅只有ConfigProvider,还能是Layout、NavBar、TabBar等等!
如果你正在使用wot组件,那么可以直接从这里获取到相关使用文档[点击查看](https://wot-design-uni.cn/component/config-provider.html#%E5%85%A8%E5%B1%80%E5%85%B1%E4%BA%AB)
1. 以 Wot 组件库中 WdConfigProvider 为例子
```vue
(点击展开) 示例三:Wot的 Toast、Notify 组件的调用方式
> 以下示例以 Toast 为例子
1. 挂载组件
```vue
#### 赞赏榜单