日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue 實現創建全局組件,并且使用Vue.use() 載入方式

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

自定義vue組件,一般是局部引用的方式載入,使用的時候,在應用的組件中使用 import moduleName from ‘module’ 導入,在components中注冊

<template> <div class='app-NewsInfo'> <h3>{{info.title}}</h3> <!-- 新聞評論子組件。 --> <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>

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

1.首先創建一個文件夾loading

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

Vue 實現創建全局組件,并且使用Vue.use() 載入方式

2.創建一個loading.vue的組件。

該組件中除了組件的基礎結構,并無其他內容。它的作用是用來加載準備自定義的組件,最后將loading組件加載到全局的Vue中,這樣就一次性完成了所有自定義組件的加載,非常方便。

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

3.創建自定義組件

這里以一個簡單封裝的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.b3g6.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'], //接收父組件數據 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.創建index.js,用來導出所有自定義組件。

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

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

5.在main.js中,導入并使用loading組件。

import loading from ’./lib/loading’;

Vue.use(loading);

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

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

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

通過這種方式,就能實現組件的全局引用。

這種做的好處是對于復用性非常高的組件,省去了每次導入的麻煩;

缺點是無法直觀的看到組件引入和注冊,對于不清楚的人來說看不懂組件名的意義。

其實官方文檔中已經提到了一種解決方案:

https://cn.vuejs.org/v2/guide/components-registration.html#基礎組件的自動化全局注冊

基礎組件的自動化全局注冊

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

所以會導致很多組件里都會有一個包含基礎組件的長列表:

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 (或在內部使用了 webpack 的 Vue CLI 3+),那么就可以使用 require.context 只全局注冊這些非常通用的基礎組件。這里有一份可以讓你在應用入口文件 (比如 src/main.js) 中全局導入基礎組件的示例代碼:

