Vue学习笔记(12)-Vue中的组件(3):单文件组件
Vue单文件组件
1.什么是单文件组件?
- 单文件组件就是一个文件扩展名为 .vue 的 single-file components (单文件组件)的文件。是Vue.js自定义的一种文件格式,一个.vue文件就是一个单独的组件,在文件内封装了组件相关的代码:html、css、js
2.单文件组件的好处:
- 在 Vue 项目中,我们使用 Vue.component 来定义全局组件,紧接着用 new Vue({ el: ‘#root’}) 在每个页面内指定一个容器元素。相较于非单文件组件,单文件组件可以写入css样式,在添加拓展后可以有语法高亮以及语法提示等,在脚手架(Vue-cli)的环境下能够快速的搭建项目。
3.创建单文件组件:
语法形式:
<template> |
2.在vue脚手架中编写项目的流程:
- 1.main.js(必须)
- main.js用于创建Vue实例(对话Ap组件),main.js是整个项目的入口文件
// main.js是整个项目的入口文件
// 引入Vue
import Vue from 'vue'
// 引入App组件,它是所有组件的父组件
import App from './App.vue'
// 关闭Vue的生产提示
Vue.config.productionTip = false
// 创建Vue实例对象
new Vue({
el : '#app',
// 将App组件放入容器中
render: h => h(App),
})/*.$mount('#app')*///生命周期 = 等同于给容器绑定id el属性
- main.js用于创建Vue实例(对话Ap组件),main.js是整个项目的入口文件
- 2.App.vue(所有组件的 “父组件”)(必须)
- 在App.vue是管理所有子组件的父组件,它直接与vm对话的,故在App.vue中中引入所有子组件
<template>
<!-- html片段 -->
<div>
<School></School>
<Student></Student>
</div>
</template>
<script>
// 首先要先引入app下管理的所有子组件
import Student from './components/Student'
import School from './components/School'
export default {
name : 'App',
// 注册组件(简写形式)
components : {
Student,
School
}
}
</script>
<style>
/* 样式部分 */
</style>
- 在App.vue是管理所有子组件的父组件,它直接与vm对话的,故在App.vue中中引入所有子组件
- 3.其他组件(在App或者其他父组件管辖下的子组件)
<template>
<!-- 这里写单文件组件的结构 -->
<div class="demo">
<h2>学校名称:{{name}}</h2>
<h2>学校地址:{{address}}</h2>
<button @click="showName">点我提示学校名</button>
</div>
</template>
<script>
// 这里写单文件组件的交互
export default {
name : 'School' ,
data() {
return {
name : '五邑大学',
address : '江门'
}
},
methods: {
showName(){
alert(this.name)
}
}
}
</script>
<style>
/* 这里写单文件组件的样式 */
.demo{
background-color: aqua;
}
</style> - 4.index.html(这个就是最终的网页)(必须)
<html lang="">
<head>
<meta charset="utf-8">
<!-- 针对ie浏览器的一个特殊配置,含义是让ie浏览器以最高的渲染级别渲染页面 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- 开启移动端开发的理想视口 -->
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<!-- 引入网页标签图标,这里的 <%= BASE_URL %> 是指向 public文件夹的 -->
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<!-- 配置网页标题,这里的 <%= htmlWebpackPlugin.options.title %> 是指向 json文件中的title属性 -->
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<!-- 这里的noscript标签表示如果你的浏览器不支持js解析就会弹出 -->
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="app"></div>
<!-- built files will be auto injected -->
</body>
</html>
运行结果展示:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0许可协议。转载请注明来自 肥林の仓库