0
点赞
收藏
分享

微信扫一扫

Vue2(笔记23) - 组件 - 单文件组件

Vue笔记-组件部分

​​Vue2(笔记19) - 组件 - 对组件的理解​​

​​Vue2(笔记20) - 组件 - Vue 非单文件组件 和 几个注意点​​

​​Vue2(笔记21) - 组件 - 组件的嵌套​​

​​Vue2(笔记22) - 组件 - VueComponent 以及 Vue 和 VueComponent 的内置关系​​

​​Vue2(笔记23) - 组件 - 单文件组件​​



单文件组件

单文件组件,都是以 xxx.vue 形式的文件,浏览器是不能直接解析的;

借助脚手架来编译 xxx.vue 来生成浏览器能识别的文件;


单文件组件基本构成

<template>
<!-- 组件的结构 -->
</template>

<script>
// 组件交互相关
</script>

<style>
/* 组件的样式 */
</style>

其中 template 不参与编译,也就是最后渲染的页面,template就没有了;

现在可以把之前写的非单文件的组件拿过来了;

这里可以安装Vue的高亮插件:vetur ,除了可以高亮 Vue 代码,还有一些代码片段;


school 单文件组件

<template>
<div class="demo">
<h2>学校名称:{{schoolName}}</h2>
<h2>学校地址:{{address}}</h2>
<button @click="showName">点我显示学校名</button>
</div>
</template>

<script>
const school= Vue.extend({
data(){
return{
schoolName:'51cto',
address:'北京'
}
},
methods:{
showName(){
console.log(this.schoolName);
}
}
})

export default school
</script>

<style>
.demo{
background-color: orange;
}
</style>

script 代码里面,有几点要注意: 

1)暴露接口地方,可以直接写定义组件名的位置,把组件名写在配置项里面;

2)Vue.extend() 这个Vue内置的方法也可以省略;

3)需要加一个组件的名字,写在配置项里 name:'school' ;

于是,整理后的代码:

<template>
<div class="demo">
<h2>学校名称:{{schoolName}}</h2>
<h2>学校地址:{{address}}</h2>
<button @click="showName">点我显示学校名</button>
</div>
</template>

<script>
export default{
name:'school',
data(){
return{
schoolName:'51cto',
address:'北京'
}
},
methods:{
showName(){
console.log(this.schoolName);
}
}
}
</script>

<style>
.demo{
background-color: orange;
}
</style>

代码折叠起来看:

Vue2(笔记23) - 组件 - 单文件组件_Vue

 一个单页面Vue组件就写好了;


student 单文件组件

根据 school.vue 组件的模板做法,重写一个 student.vue

<template>
<div class="demo">
<h2>学员名称:{{studentName}}</h2>
<h2>学员年龄:{{age}}</h2>
</div>
</template>

<script>
export default{
name:'student',
data(){
return{
studentName:'Jack',
age:18
}
}
}
</script>

<style>
.demo{
background-color: skyblue;
}
</style>

app.vue 单文件组件

汇总所有的组件,也就是把 school.vue 和 student.vue 引入进来;

<template>
<div>
<school/>
<student/>
</div>
</template>

<script>
// 引入组件
import school from './school.vue'
import student from './student.vue'

export default {
name:'app',
components:{
school,
student
}
}
</script>

<style>
div{
border: 1px solid #f30;
}
</style>

提示:引入组件, ​import xxx from 'path'​ ;

有了这三个组件后,该到真正 main.js 的创建了;


main.js 文件

import app from './app.vue'

new Vue({
el:'#root',
comments:{app},
template:`<app></app>`
})

提示:在 main.js 只要引入一个组件的总管家文件 app.vue 就可以;

提示:创建Vue实例,注册组件,还不忘写个 template ,为的是让主模板文件中的 root 更简洁;

现在就差 index.html 文件了;


index.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Vue练习</title>
</head>
<body>
<!-- 准备的容器 -->
<div id="root"></div>

<!-- 引入Vue.js -->
<script src="./res/vue.js"></script>
<!-- 引入main.js -->
<script src="./main.js"></script>
</body>
</html>

提示:主文件里,只有一个简洁的容器,引入 Vue.js 和 入口 main.js了;


到此为止:

两个单文件组件 school.vue 和 student.vue 已经写好;

单文件组件的管家文件  app.vue 也写好了;

入口文件  main.js 也写好了;

主页面容器文件 index.html 也写好了;

剩下就是把所有文件放入到脚手架环境中运行一下,看看到底行不行了。 


举报

相关推荐

0 条评论