vue.js

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript类库 > vue.js > Vue组件之非单文件组件

Vue组件之非单文件组件用法及说明

作者:tianzhiyi1989sq

本文系统介绍了Vue组件的概念、创建与命名规范、嵌套组织、核心原理及最佳实践,强调组件化开发可提升代码复用性和可维护性,并推荐在实际项目中使用单文件组件以优化开发体验和工程化水平

组件化是Vue.js最强大的特性之一,它允许我们将UI拆分为独立可复用的代码片段。

本文及后续几篇文章将全面解析Vue组件的各种概念和使用方法,通过丰富的实例演示组件开发的全过程,并提供最佳实践建议。

一、组件基础概念

1. 什么是组件?

组件是实现应用局部功能的代码和资源的集合,具有以下特点:

2. 组件化 vs 模块化

特性组件化模块化
关注点UI功能单元JS功能单元
组成包含HTML/CSS/JS纯JS代码
复用级别视图级别复用逻辑级别复用
典型使用场景构建用户界面组织业务逻辑

二、非单文件组件

1. 基本使用步骤

1.1 创建组件

// 使用Vue.extend创建组件
const Company = Vue.extend({
  template: `
    <div>
      <h2>公司名称:{{name}}</h2>
      <h2>公司地址:{{address}}</h2>
    </div>
  `,
  data() {
    return {
      name: "Vue Company",
      address: "北京"
    }
  }
})

注意事项

1.2 注册组件

// 全局注册
Vue.component('company', Company)

// 局部注册
new Vue({
  el: '#app',
  components: {
    'company': Company
  }
})

注意:组件名与定义的组件同名时可简写成components:{company},

'company'也可不带引号

1.3 使用组件

<div id="app">
  <company></company>
</div>

2. 组件命名规范

命名方式示例适用场景
kebab-casemy-company所有场景,推荐HTML中使用
CamelCaseMyCompany需要Vue脚手架支持,推荐JS中使用

注意事项:

3. 组件标签写法

<!-- 完整写法 -->
<company></company>

<!-- 自闭合写法(需要脚手架支持) -->
<company/>

三、组件嵌套与组织

1. 组件嵌套示例

// 定义员工组件
const Employee = Vue.extend({
  template: `
    <div>
      <h3>员工姓名:{{name}}</h3>
      <h3>员工工号:{{id}}</h3>
    </div>
  `,
  data() {
    return {
      name: "张三",
      id: "1001"
    }
  }
})

// 定义公司组件(嵌套员工组件)
const Company = Vue.extend({
  template: `
    <div>
      <h2>公司名称:{{name}}</h2>
      <employee></employee>
    </div>
  `,
  components: {
    'employee': Employee
  },
  data() {
    return {
      name: "Vue Company"
    }
  }
})

// 定义App根组件
const App = Vue.extend({
  template: `
    <div>
      <company></company>
    </div>
  `,
  components: {
    'company': Company
  }
})

// 创建Vue实例
new Vue({
  el: '#app',
  template: '<App/>',
  components: { App }
})

2. 组件树结构

Vue实例 (vm)
└── App (vc)
    └── Company (vc)
        └── Employee (vc)

四、组件核心原理

1. VueComponent构造函数

2. this指向问题

上下文this指向
Vue实例配置Vue实例对象 (vm)
组件配置VueComponent实例 (vc)

3. vm与vc的重要区别

特性Vue实例 (vm)VueComponent实例 (vc)
el选项支持不支持
data形式对象或函数必须为函数
使用场景根实例可复用组件
生命周期完整生命周期无beforeCreate和created

五、最佳实践与建议

1. 组件设计原则

2. 组件组织建议

3. 性能优化

六、从非单文件组件到单文件组件

非单文件组件适合简单场景,但在实际项目中,我们更推荐使用单文件组件(SFC):

<!-- Company.vue -->
<template>
  <div>
    <h2>公司名称:{{name}}</h2>
    <employee></employee>
  </div>
</template>

<script>
import Employee from './Employee.vue'

export default {
  name: 'Company',
  components: {
    Employee
  },
  data() {
    return {
      name: "Vue Company"
    }
  }
}
</script>

<style scoped>
h2 {
  color: #42b983;
}
</style>

单文件组件优势

七、总结

Vue组件是构建现代Web应用的基石。通过本文我们了解了:

掌握组件化开发能够显著提高代码的可维护性和复用性。在实际项目中,建议结合Vue CLI使用单文件组件,这将带来更好的开发体验和更高的工程化水平。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文