成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

vue3.0CLI-2.6-組件的復用入門教程

我的 github 地址 - vue3.0Study - 階段學習成果都會建立分支。

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設、域名、虛擬主機、成都網(wǎng)站托管、企業(yè)網(wǎng)站設計、濟寧網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

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

定義一個基礎組件

這個基礎組件,是導航條中 可以復用 的基礎組件 單個導航。

基礎組件【導航組件】基礎的功能是能夠顯示文字,單擊的交互方式。明確任務目標之后,進行開發(fā)。

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

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

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

<template>
 <div class="about">
 <top-nav title="推薦"/>
 <HelloWorld msg="vue 官方相關資料的鏈接"/>
 </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>

通過以上兩步,就在 About.vue 中引入新組件 TopNav。其實 HelloWorld 也是可以復用的。

所謂的復用是啥意思呢?如下:

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

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

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

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

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

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

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

所以全局注冊組件也并不神秘,在 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') 也就是根組件實例化之前定義。

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

<template><div class="about">
 <top-nav title="推薦"/>
 <top-nav title="軍事"/>
 <top-nav title="社會"/>
 <top-nav title="科技"/>
 <HelloWorld msg="vue 官方相關資料的鏈接"/>
</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>

運行代碼,可以發(fā)現(xiàn)并未報錯。

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

首先引入兩個 lodash 模塊:

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

通過以下代碼可以找到包含基礎模塊的所有文件:

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

下一步便是遍歷進行模塊 import:

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

這樣 './components/Base' 目錄下的 *.vue 組件會自動被引入并注冊為 全局組件。

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

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

總結(jié)

以上所述是小編給大家介紹的vue3.0 CLI - 2.6 - 組件的復用入門教程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對創(chuàng)新互聯(lián)網(wǎng)站的支持!

名稱欄目:vue3.0CLI-2.6-組件的復用入門教程
瀏覽路徑:http://jinyejixie.com/article8/peocop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供、定制開發(fā)、品牌網(wǎng)站設計、建站公司靜態(tài)網(wǎng)站、App開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
南康市| 新和县| 德兴市| 长沙市| 固原市| 竹北市| 铁岭市| 敖汉旗| 内江市| 诏安县| 达日县| 辽源市| 名山县| 凤城市| 隆回县| 曲阳县| 即墨市| 从江县| 藁城市| 沂南县| 汨罗市| 保山市| 康乐县| 敦煌市| 龙井市| 河源市| 四会市| 汉中市| 镇远县| 菏泽市| 长葛市| 宣城市| 肇州县| 赞皇县| 安塞县| 二连浩特市| 云霄县| 大埔区| 东丰县| 乡城县| 天台县|