系列文章導航
1 單文件組件的好處

2 單文件組件的運行場景hbuilderx工具
一下兩種方式創建的項目才允許使用單文件組件:
1)方式1:Vue項目(含vue-cli)

2)方式2:uni-app項目

3 組件的定義與使用
3.1 組件的定義語法規范
<template>
組件模板內容
</template>
<script>
export default {
name: "組件名稱",
//組件內部數據
data(){
return{
變量名:變量值
}
},
//組件對外公開屬性
props: {
屬性名稱: {
type: String,//屬性類型
value: "值"
},
......
},
//組件生命周期
created:function(e){
},
//組件內部方法
methods: {
test(){
}
}
}
</script>
<style>
組件樣式
</style>
3.2 組件的使用語法規范
1、引用依賴的組件
import 組件名稱 from "../../components/組件名.vue"; 2、導出本組件時聲明依賴的組件 export default{ components:{ 組件名稱 }, } 3、在試圖模板中使用組件 <組件名稱 組件屬性="對應的值"></組件名稱>
4 vue項目單文件組件代碼實例
4.1 文件結構

4.2 組件定義myComponent.vue
<template>
<!-- 組件模板內容 -->
<div>
<slot name="begin" v-bind:cValue="cValue" :user="user">begin默認內容</slot><button>子組件<slot>center默認內容</slot></button>
<slot name="end">end默認內容</slot>
</div>
</template>
<script>
export default {
// 組件名稱
name: "myComponent",
// 組件數據
data: function() {
return {
cValue: "內部變量",
user:{
firstName:'wang',
lastName:'zhirui'
}
}
},
props:[],
//組件生命周期
created: function(e) {
},
//組件內部方法
methods: {
}
}
</script>
<style>
</style>
4.3 組件使用app.vue
<template>
<div id="app">
<img alt="Vue logo" src="./assets/logo.png">
<!-- <HelloWorld msg="Welcome to Your Vue.js App" /> -->
<br />
<!-- 使用組件時 綁定組件對外公開的事件的事件處理方法-->
<my-component><template v-slot="begin">父給begin的內容{{pValue}}}</template>默認填充內容</my-component>
<br>
<!-- 通過v-slot:插糟名="公開分享數據的引用變量名" -->
<my-component><template v-slot:[cname]="slotProps">{{slotProps.cValue}}-{{slotProps.user.firstName}}</template></my-component>
</div>
</template>
<script>
import HelloWorld from './components/HelloWorld.vue'
import myComponent from '@/components/myComponent.vue'
export default {
name: 'app',
data() {
return {
title: 'Hello',
pValue: "外部變量",
cname: "begin"
}
},
components: {
HelloWorld,
myComponent
}
}
</script>
<style>
#app {
font-family: 'Avenir', Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
margin-top: 60px;
}
</style>
4.4 運行效果

5 uni-app單文件組件代碼實例
5.1 文件結構

5.2 組件定義myComponent.vue
<template>
<!-- 組件模板內容,單個外層標記 -->
<div>
<slot name="begin" v-bind:cValue="cValue" :user="user">begin默認內容</slot><button>子組件<slot>center默認內容</slot></button>
<slot name="end">end默認內容</slot>
</div>
</template>
<script>
export default {
// 組件名稱
name: "myComponent",
// 組件數據
data() {
return {
cValue: "內部變量",
user:{
firstName:'wang',
lastName:'zhirui'
}
}
},
props:[],
//組件生命周期
created: function(e) {
},
//組件內部方法
methods: {
}
}
</script>
<style>
</style>
5.3 組件的使用index.vue
<template>
<view class="content">
<!-- 使用組件時 綁定組件對外公開的事件的事件處理方法-->
<my-component><template v-slot="begin">父給begin的內容{{pValue}}}</template>默認填充內容</my-component>
<br>
<!-- 通過v-slot:插糟名="公開分享數據的引用變量名" -->
<my-component><template v-slot:[cname]="slotProps">{{slotProps.cValue}}-{{slotProps.user.firstName}}</template></my-component>
</view>
</template>
<script>
// 引入組件
import myComponent from '@/components/myComponent.vue'
export default {
data() {
return {
title: 'Hello',
pValue:"外部變量",
cname:"begin"
}
},
// 定義可以使用的組件
components: {
myComponent
},
// uni-app 頁面生命周期函數
onLoad() {
},
// 頁面方法
methods: {
}
}
</script>
<style>
.content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
</style>
5.4 運行效果

