vue封裝全局組件

首先寫是需要封裝的組件

NavBarTitle.vue

<template>
    <div class="NavBarTitle">
        <van-nav-bar
                left-arrow
                @click-left="onClickLeft"
        >
        <div slot="title">{{NavBarTitle}}</div>
        </van-nav-bar>
    </div>
</template>
<style>
    .NavBarTitle .van-nav-bar__text,.van-nav-bar .van-icon{
        color:#333333;
    }
    .NavBarTitle /deep/ .van-nav-bar__title{
        font-size: 17px;
        color: #000;
        /*padding-top: 0.16rem;*/
    }
</style>
<script>
    import { NavBar } from 'vant';
    export default {
        props: ['NavBarTitle'],
        data() {
            return  {
//                NavBarTitle:"期中考試"
//                NavBarTitle:this.NavBarTitle
            }
        },
        components: {
            [NavBar.name]:NavBar,
        },
        methods:{
            onClickLeft(){
                this.$router.go(-1);
            }
        }
    }
</script>

然后在同目錄創(chuàng)建一個(gè)NavBarTitle.js文件
NavBarTitle.js

// 組件全局注冊(cè)
import Vue from 'vue'

import NavBarTitlefrom '@/components/NavBarTitle/NavBarTitle.vue'//封裝共用

// 組件庫(kù)
const Components = [
NavBarTitle
]

// 注冊(cè)全局組件
Components.map((com) => {
Vue.component(com.name, com)
})

export default Vue

最后在main.js中引用就行了瓮床,注意還是要在掛載實(shí)例前去引用
main.js

 import './components/NavBarTitle'

通常在組件使用前,需要引入后再注冊(cè)击困,但如果高頻組件多了后盒齿,每次都這樣做,不僅新增很多代碼,效率還低接谨!我們應(yīng)該如何優(yōu)化呢?
可以借助一下webpack的require.context() 方法來創(chuàng)建自己的(模塊)上下文塘匣,從而實(shí)現(xiàn)自動(dòng)動(dòng)態(tài)require組件
先在components文件夾(這里面都是些高頻組件)添加一個(gè)叫g(shù)lobal.js的文件脓豪,在這個(gè)文件里使用require.context 動(dòng)態(tài)將需要的高頻組件統(tǒng)統(tǒng)打包進(jìn)來,然后在main.js文件中引入global.js的文件.這樣就無需再手動(dòng)一個(gè)個(gè)引入了忌卤。

globalComponents.js

import Vue from 'vue'

function changeStr(str) {//首字符轉(zhuǎn)大寫
    return str.charAt(0).toUpperCase() + str.slice(1)
}
/*
 * require.context(path,sta,name)
 * path:其組件目錄的相對(duì)路徑
 * sta: 是否查詢其子目錄
 * name:匹配基礎(chǔ)組件文件名的正則表達(dá)式    /\w.(vue|js)/
 */
const requireComponent = require.context('./', false, /\.vue$/)
// 查找同級(jí)目錄下以vue結(jié)尾的組件 對(duì)應(yīng)每個(gè)匹true配的文件名
const install = () => {
    requireComponent.keys().forEach(fileName => {
        let config = requireComponent(fileName); //獲取組件配置
        // console.log(config) // ./child1.vue 然后用正則拿到child1
        let componentName = changeStr( //獲取組件名
            fileName.replace(/^\.\//, '').replace(/\.\w+$/, '')
        )
        // 如果這個(gè)組件選項(xiàng)是通過 `export default` 導(dǎo)出的扫夜,
        // 那么就會(huì)優(yōu)先使用 `.default`,
        // 否則回退到使用模塊的根驰徊。
        Vue.component(componentName, config.default || config)
    })
}
export default {
    install // 對(duì)外暴露install方法
}

main.js

import globalComponents from './plugins/globalComponents.js
Vue.use(globalComponents)

page.vue 頁(yè)面引用文件

 <search-comp @onSearch="handleOnSearch" :conditionsData="conditionsData"></search-comp>

// 注意:組件中的name要跟文件名稱一致

另外一直方式历谍,直接加到this.$xxx

https://www.jb51.net/article/144952.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辣垒,隨后出現(xiàn)的幾起案子望侈,更是在濱河造成了極大的恐慌,老刑警劉巖勋桶,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件脱衙,死亡現(xiàn)場(chǎng)離奇詭異侥猬,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)捐韩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門退唠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人荤胁,你說我怎么就攤上這事瞧预。” “怎么了仅政?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵垢油,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我圆丹,道長(zhǎng)滩愁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任辫封,我火速辦了婚禮硝枉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倦微。我一直安慰自己妻味,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布欣福。 她就那樣靜靜地躺著弧可,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劣欢。 梳的紋絲不亂的頭發(fā)上棕诵,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音凿将,去河邊找鬼校套。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牧抵,可吹牛的內(nèi)容都是我干的笛匙。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼犀变,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼妹孙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起获枝,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤蠢正,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后省店,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚣崭,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笨触,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了雹舀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芦劣。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖说榆,靈堂內(nèi)的尸體忽然破棺而出虚吟,到底是詐尸還是另有隱情,我是刑警寧澤签财,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布串慰,位于F島的核電站,受9級(jí)特大地震影響荠卷,放射性物質(zhì)發(fā)生泄漏模庐。R本人自食惡果不足惜烛愧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一油宜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怜姿,春花似錦慎冤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至但狭,卻和暖如春披诗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背立磁。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工呈队, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唱歧。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓宪摧,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親颅崩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子几于,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容