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

一,什么是組件
實(shí)現(xiàn)應(yīng)用中局部功能代和資源的集合(簡(jiǎn)單來說就是將html,js,css,資源整合起來的一個(gè)小盒子)
理解:用來實(shí)現(xiàn)局部(特定)功能效果的代碼集合
為什么:一個(gè)界面的功能很復(fù)雜
作用:復(fù)用編碼,簡(jiǎn)化項(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ì)同名可簡(jiǎn)寫)
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.簡(jiǎn)寫方式
const school = Vue.extend(options)可簡(jiǎn)寫為: 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)文章
Vuex狀態(tài)機(jī)的快速了解與實(shí)例應(yīng)用
Vuex是專門為Vuejs應(yīng)用程序設(shè)計(jì)的狀態(tài)管理工具,這篇文章主要給大家介紹了關(guān)于Vuex狀態(tài)機(jī)快速了解與實(shí)例應(yīng)用的相關(guān)資料,需要的朋友可以參考下2021-06-06
vue element ui validate 主動(dòng)觸發(fā)錯(cuò)誤提示操作
這篇文章主要介紹了vue element ui validate 主動(dòng)觸發(fā)錯(cuò)誤提示操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-09-09
vue 彈出框 引入另一個(gè)vue頁(yè)面的示例代碼
這篇文章主要介紹了vue 彈出框引入另一個(gè)vue頁(yè)面,這種方式適用于在一個(gè)頁(yè)面邏輯比較多的時(shí)候,可以搞多個(gè)頁(yè)面,防止出錯(cuò),本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08
啟動(dòng)myvue報(bào)錯(cuò)npm?ERR!?code?ENOENT?npm?ERR!?syscall?open的解
這篇文章主要介紹了啟動(dòng)myvue報(bào)錯(cuò)npm?ERR!?code?ENOENT?npm?ERR!?syscall?open的解決辦法,文中給出了詳細(xì)的解決方法,并通過圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03
vue?使用mescroll.js框架實(shí)現(xiàn)下拉加載和上拉刷新功能
這篇文章主要介紹了vue?使用mescroll.js框架?實(shí)現(xiàn)下拉加載和上拉刷新功能,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
element-ui下拉輸入框+resetFields無法回顯的問題解決
本文主要介紹了在使用Element?UI的下拉輸入框時(shí),點(diǎn)擊重置按鈕后輸入框無法回顯數(shù)據(jù)的問題,具有一定的參考價(jià)值,感興趣的可以了解一下2025-01-01

