最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.0 CLI - 2.6 - 組件的復(fù)用入門教程

 更新時(shí)間:2018年09月14日 09:55:56   作者:nDos  
這篇文章主要介紹了 vue3.0 CLI - 2.6 - 組件的復(fù)用,非常不錯(cuò),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下

我的 github 地址 - vue3.0Study - 階段學(xué)習(xí)成果都會(huì)建立分支。

==========================

定義一個(gè)基礎(chǔ)組件

這個(gè)基礎(chǔ)組件,是導(dǎo)航條中 可以復(fù)用 的基礎(chǔ)組件 單個(gè)導(dǎo)航。

基礎(chǔ)組件【導(dǎo)航組件】基礎(chǔ)的功能是能夠顯示文字,單擊的交互方式。明確任務(wù)目標(biāo)之后,進(jìn)行開發(fā)。

在 component 目錄下新建 Base 目錄,Base 下新建文件 TopNav.vue。加入如下代碼:

<template>
 <div class="topnav">
  {{title}}
 </div>
</template>
<script>
export default {
 name: 'topnav',
 props: ['title'],
 data: function () { return {
  text: '導(dǎo)航條'
 } }
}
</script>

在 About.vue 中加入以下紅色部分的代碼:

<template>
 <div class="about">
 <top-nav title="推薦"/>
 <HelloWorld msg="vue 官方相關(guān)資料的鏈接"/>
 </div>
</template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
import TopNav from '@/components/Base/TopNav.vue'
export default {
 name: 'home',
 components: {
 HelloWorld, TopNav
 }
}
</script>

通過(guò)以上兩步,就在 About.vue 中引入新組件 TopNav。其實(shí) HelloWorld 也是可以復(fù)用的。

所謂的復(fù)用是啥意思呢?如下:

<top-nav title="推薦"/>
<top-nav title="軍事"/>
<top-nav title="社會(huì)"/>
<top-nav title="科技"/>

這既是所謂的復(fù)用啦。 title 是 TopNav.vue 的 props 屬性中的內(nèi)容。以上看出,props 是一個(gè)數(shù)組,里邊每個(gè)元素,是一個(gè)將要從父組件中傳遞過(guò)來(lái)的【變量】,對(duì),變量,就是這么理解。

上篇文章提到過(guò) 全局注冊(cè) 和 局部注冊(cè);這個(gè)例子,是 【局部注冊(cè)組件】。在把它變?yōu)椤救肿?cè)組件】之前,先 git push 一下。

好的,在變【全局】之前,有個(gè)問(wèn)題:全局 和 局部 有什么區(qū)別?

上面的例子看見了,要用 HelloWorld 或 TopNav,必須先 import。而全局的,不用 import。

把組件變?yōu)槿纸M件

任何模塊 ( 這時(shí)候把組件理解為模塊 ) 不可能不用 import 就可以用,全局注冊(cè)組件,只是在 main.js 中進(jìn)行 import,然后通過(guò) Vue.component( params ) 這個(gè)函數(shù)進(jìn)行全局注冊(cè)。

所以全局注冊(cè)組件也并不神秘,在 main.js 加入如下代碼:

import TopNav from '@components/Base/TopNav'
Vue.component('TopNav', TopNav)

注意:Vue.component('TopNav', TopNav) 必須在  new Vue({ router, store, render: h => h(App) }).$mount('#app') 也就是根組件實(shí)例化之前定義。

然后去掉 About.vue 中 TopNav.vue 的引入:

<template><div class="about">
 <top-nav title="推薦"/>
 <top-nav title="軍事"/>
 <top-nav title="社會(huì)"/>
 <top-nav title="科技"/>
 <HelloWorld msg="vue 官方相關(guān)資料的鏈接"/>
</div></template>
<script>
// @ is an alias to /src
import HelloWorld from '@/components/HelloWorld.vue'
// import TopNav from '@/components/Base/TopNav.vue'
export default {
 name: 'home',
 components: {
 HelloWorld
 }
}
</script>

運(yùn)行代碼,可以發(fā)現(xiàn)并未報(bào)錯(cuò)。

這就是全局注冊(cè)。還是有個(gè)問(wèn)題,大型項(xiàng)目基礎(chǔ)組件多起來(lái),這 main.js 便不好看。下面介紹的方法可以只用數(shù)十行代碼,就可以解決。

首先引入兩個(gè) lodash 模塊:

import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'

通過(guò)以下代碼可以找到包含基礎(chǔ)模塊的所有文件:

const requireComponent = require.context(
 /* 在 ./components/Base 文件夾中尋找基礎(chǔ)模塊 */
 './components/Base',
 /* 是否包含子文件夾 */
 true,
 /* 只要是 .vue 結(jié)尾的文件都是基礎(chǔ)模塊 */
 /[\w-]+\.vue$/
)

下一步便是遍歷進(jìn)行模塊 import:

