欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue組件 非單文件組件的使用步驟

 更新時(shí)間:2023年01月11日 16:22:29   作者:Aic山魚  
組件又分為非單文件組件和單文件組件,一般常用的就是單文件組件,這篇文章主要介紹了vue組件非單文件組件的使用步驟,需要的朋友可以參考下

一,什么是組件

實(shí)現(xiàn)應(yīng)用中局部功能代和資源的集合(簡單來說就是將html,js,css,資源整合起來的一個(gè)小盒子)

理解:用來實(shí)現(xiàn)局部(特定)功能效果的代碼集合

為什么:一個(gè)界面的功能很復(fù)雜

作用:復(fù)用編碼,簡化項(xiàng)目編碼,提高運(yùn)行效率

組件又分為非單文件組件和單文件組件,一般常用的就是單文件組件

二,非單文件組件

2.1使用組件的三大步驟

1.創(chuàng)建組件

(1)如何定義一個(gè)組件?

使用Vue.extend(options )創(chuàng)建,其中options和new Vue(options)時(shí)傳 入的那個(gè)options兒乎一樣。但是也略有不同,組件內(nèi)不需要寫el該屬性,因?yàn)榻M件是直接服務(wù)于Vue實(shí)例的,所以并不需要在組件內(nèi)寫,并且組件寫完之后不只是服務(wù)于一個(gè)地方,這里就體現(xiàn)了組件的復(fù)用性,所以組件不能寫el。

2.注冊(cè)組件

(2)如何注冊(cè)組件?

1.局部注冊(cè):靠new Vue的時(shí)候傳入components選項(xiàng)