import Vue from ‘vue’ import upperFirst from ‘lodash/upperFirst’import camelCase from ‘lodash/camelCase’const requireComponent = require.context( // 其組件目錄的相對路徑‘./components’, // 是否查詢其子目錄 false, // 匹配基礎組件文件名的正則表達式/Base[A-Z]w+.(vue|js)$/ )requireComponent.keys().forEach(fileName => { // 獲取組件配置 constcomponentConfig = requireComponent(fileName)// 獲取組件的 PascalCase 命名 const componentName = upperFirst(camelCase(// 剝去文件名開頭的 ./ 和結尾的擴展名fileName.replace(/^./(.*).w+$/, ‘$1’)) )// 全局注冊組件 Vue.component(componentName,// 如果這個組件選項是通過 export default 導出的,// 那么就會優先使用 .default,// 否則回退到使用模塊的根。componentConfig.default || componentConfig ) })

補充知識:vue組件注冊 Vue.extend Vue.component Vue.use的使用 以及組件嵌套

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

/** * vue.extend用法 * 使用基礎 Vue 構造器,創建一個“子類”。參數是一個包含組件選項的對象。 * 注意:此實例可以掛載到根實例之外 */ const Profile = Vue.extend({ template: ’<p>{{firstName}} {{lastName}} aka {{alias}}</p>’, data: function () { return { firstName: ’Walter’, lastName: ’White’, alias: ’Heisenberg’ } } }) // 創建 Profile 實例,并掛載到一個元素上。 new Profile().$mount(’#opp’)let navbar = { template: `<div class=’nav’> <input type='text' placeholder='請輸入關鍵字'/> </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}); // 組件注冊成功// logo組件Vue.component('logo', { template: `<div class=’logo’> <img v-bind:src='http://www.b3g6.com/bcjs/logoSrc'> </div>`, inject: [’logoSrc’], data:()=>{ return { } }, mounted() { console.log(this.$parent) }})// header組件 組件調用 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:’我是頭部導航欄’ } }, mounted() { console.log(this.$parent) }});// vue根實例let vm = new Vue({ el:'#app', data:{ name: ’Marry’ }, mounted(){ console.log(’vue根實例初始化完畢’) }})console.log(vm);

以上這篇Vue 實現創建全局組件,并且使用Vue.use() 載入方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持好吧啦網。

標簽: Vue
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
青青伊人久久| 国产日韩欧美三级| 欧美激情aⅴ一区二区三区 | 日本午夜精品视频在线观看| 亚洲精品2区| 色爱av综合网| 宅男在线一区| 欧美天堂视频| 91tv亚洲精品香蕉国产一区| 国产h片在线观看| 日韩中文影院| 午夜日韩av| 日本精品另类| 国产精品99久久免费| 成人在线视频免费| 天堂网av成人| 蜜臀av亚洲一区中文字幕| 亚洲人成网77777色在线播放| 亚洲一区二区免费在线观看| 亚洲免费一区三区| 亚洲tv在线| 午夜亚洲福利| 免费日韩一区二区三区| 欧美+亚洲+精品+三区| 红桃视频国产一区| 日韩国产欧美一区二区三区| 麻豆91小视频| 午夜久久影院| 国产精品亚洲综合久久| 日本不卡免费高清视频在线| 免费看的黄色欧美网站 | 国产成人精品一区二区三区免费| 日韩欧美自拍| 最新国产精品视频| 精品免费视频| 免费人成精品欧美精品| 国产精品久久亚洲不卡| 日本不卡免费高清视频在线| 在线一区二区三区视频| av免费不卡国产观看| 欧美极品一区二区三区| 亚洲一区区二区| 成人国产综合| 国产午夜一区| 日韩在线一区二区| 日韩欧美一区免费| 国产日韩欧美三级| 久久亚洲色图| 99视频精品全国免费| 久久不卡日韩美女| 综合一区在线| 久久精品国产www456c0m| 国产欧美日韩亚洲一区二区三区| av亚洲在线观看| 国产高清不卡| 国产精品久久久亚洲一区| 一区二区高清| 久久国产精品毛片| 黄色日韩在线| 天堂网在线观看国产精品| 日韩av二区| 国产一区二区三区精品在线观看| 国产欧美日韩在线观看视频 | 国产一区二区三区黄网站 | 日韩精品欧美大片| 日本亚洲视频| 在线观看视频免费一区二区三区| 黄色日韩在线| 丝袜脚交一区二区| 中文精品电影| 日韩av资源网| 国产乱论精品| 红杏一区二区三区| 日韩免费看片| 91久久国产| 免费在线观看成人| 日韩激情综合| 国产欧美日韩一级| 国产欧美亚洲一区| 美日韩一区二区三区| 日韩一区二区三免费高清在线观看 | 视频一区二区三区入口| 自拍日韩欧美| 亚洲啊v在线免费视频| 国产精品久久久久久久免费软件| 国产精品久久久久久久久久白浆 | 国产成人调教视频在线观看| 日韩在线综合| 免费在线观看日韩欧美| 日韩av不卡在线观看| 精品久久网站| 亚洲一区二区三区四区五区午夜| 日本不卡一区二区三区| 福利一区和二区| 伊人精品在线| 国产精品免费不| 欧美在线观看视频一区| 日本成人在线不卡视频| 亚洲精品**中文毛片| 久久午夜视频| 日产午夜精品一线二线三线| 黄色亚洲大片免费在线观看| 欧美日韩18| 久久久久蜜桃| 国产精品黄色片| 鲁大师成人一区二区三区 | 久久精品影视| 日韩精品导航| 亚洲国产专区| 吉吉日韩欧美| 老牛国内精品亚洲成av人片| 蜜桃久久久久久久| 久久一区二区中文字幕| 久久影院一区二区三区| 中文字幕亚洲影视| 欧美成人高清| 91视频精品| 麻豆视频一区二区| 日本伊人午夜精品| 久热精品在线| 欧美成人精品| 国产 日韩 欧美 综合 一区 | 亚洲欧洲美洲av| 麻豆成人综合网| 欧美一区网站| 日本午夜精品| 日本免费一区二区视频| 亚洲免费中文| 午夜一级在线看亚洲| 亚洲精品123区| 丝袜亚洲精品中文字幕一区| 偷拍欧美精品| 久久国产精品99国产| 精品91久久久久| 午夜在线精品| 免费在线欧美视频| 欧美在线观看视频一区| 色婷婷综合网| 99久久激情| 99riav国产精品| 99在线观看免费视频精品观看| 精品中文字幕一区二区三区av| 麻豆极品一区二区三区| 天堂俺去俺来也www久久婷婷| 日韩区欧美区| 麻豆国产精品| 日韩1区在线| 午夜久久美女| 中文字幕亚洲在线观看| 国产伦理久久久久久妇女| 国产精品极品| 欧美国产视频| 亚洲天堂一区二区| 免费视频久久| 久久国产欧美日韩精品| av在线资源| 亚洲美女久久| 麻豆视频在线观看免费网站黄 | 日韩三区四区| 国产精品久久久久久久久久10秀 | 久久精品资源| 日韩视频二区| 欧美aaaaaa午夜精品| 亚洲精品极品少妇16p| 国产乱子精品一区二区在线观看| 亚洲黄色网址| 天堂av一区| 久久在线免费| 欧美激情在线精品一区二区三区| 国产一区清纯| 久久99久久人婷婷精品综合| 日韩中文影院| 国产精品综合色区在线观看| 亚洲国产一区二区在线观看 | 狠狠爱成人网| 精品美女在线视频| 亚洲精品护士| 1000部精品久久久久久久久| 国产亚洲一区| 亚洲精品成人一区| 国产二区精品| 中文在线中文资源| 国产精品nxnn| 日韩黄色在线观看| 1024精品一区二区三区| 国产aa精品| 免费精品一区| 国产午夜久久av| 亚洲精品系列| 亚洲制服欧美另类| 免费日韩精品中文字幕视频在线| 日韩电影二区| 国产精品99一区二区三| 美女尤物国产一区| 国产欧美91| 国产精品九九| 麻豆成人91精品二区三区| 国产欧美日韩精品一区二区三区| 爽好久久久欧美精品| 国产一区二区三区四区大秀|