zyk2019
zyk2019
  • 发布:2019-03-28 10:26
  • 更新:2020-08-15 18:32
  • 阅读:3526

公共组件怎么引用,不想每个页面单独引用,但是写在app.vue里面不生效

分类:uni-app
2019-03-28 10:26 负责人:无 分享
已邀请:
尹成诺

尹成诺 - 辣鸡前端

  • 4***@qq.com

    如果是vite + vue3 的开发环境,我写了个插入模板或脚本的vite插件:

    https://www.npmjs.com/package/vite-plugin-vue-insert-code

    2022-05-25 13:15

  • 4***@qq.com

    比如每个page内添加,可以这么使用

    // vite.config.ts

    import pages from './src/pages.json'


    export default defineConfig({

    plugins: [

    atomstyle(),

    insertcode({

    rules: [

    {

    match: path => {

    // 只对pages添加代码

    const item: any = pages.pages.find((t: any) => {

    const regex = new RegExp(^.*/${t.path}\.vue$, 'i')

    const x = regex.test(path)

    t.regex = ^.*/${t.path}\.vue$

    return x

    })

    if (item) {

    // console.log('插入代码到页面:', item.path)

    return true

    } else {

    return false

    }

    },

    // 脚本顶部增加导入组件的代码

    addScriptTop: import TipStack from '@/components/User/TipStack.vue'\n,

    // 模板底部增加一个公用的登录和绑定手机组件

    addTemplateBottom: <TipStack/>\n,

    // 脚本顶部增加导入组件的代码

    // addScriptTop: import TipStack from '@/components/User/TipStack.vue'\nimport Loading from '@/components/Loading/Loading.vue'\n,

    // // 模板底部增加一个公用的登录和绑定手机组件

    // addTemplateBottom: <TipStack/>\n<Loading/>\n,

    // debug: true,

    }

    ]

    }),

    uni(),

    ]

    2022-05-25 13:19

1***@qq.com

1***@qq.com - nobody

你应该好好看看 官方提供的hello-uniapp代码 ,里面有很多有用功能。
在 main.js 里面引入组件

import pageHead from './components/page-hea  

Vue.component('page-head', pageHead)  

App.mpType = 'app'  

const app = new Vue({  
    store,  
    ...App  
})  
app.$mount()

使用时直接<page-head></page-head>放到要引入的页面

  • zyk2019 (作者)

    没有明白我的意思,这个是全局组件,还是需要每个页面都引入才行,怎么样能不用全局引入每个页面都覆盖

    2019-03-28 15:06

  • 1***@qq.com

    @zhangyongkang2008@qq.com:你的意思是,注册全局组件不用写到template里面,每个页面就有了?vue-cli可以写在app.vue里,每个页面都会有。好像uni-app里面这样做不了,只能在每个页面template里面写入进去

    2019-03-28 15:51

5***@qq.com

5***@qq.com - 留点蛛丝马迹

你好,这个问题找到解决方案了吗?

  • 3***@qq.com

    我的解决方案是创建一个baseView的模板,然后把需要公共使用的都放到这个模板里。其他view的根节点使用baseView 就可以了。如果要有交互的话,使用emit或者vuex的状态管理来使用

    2019-12-25 17:00

该问题目前已经被锁定, 无法添加新回复