Skip to content

Vue单文件组件

非单文件组件有个弊病就是css样式不能跟着组件走, 而且非单文件组件中template配置字符串不太方便

1. 单文件组件结构

vue
<template>
<!-- 组件的结构 -->
</template>
<script>
// 组件交互相关的代码(数据、方法等)
</script>
<style>
/* 组件的样式 */
</style>

单文件组件需要结合webpack使用,不能直接返回到前端,因为浏览器不能识别.vue后缀名文件并且也不支持import语法。 其中<template>写html节点信息,<template>作用就是区分开script和style。 但是<template>标签并不会写入到返回浏览器的html中,同时<template>里面编写和多文件组件一样要求需要有一个根节点。
单文件组件编写如下:

vue
<template>
  <div class="hello">
    <h1>{{ schoolName }}</h1>
  </div>
</template>

<script>
/**
 * 为了别人使用使用方便需要将js暴露出去,由于别人使用方式是import, 所有需要export, 而暴露出去方式有很多,
 * 命名暴露针对同时暴露多个,使用的话:import {Aaa,Bbb} from 'xxx',一般单文件组件使用默认暴露足够
 */ 
const school = Vue.extend({
  name: 'School',
  data() {
    return {
      schoolName: '清华'
    }
  }
})
export default school
/* 
 * 如果我们暴露的只有一个建议使用默认暴露,
 * 默认暴露同时方便使用者使用,直接import ??? from ''
 */
// 默认暴露可以直接简写为
export default Vue.extend({
  name: 'School',
  data() {
    return {
      schoolName: '清华'
    }
  }
})
/* 
 * Vue.extend(option)可以简写为option, 也就是可以直接暴露option对象
 * 这种方式也是使用最多的方式
 */
export default {
  name: 'School',
  data() {
    return {
      schoolName: '清华'
    }
  }
}
</script>