/* 對(duì)這個(gè)文件集合進(jìn)行遍歷 - import - 全局注冊(cè) */
requireComponent.keys().forEach(fileName => {
 /* 獲取組件配置 */
 const componentConfig = requireComponent(fileName)
 /* 從文件名中得到組件名 */
 const componentName = upperFirst(
 camelCase(
  fileName
  /* 移除開頭的 "./_" */
  .replace(/^\.\/_/, '')
  /* 去掉文件的后綴名,也即 .vue */
  .replace(/\.\w+$/, '')
 )
 )
 /* 全局注冊(cè)組件 */
 Vue.component(componentName, componentConfig.default || componentConfig)
})

這樣 './components/Base' 目錄下的 *.vue 組件會(huì)自動(dòng)被引入并注冊(cè)為 全局組件。

==========================

組件的復(fù)用便介紹到這里,相關(guān)代碼也已經(jīng)上傳至 GitHub.

總結(jié)

以上所述是小編給大家介紹的vue3.0 CLI - 2.6 - 組件的復(fù)用入門教程,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue中如何獲取json文件中的數(shù)據(jù)

    Vue中如何獲取json文件中的數(shù)據(jù)

    訪問(wèn)百度音樂(lè)API需要傳遞音樂(lè)類型參數(shù),而這些參數(shù)是存在musictype.json中,現(xiàn)在在組件listcate.vue需要獲取json數(shù)據(jù),如何實(shí)現(xiàn)呢,下面小編給大家?guī)?lái)了Vue中如何獲取json文件中的數(shù)據(jù),感興趣的朋友一起看看吧
    2022-09-09
  • vue3 學(xué)習(xí)筆記之a(chǎn)xios的使用變化總結(jié)

    vue3 學(xué)習(xí)筆記之a(chǎn)xios的使用變化總結(jié)

    本篇文章主要旨在幫助正在學(xué)vue3或者準(zhǔn)備學(xué)vue3的同學(xué)了解網(wǎng)絡(luò)請(qǐng)求axios該如何使用,防止接觸了一點(diǎn)點(diǎn)vue3的同學(xué)會(huì)有個(gè)疑問(wèn)。有興趣的小伙伴可以關(guān)注一下
    2021-11-11
  • Vue頁(yè)面骨架屏注入方法

    Vue頁(yè)面骨架屏注入方法

    這篇文章主要介紹了Vue頁(yè)面骨架屏注入的操作,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-05-05
  • vue+element_ui上傳文件,并傳遞額外參數(shù)操作

    vue+element_ui上傳文件,并傳遞額外參數(shù)操作

    這篇文章主要介紹了vue+element_ui上傳文件,并傳遞額外參數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • Vue vee-validate插件的簡(jiǎn)單使用

    Vue vee-validate插件的簡(jiǎn)單使用

    這個(gè)插件可以用來(lái)在未使用組件庫(kù),沒有自帶好的校驗(yàn)規(guī)則時(shí)使用,進(jìn)行表單校驗(yàn),非常的實(shí)用,感興趣的朋友可以參考下本文,了解該插件的使用方法
    2021-06-06
  • 詳解vue路由

    詳解vue路由

    這篇文章主要介紹了vue路由的相關(guān)資料,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí)vue路由知識(shí),感興趣的朋友可以了解下
    2020-08-08
  • 詳解滑動(dòng)穿透(鎖body)終極探索

    詳解滑動(dòng)穿透(鎖body)終極探索

    這篇文章主要介紹了滑動(dòng)穿透(鎖body),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 在?Vite項(xiàng)目中使用插件?@rollup/plugin-inject?注入全局?jQuery的過(guò)程詳解

    在?Vite項(xiàng)目中使用插件?@rollup/plugin-inject?注入全局?jQuery的過(guò)程詳解

    在一次項(xiàng)目腳手架升級(jí)的過(guò)程中,將之前基于?webpack?搭建的項(xiàng)目移植到?Vite?構(gòu)建,這篇文章主要介紹了在?Vite項(xiàng)目中,使用插件?@rollup/plugin-inject?注入全局?jQuery,需要的朋友可以參考下
    2022-12-12
  • Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說(shuō)明

    Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說(shuō)明

    這篇文章主要介紹了Vue項(xiàng)目中new?Vue()和export?default{}的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Vue mixins混入使用解析

    Vue mixins混入使用解析

    如果我們?cè)诿總€(gè)組件中去重復(fù)定義這些屬性和方法會(huì)使得項(xiàng)目出現(xiàn)代碼冗余并提高了維護(hù)難度,針對(duì)這種情況官方提供了Mixins特性,這時(shí)使用Vue mixins混入有很大好處,下面就介紹下Vue mixins混入使用方法,需要的朋友參考下吧
    2023-02-02

最新評(píng)論

弥勒县| 乳山市| 思南县| 海安县| 绥德县| 彭山县| 郯城县| 伽师县| 江安县| 佳木斯市| 女性| 翁源县| 贺州市| 商水县| 蓝山县| 高要市| 金门县| 沅陵县| 柳州市| 清徐县| 浑源县| 隆尧县| 浮梁县| 普安县| 伊金霍洛旗| 桐乡市| 河池市| 鲁山县| 新巴尔虎左旗| 镇远县| 望谟县| 绵阳市| 岗巴县| 武强县| 镇坪县| 东光县| 定日县| 马尔康县| 贡觉县| 乡城县| 桦南县|