鹅鹅鹅鹅
鹅鹅鹅鹅
  • 发布:2021-09-22 19:26
  • 更新:2026-05-20 14:24
  • 阅读:27308

引用超级全局组件方案

分类:uni-app

vue-inset-loader

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

github:https://github.com/1977474741/vue-inset-loader
用得上顺便点个star

第一步 安装

npm install vue-inset-loader --save-dev  

第二步 vue.config.js注入loader

module: {  
    rules: [  
      {  
        test: /\.vue$/,  
        use:{  
            loader: "vue-inset-loader"  
            // // 针对Hbuilder工具创建的uni-app项目  
            // loader: path.resolve(__dirname,"./node_modules/vue-inset-loader")  
        }  
      }  
    ]  
},  
// 支持自定义pages.json文件路径  
// options: {  
//     pagesPath: path.resolve(__dirname,'./src/pages.json')  
// }  

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

"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: "div")
    根元素的标签类型,缺省值为div,支持正则,比如匹配任意标签 ".*"

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

13 关注 分享
木杉丶 期许_ snakelzero 霍霍 1***@qq.com 3***@qq.com 3***@qq.com px15229 HRK_01 大志笔记 x***@163.com 梅雨东风 蔡cai

要回复文章请先登录注册

___K

___K

回复 8***@qq.com :
APP没效果的需要在node_modules目录下找到vue-inset-loader文件夹修改index.js 61行init的代码,判断只兼容小程序,加入app就可以了。
2026-05-20 14:24
___K

___K

APP没效果的需要在node_modules目录下找到vue-inset-loader文件夹修改index.js 61行init的代码,改为(原本只兼容小程序):
function init(that){
const supportedPlatforms = [
'mp-weixin',
'mp-alipay',
'mp-baidu',
'mp-qq',
'mp-toutiao',
'app-plus', // App 端
]
const isSupported = supportedPlatforms.includes(process.env.VUE_APP_PLATFORM)

needHandle = isSupported && initPages(that)
needHandle && (pagesMap = getPagesMap())
}
2026-05-20 14:23
8***@qq.com

8***@qq.com

安卓app没效果
2026-04-08 13:41
m***@xiziyuju.com

m***@xiziyuju.com

回复 1***@qq.com :
解决了吗
2026-01-12 14:30
1***@qq.com

1***@qq.com

小程序,在前进和后退切换中不起作用
2024-08-27 12:49
hzbgg

hzbgg

最近一直报这个错为啥 哪里都正常配置了 甚至之前都还好好的 吧vue-inset-loader关掉编译就正常 打开就报错
Module build failed (from E:/EXM/in-school/in-school-anxin/node_modules/vue-inset-loader/index.js):
10:47:45.434 TypeError: Cannot read properties of null (reading 'content')
10:47:45.445 at Object.<anonymous> (E:\EXM\in-school\in-school-anxin\node_modules\vue-inset-loader\index.js:42:22)
10:47:45.690 ERROR Build failed with errors.
2024-08-22 10:49
正知名

正知名

回复 l***@163.com :
这里!@uni-ku/root: https://github.com/uni-ku/root
2024-08-14 15:13
3***@qq.com

3***@qq.com

回复 3***@qq.com :
解决了 没事了 注释源码就行了
2024-07-05 14:16
3***@qq.com

3***@qq.com

H5没效果,不支持吗?
2024-07-05 14:04
l***@163.com

l***@163.com

有没有 vue3 + ts + vite 版本的 支持app、小程序、h5
2024-07-03 17:48