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

引用超级全局组件方案

分类: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 梅雨东风

要回复文章请先登录注册

鹅鹅鹅鹅

鹅鹅鹅鹅 (作者)

回复 w***@163.com :
看这报错标签上是有动态参数吗
2024-06-19 11:14
w***@163.com

w***@163.com

回复 鹅鹅鹅鹅 :
按照下面说的,去掉了微信的判断,适配 app了,但是报错,啥原因?? reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property 'props' of undefined at eval (<anonymous>:12:23)
2024-06-18 15:44
w***@163.com

w***@163.com

按照下面说的,去掉了微信的判断,适配 app了,但是报错,啥原因?? reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught TypeError: Cannot read property 'props' of undefined at eval (<anonymous>:12:23)
at (app-service.js:4787:1)
at __webpack_require__ (app-service.js:80:30)
at eval (<anonymous>:9:37)
2024-06-18 15:10
鹅鹅鹅鹅

鹅鹅鹅鹅 (作者)

回复 3***@qq.com :
根标签是view吗,或者直接打开不会渲染的那个页面试一下看行不行,看看跟跳转有没有关系
2024-06-13 16:13
3***@qq.com

3***@qq.com

全局配置的 在小程序里 有些页面会渲染dom 有些页面不会渲染 非常奇怪 比如首页会渲染 跳转到下一页就不渲染了 结构里都没有
"insetLoader": {
"config": {
"customLoading": "<customLoading ref='customLoading' id='customLoading'></customLoading>"
},
// 全局配置
"label": ["customLoading"],
"rootEle": "view"
},
2024-06-13 13:42
禾下月

禾下月

回复 禾下月 :
const curPage = pagesMap[route] 这个取出来的值为undefined
有对这个属性是否存在值 做判断 还是运行到判断里面了 导致报错了
2024-06-07 16:40
禾下月

禾下月

这一步会报错
compiler.script.content
2024-06-07 16:35
z***@foxmail.com

z***@foxmail.com

APP端是否无法加载出来,也注释了微信判断
init(that) {
needHandle = initPages(that)
// 转换为路由和配置的映射对象
needHandle && (pagesMap = getPagesMap())
}
2024-05-09 22:23
王花火

王花火

只能在uni app 页面中使用 一点写了vue自定义组件又不能使用了 components:{ a, b } 组件a b 都不能用 this.$refs.xxx 找不到全局注册的组件
2024-04-30 10:51
s***@163.com

s***@163.com

回复 d***@dms365.com :
把nodejs版本升到18以上就可以了,我之前是16.14.0,升到了18.16.0可以正常使用了
2024-04-09 10:49