成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Vue 實(shí)現(xiàn)創(chuàng)建全局組件,并且使用Vue.use() 載入方式

瀏覽:175日期:2022-12-10 15:45:31

自定義vue組件,一般是局部引用的方式載入,使用的時(shí)候,在應(yīng)用的組件中使用 import moduleName from ‘module’ 導(dǎo)入,在components中注冊(cè)

<template> <div class='app-NewsInfo'> <h3>{{info.title}}</h3> <!-- 新聞評(píng)論子組件。 --> <comment :id='id'></comment> </div></template><script>import comment from '../sub/comment.vue';export default { data() { return { info: {}, id: this.$route.query.id }; }, methods: {}, components: { comment },</script>

那么如果某個(gè)組件經(jīng)常復(fù)用,豈不是每次在新組建中引用都要導(dǎo)入一次嗎?是的 。這種情況下可以將組件封裝成全局組件,一次導(dǎo)入之后,全局都可以使用。 雖然這種做法不太常見,但是這里還是將其整理出來(lái)。

1.首先創(chuàng)建一個(gè)文件夾loading

用來(lái)保存需要全局引用的組件,并且存放一些配置文件。

Vue 實(shí)現(xiàn)創(chuàng)建全局組件,并且使用Vue.use() 載入方式

2.創(chuàng)建一個(gè)loading.vue的組件。

該組件中除了組件的基礎(chǔ)結(jié)構(gòu),并無(wú)其他內(nèi)容。它的作用是用來(lái)加載準(zhǔn)備自定義的組件,最后將loading組件加載到全局的Vue中,這樣就一次性完成了所有自定義組件的加載,非常方便。

<template> <div class='loading'></div></template><script>export default { data() { return {}; }, methods: {}};</script><style scoped></style>

3.創(chuàng)建自定義組件

這里以一個(gè)簡(jiǎn)單封裝的mint-ui輪播圖為例。

<template> <div class='app-turns'> <mt-swipe :auto='4000'> <mt-swipe-item v-for='(item,i) of list' :key='i'> <img :src='http://www.piao2010.com/bcjs/item.img_url' @click='detail' :data-id='item.id'> </mt-swipe-item> </mt-swipe> </div></template><script>export default { name: 'navbar', props: ['list'], //接收父組件數(shù)據(jù) data() { return { }; }, methods: { detail(e) { var id = e.target.dataset.id; var url = `/GoodsInfo/${id}`; this.$router.push(url); } }, created() {}};</script><style scoped>.mint-swipe { height: 150px;}.mint-swipe img { width: 100%;}</style>

4.創(chuàng)建index.js,用來(lái)導(dǎo)出所有自定義組件。

import turns from ’./turns.vue’const loading = { install: function (Vue) { Vue.component(’turns’, turns) }}export default loading;

其實(shí)到這里組件封裝就結(jié)束了,下面再演示下如何使用。

5.在main.js中,導(dǎo)入并使用loading組件。

import loading from ’./lib/loading’;

Vue.use(loading);

這樣就將組件全局引用成功了!

6.在需要使用的地方,直接使用組件名即可。

<template> <div class='app-home'> <turns :list='list'></turns> </div></template>

通過(guò)這種方式,就能實(shí)現(xiàn)組件的全局引用。

這種做的好處是對(duì)于復(fù)用性非常高的組件,省去了每次導(dǎo)入的麻煩;

缺點(diǎn)是無(wú)法直觀的看到組件引入和注冊(cè),對(duì)于不清楚的人來(lái)說(shuō)看不懂組件名的意義。

其實(shí)官方文檔中已經(jīng)提到了一種解決方案:

https://cn.vuejs.org/v2/guide/components-registration.html#基礎(chǔ)組件的自動(dòng)化全局注冊(cè)

基礎(chǔ)組件的自動(dòng)化全局注冊(cè)

可能你的許多組件只是包裹了一個(gè)輸入框或按鈕之類的元素,是相對(duì)通用的。我們有時(shí)候會(huì)把它們稱為基礎(chǔ)組件,它們會(huì)在各個(gè)組件中被頻繁的用到。

所以會(huì)導(dǎo)致很多組件里都會(huì)有一個(gè)包含基礎(chǔ)組件的長(zhǎng)列表:

import BaseButton from ‘./BaseButton.vue’ import BaseIcon from‘./BaseIcon.vue’ import BaseInput from ‘./BaseInput.vue’export default { components: {BaseButton,BaseIcon,BaseInput } }

而只是用于模板中的一小部分:

<BaseInput v-model=“searchText” @keydown.enter=“search” />

<BaseButton @click=“search”>

幸好如果你使用了 webpack (或在內(nèi)部使用了 webpack 的 Vue CLI 3+),那么就可以使用 require.context 只全局注冊(cè)這些非常通用的基礎(chǔ)組件。這里有一份可以讓你在應(yīng)用入口文件 (比如 src/main.js) 中全局導(dǎo)入基礎(chǔ)組件的示例代碼:

import Vue from ‘vue’ import upperFirst from ‘lodash/upperFirst’import camelCase from ‘lodash/camelCase’const requireComponent = require.context( // 其組件目錄的相對(duì)路徑‘./components’, // 是否查詢其子目錄 false, // 匹配基礎(chǔ)組件文件名的正則表達(dá)式/Base[A-Z]w+.(vue|js)$/ )requireComponent.keys().forEach(fileName => { // 獲取組件配置 constcomponentConfig = requireComponent(fileName)// 獲取組件的 PascalCase 命名 const componentName = upperFirst(camelCase(// 剝?nèi)ノ募_頭的 ./ 和結(jié)尾的擴(kuò)展名fileName.replace(/^./(.*).w+$/, ‘$1’)) )// 全局注冊(cè)組件 Vue.component(componentName,// 如果這個(gè)組件選項(xiàng)是通過(guò) export default 導(dǎo)出的,// 那么就會(huì)優(yōu)先使用 .default,// 否則回退到使用模塊的根。componentConfig.default || componentConfig ) })

補(bǔ)充知識(shí):vue組件注冊(cè) Vue.extend Vue.component Vue.use的使用 以及組件嵌套

我就廢話不多說(shuō)了,大家還是直接看代碼吧~

/** * vue.extend用法 * 使用基礎(chǔ) Vue 構(gòu)造器,創(chuàng)建一個(gè)“子類”。參數(shù)是一個(gè)包含組件選項(xiàng)的對(duì)象。 * 注意:此實(shí)例可以掛載到根實(shí)例之外 */ const Profile = Vue.extend({ template: ’<p>{{firstName}} {{lastName}} aka {{alias}}</p>’, data: function () { return { firstName: ’Walter’, lastName: ’White’, alias: ’Heisenberg’ } } }) // 創(chuàng)建 Profile 實(shí)例,并掛載到一個(gè)元素上。 new Profile().$mount(’#opp’)let navbar = { template: `<div class=’nav’> <input type='text' placeholder='請(qǐng)輸入關(guān)鍵字'/> </div>`, data:()=>{ return { } }, mounted() { console.log(this.$parent) }};const MyPlugin = { install:(vue, arguments)=>{ console.log(arguments); vue.component(’navbar’, navbar); }}Vue.use(MyPlugin, {a:1, b:2}); // 組件注冊(cè)成功// logo組件Vue.component('logo', { template: `<div class=’logo’> <img v-bind:src='http://www.piao2010.com/bcjs/logoSrc'> </div>`, inject: [’logoSrc’], data:()=>{ return { } }, mounted() { console.log(this.$parent) }})// header組件 組件調(diào)用 provie inject傳值Vue.component('buttoncounter', { template: `<div class=’header’> <logo></logo> {{header}} </div>`, provide:{ logoSrc:’https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582433251882&di=de459decf2e157552b97a4879ae4135d&imgtype=0&src=http%3A%2F%2Fwww.suntop168.com%2Fblog%2Fzb_users%2Fupload%2F2014%2F2%2Fadf89182.jpg’ }, data:()=>{ return { header:’我是頭部導(dǎo)航欄’ } }, mounted() { console.log(this.$parent) }});// vue根實(shí)例let vm = new Vue({ el:'#app', data:{ name: ’Marry’ }, mounted(){ console.log(’vue根實(shí)例初始化完畢’) }})console.log(vm);

以上這篇Vue 實(shí)現(xiàn)創(chuàng)建全局組件,并且使用Vue.use() 載入方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Vue
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
一区二区三区欧美亚洲| 欧美午夜在线| 亚洲精品看片| 欧美国产禁国产网站cc| 91免费版在线| 久久综合99re88久久爱| 99久久er热在这里只有精品66| 精品区一区二区| 春色校园综合激情亚洲| 欧美一区二区三区电影| 国产乱人伦精品一区二区在线观看| 精品视频一区 二区 三区| 日韩电影在线观看电影| 久热精品视频| 日韩国产在线观看| 一区二区三区国产盗摄| 亚洲国产综合91精品麻豆| 欧美综合77777色婷婷| 亚洲va韩国va欧美va精品| 噜噜噜在线观看免费视频日韩| 偷窥少妇高潮呻吟av久久免费| 免费一级欧美片在线播放| 亚洲成人黄色小说| 久久一区二区精品| 久久不见久久见免费视频1| 欧美日韩亚洲综合在线| 国产一区二区主播在线| 91精品国产高清一区二区三区蜜臀 | 亚洲成人资源网| 亚洲在线黄色| 免费精品视频在线| 日韩一区二区精品| 91蜜桃传媒精品久久久一区二区| 日本一区二区不卡视频| 亚洲欧洲精品一区| 性做久久久久久| 欧美日韩一区二区在线观看| 国产精品小仙女| 国产午夜精品久久久久久免费视| 精品1区2区3区4区| 亚洲成av人片一区二区梦乃| 91福利社在线观看| 国产精品99久久久久| 国产日韩精品一区二区浪潮av| 午夜精品一区二区三区四区| 国产精品国产三级国产三级人妇| 亚洲免费激情| 麻豆国产精品777777在线| 日韩一级二级三级精品视频| 欧美激情麻豆| 亚洲成av人在线观看| 91麻豆精品国产综合久久久久久 | 色偷偷久久一区二区三区| 久久99热这里只有精品| 精品国产乱码久久久久久夜甘婷婷| 欧美国产专区| 亚洲午夜电影网| 欧美卡1卡2卡| 99国产精品久久久久| 亚洲免费看黄网站| 欧美日韩一区二区三区免费看| bt欧美亚洲午夜电影天堂| 亚洲视频 欧洲视频| 欧美综合一区二区| 97精品国产露脸对白| 亚洲午夜久久久久久久久久久| 欧美日韩国产一级片| 91麻豆swag| 亚洲一区二区视频在线观看| 欧美高清视频在线高清观看mv色露露十八 | 精品欧美一区二区三区精品久久| 欧美日韩免费精品| 日韩av二区在线播放| 精品区一区二区| 在线视频精品| 国产精品白丝jk黑袜喷水| 中文字幕一区二区三区视频| 欧美中文字幕一区二区三区 | 欧美一区二区成人| 欧美日韩一区二区三区免费| 日韩综合小视频| 精品电影一区二区| 免费在线播放第一区高清av| 成人网在线播放| 亚洲综合在线电影| 日韩视频免费观看高清完整版在线观看 | 国产91高潮流白浆在线麻豆| 中文字幕在线一区免费| 欧美日韩一区高清| 国产综合自拍| 狠狠色狠狠色综合系列| 亚洲欧美一区二区视频| 91麻豆精品91久久久久久清纯| 亚洲美女色禁图| 国产成人自拍在线| 亚洲精品乱码久久久久| 日韩午夜三级在线| 国产视频久久| 不卡的电影网站| 日韩精品电影在线观看| 欧美韩日一区二区三区四区| 欧美午夜在线一二页| 亚洲图片欧洲图片日韩av| 久久国产精品72免费观看| 国产精品久久久久7777按摩 | 亚洲尤物视频在线| 精品福利一区二区三区| 久久性色av| 国内久久视频| 国产激情视频一区二区三区欧美| 一区二区欧美国产| 久久久久久免费网| 欧美日韩精品一区二区三区| 亚洲欧洲一区二区在线观看| 国产精品综合久久| 午夜在线电影亚洲一区| 国产精品午夜春色av| 欧美一区二区日韩一区二区| 麻豆av一区二区三区| 亚洲午夜精品国产| 成人国产精品免费网站| 青青草国产精品亚洲专区无| 亚洲少妇屁股交4| 亚洲精品在线免费播放| 欧美偷拍一区二区| 亚洲免费网站| 欧美日本不卡| 成人免费看的视频| 美女网站在线免费欧美精品| 亚洲美腿欧美偷拍| 久久久国产午夜精品| 欧美久久免费观看| 色婷婷av一区二区三区软件| av成人免费观看| 欧美日韩亚洲一区二区三区在线观看 | 日日骚欧美日韩| 亚洲欧美综合另类在线卡通| 久久综合九色综合欧美98| 51午夜精品国产| 日本韩国精品在线| 国产视频一区三区| 亚洲区第一页| 国产综合网站| 欧美久久久久久久| jiyouzz国产精品久久| 国产成人精品影视| 激情av综合网| 久久精品国产免费| 美国十次了思思久久精品导航| 亚洲制服丝袜av| 亚洲欧美色综合| 中文字幕一区二区在线观看| 国产日韩精品久久久| 久久久噜噜噜久噜久久综合| 日韩一区和二区| 日韩视频在线你懂得| 欧美一区二区三级| 日韩西西人体444www| 日韩免费高清av| 日韩欧美在线观看一区二区三区| 在线播放国产精品二区一二区四区 | 一本色道久久综合亚洲精品不卡| 合欧美一区二区三区| 欧美精品一区在线| 91蜜桃传媒精品久久久一区二区| a级高清视频欧美日韩| 国产91露脸合集magnet| 国产精品系列在线观看| 国产在线视频一区二区| 国产呦萝稀缺另类资源| 国产一区91精品张津瑜| 国产精品一区二区久久不卡 | 一区在线观看| 在线观看的日韩av| 亚洲午夜激情在线| 日韩午夜激情| 亚洲欧美激情诱惑| 亚洲欧美日韩另类精品一区二区三区 | 日韩毛片一二三区| 一区二区三区免费观看| 亚洲综合激情另类小说区| 一区二区三区四区av| 亚洲中国最大av网站| 亚洲综合精品久久| 午夜精品影院在线观看| 日韩av电影免费观看高清完整版| 日韩电影在线免费观看| 久久99日本精品| 国产成人一区二区精品非洲| 成人av电影在线播放| 91麻豆高清视频| 激情综合久久| 亚洲尤物精选| 欧美在线观看视频一区二区| 7777精品伊人久久久大香线蕉完整版 | 国产农村妇女精品| 亚洲欧洲日韩av| 亚洲国产欧美在线| 久久精品国产一区二区三区免费看| 国产精品资源在线观看|