2.全局注冊(cè):靠Vue.component( '組件名,組件)

3.使用組件

(3)如何使用組件

編寫組件標(biāo)簽(使用組件)

下面是創(chuàng)建非單文件組件的全過程

(4)為什么data必須寫成函數(shù)?

避免組件被復(fù)用時(shí),數(shù)據(jù)存在引用關(guān)系。

注:使用template 可以配置組件結(jié)構(gòu)。

<body>
    <div id="user">
        <!-- 第3步使用組件編寫組件標(biāo)簽 -->
        <school></school>
        <br>
        <xuesheng></xuesheng>
    </div>
    <div class="user2">
        <hello></hello>
    </div>
</body>
<script>
    // 第一步:創(chuàng)建組件
    // 創(chuàng)建school組件
    const school = Vue.extend({
        template: `
        <div>
        <h2>學(xué)校名稱:{{schoolName}}</h2>
        <h2>地址:{{address}}</h2>
        </div>
        `,
        // 組件里不用寫el也不能寫el,而且組件里必須寫函數(shù)式
        data() {
            return {
                schoolName: '山魚屋',
                address: 'Nanbian'
            }
        }
    })
    // 創(chuàng)建student組件
    const student = Vue.extend({
        template: `
        <div>
        <h2>學(xué)生名稱:{{studentName}}</h2>
        <h2>年齡:{{age}}</h2>
        <button @click = 'showName'>點(diǎn)我出名</button>
        </div>
        `,
        // 組件里不用寫el也不能寫el,而且組件里必須寫函數(shù)式
        data() {
            return {
                studentName: '山魚屋',
                age: 20
            }
        },
        methods: {
            showName() {
                alert(this.studentName)
            }
        },
    })
    // 創(chuàng)建全局組件
    const hello = Vue.extend({
        template: `
        <div>
        <h2>你好呀!{{name}}</h2>
        </div>
        `,
        data() {
            return {
                name: 'shanyu',
            }
        }
    })
 
    // 注冊(cè)全局的組件
    Vue.component('hello', hello);
 
    // 創(chuàng)建vm
    new Vue({
        el: '#user',
        // 第2步.注冊(cè)組件
        components: {
            // 鍵值對(duì)形式(若鍵值對(duì)同名可簡寫)
            school,
            xuesheng: student
        }
    })
 
    new Vue({
        el: '.user2',
    })
</script>

4.關(guān)于寫法的注意點(diǎn)

1.關(guān)于組件名

一個(gè)單詞組成: 第一種寫法( 首字母小寫):+ school,第二種寫法(首字母大寫) School

多個(gè)單詞組成: 第一種寫法(kebab-case命 名):my-school,第二種寫法(Came1Case命 名): MySchool (需要Vue腳手架支持)

注:

(1),組件名盡可能回避HTML中已有的元素名稱,例如: h3、 H2都不行。

(2).可以使用name配置項(xiàng)指定組件在開發(fā)者工具中呈現(xiàn)的名字。

2.關(guān)于組件標(biāo)簽

第1種寫法: <school></school>

第2種寫法: <school/> 備注:不用使用腳手架時(shí),<schoo1/> 會(huì)導(dǎo)致后續(xù)組件不能渲染。

3.簡寫方式

const school = Vue.extend(options)可簡寫為: const school = {options}

2.2組件的嵌套

和俄羅斯套娃差不多,大件套小件(其實(shí)vm下面還有一個(gè)名為app的組件,他管理著所有的組件)

<body>
    <div id="user">
 
    </div>
    <script>
        // 創(chuàng)建room組件
        const room = {
            template:
                `<div>
        <h2>
        房間號(hào){{num}}
        </h2>
        <h2>
        puwei:{{pnum}}
        </h2>
         </div>`,
            data() {
                return {
                    num: '222',
                    pnum: '8'
                }
            }
        }
        // 創(chuàng)建students組件
        const students = {
            template:
                `<div>
        <h2>
        姓名:{{name}}
        </h2>
        <h2>
        學(xué)號(hào):{{studentnum}}
        </h2>
        <room></room>
         </div>`,
            data() {
                return {
                    name: '山魚',
                    studentnum: '9657'
                }
            },
            components: {
                room
            }
        }
        // 創(chuàng)建school組件
        const school = {
            template:
                `<div>
        <h2>
        校名:{{sname}}
        </h2>
        <h2>
        地址:{{address}}
        </h2>
        <students></students>
         </div>`,
            data() {
                return {
                    sname: '山魚學(xué)院',
                    address: '華山道9088號(hào)'
                }
            },
            components: {
                students
            }
        }
        const app = {
            template:
                `
        <school></school>
         </div>`,
            
            components: {
                school
            }
        }
        // 創(chuàng)建app組件
        new Vue({
            template:`<app></app>`,
            el: '#user',
            components: {
                app,
            }
        })
    </script>
</body>

關(guān)于VueComponent

  • school組件本質(zhì)是一個(gè) 名為VueComponent的構(gòu)造函數(shù),且不是程序員定義的,是Vue.extend生成的。
  • 只需要寫<school/>(自閉合標(biāo)簽)或<school></school>, Vue解析時(shí)會(huì)幫我們創(chuàng)建school組件的實(shí)例對(duì)象,也就是Vue幫我們執(zhí)行的: new VueComponent(options)。
  • 每次調(diào)用Vue.extend,返回的都是一一個(gè)全新的VueComponent(雖然雙胞胎特別像但是無論怎么來說也不是相同的一個(gè)人)
  • this指向

(1).組件配置中data函數(shù)、methods中的函數(shù)、watch中的函數(shù)、computed中的兩數(shù)它們的this均 是[VueComponent實(shí)例對(duì)象]。

(2) new Vue(options )配置中data函數(shù)、methods中的函數(shù)、watch中的函數(shù)、computed中 的函數(shù) 它們的this均是[Vue實(shí)例對(duì)象]。

到此這篇關(guān)于vue組件 非單文件組件的使用步驟的文章就介紹到這了,更多相關(guān)vue非單文件組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決

    vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決

    這篇文章主要介紹了vue路由跳轉(zhuǎn)了但界面不顯示的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue中使用echarts繪制雙Y軸圖表時(shí)刻度沒有對(duì)齊的兩種解決方法(最新方案)

    vue中使用echarts繪制雙Y軸圖表時(shí)刻度沒有對(duì)齊的兩種解決方法(最新方案)

    這篇文章主要介紹了vue中使用echarts繪制雙Y軸圖表時(shí),刻度沒有對(duì)齊的兩種解決方法,主要原因是因?yàn)榭潭仍陲@示時(shí),分割段數(shù)不一樣,導(dǎo)致左右的刻度線不一致,不能重合在一起,下面給大家分享解決方法,需要的朋友可以參考下
    2024-03-03
  • Axios在vue項(xiàng)目中的封裝步驟

    Axios在vue項(xiàng)目中的封裝步驟

    Axios?是一個(gè)基于?promise?的網(wǎng)絡(luò)請(qǐng)求庫,可以用于瀏覽器和?node.js,是一個(gè)第三方插件,第三方異步請(qǐng)求工具庫,這篇文章主要介紹了Axios在vue項(xiàng)目中的封裝方法,需要的朋友可以參考下
    2022-10-10
  • Vue.js中的全局錯(cuò)誤處理函數(shù)errorHandler用法

    Vue.js中的全局錯(cuò)誤處理函數(shù)errorHandler用法

    這篇文章主要介紹了Vue.js中的全局錯(cuò)誤處理函數(shù)errorHandler用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • 封裝Vue Element的table表格組件的示例詳解

    封裝Vue Element的table表格組件的示例詳解

    這篇文章主要介紹了封裝Vue Element的table表格組件的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2020-08-08
  • vant的picker組件設(shè)置文字超長滾動(dòng)方式

    vant的picker組件設(shè)置文字超長滾動(dòng)方式

    這篇文章主要介紹了vant的picker組件設(shè)置文字超長滾動(dòng)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 一個(gè)基于vue3+ts+vite項(xiàng)目搭建初探

    一個(gè)基于vue3+ts+vite項(xiàng)目搭建初探

    當(dāng)市面上主流的組件庫不能滿足我們業(yè)務(wù)需求的時(shí)候,那么我們就有必要開發(fā)一套屬于自己團(tuán)隊(duì)的組件庫,下面這篇文章主要給大家介紹了一個(gè)基于vue3+ts+vite項(xiàng)目搭建的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Vue實(shí)現(xiàn)當(dāng)前頁面刷新的七種方法總結(jié)

    Vue實(shí)現(xiàn)當(dāng)前頁面刷新的七種方法總結(jié)

    大家在vue項(xiàng)目中當(dāng)刪除或者增加一條記錄的時(shí)候希望當(dāng)前頁面可以重新刷新,但是vue框架自帶的router是不支持刷新當(dāng)前頁面功能,所以本文就給大家分享了七種vue實(shí)現(xiàn)當(dāng)前頁面刷新的方法,需要的朋友可以參考下
    2023-07-07
  • 一文詳細(xì)分析Vue3中的emit用法(子傳父)

    一文詳細(xì)分析Vue3中的emit用法(子傳父)

    Emit是Vue3中另一種常見的組件間傳值方式,它通過在子組件中觸發(fā)事件并將數(shù)據(jù)通過事件參數(shù)傳遞給父組件來實(shí)現(xiàn)數(shù)據(jù)傳遞,這篇文章主要給大家介紹了關(guān)于詳細(xì)分析Vue3中emit用法(子傳父)的相關(guān)資料,需要的朋友可以參考下
    2024-05-05
  • VUE2中的MVVM模式詳解

    VUE2中的MVVM模式詳解

    這篇文章主要為大家介紹了VUE2中的MVVM模式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論