鹅鹅鹅鹅
鹅鹅鹅鹅
  • 发布:2021-09-22 19:26
  • 更新:2024-08-27 12:49
  • 阅读:21682

引用超级全局组件方案

分类: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里配置,优先级高于全局配置

12 关注 分享
木杉丶 期许_ snakelzero 霍霍 1***@qq.com 3***@qq.com 3***@qq.com px15229 HRK_01 正月的阳光 x***@163.com 梅雨东风

要回复文章请先登录注册

y***@163.com

y***@163.com

微信小程序已经好使了 支付宝小程序为啥不好使了,同一套代码编译的
2023-02-15 13:39
l***@gmail.com

l***@gmail.com

注意, 默认情况下, 非小程序环境或无效配置不予处理
一下是源码
```js
function init(that){
const isWx = process.env.VUE_APP_PLATFORM == 'mp-weixin'
// 首次需要对pages配置文件做解析,并判断是否为有效配置
// 非小程序环境或无效配置不予处理
needHandle = isWx && initPages(that)
// 转换为路由和配置的映射对象
needHandle && (pagesMap = getPagesMap())
}
```
2022-12-09 18:02
8***@qq.com

8***@qq.com

使用uniapp复现后,总是提示"TypeError: Cannot read property 'createElement' of undefined"。打印的
document为undefined,导致组件无法挂载上,help!!!!!!!!~ TAT...
2022-11-30 18:13
3***@qq.com

3***@qq.com

这个插件支持vue3吗
2022-11-09 10:51
3***@qq.com

3***@qq.com

留给后来者,补全作者的使用说明:
1.安装 npm install vue-inset-loader --save-dev

2.新建vue.config.js
内容:
const path = require('path')
module.exports = {
configureWebpack: {
module: {
rules: [{
test: /\.vue$/,
use: {
loader: path.resolve(__dirname, "./node_modules/vue-inset-loader")
},
}]
},
}
}

3.pages.json
pages,前面加上下面这段

"insetLoader":{
"config":{
"dialog": "<你的组件名></你的组件名>"
},
// 全局配置
"label":["dialog"],
"rootEle":"view"
},

4.main.js (全局注册组件)

import 你的组件名 from '你的组件在的路径'
Vue.component('你的组件名 ',你的组件名 )

5.关闭你在运行的小程序,重新编译
2022-10-31 17:26
3***@qq.com

3***@qq.com

可以用,感谢大佬,github已star
2022-10-31 16:53
1***@qq.com

1***@qq.com

大佬,有没有视频教学怎么用的呀?
2022-10-17 23:09
1***@qq.com

1***@qq.com

回复 2***@qq.com :
请问下是怎么解决的
2022-09-29 16:53
2***@qq.com

2***@qq.com

终于解决了
2022-09-16 11:06
2***@qq.com

2***@qq.com

回复 3***@qq.com :
你好,你那边是解决了uniapp组成全局组件的问题是吧,这边也是跟着配置,但没插入,能加下好友聊一下吗
2022-09-15 14:46