vue笔记(二)

Vue创建组件

  1. 全局注册组件
  2. 局部注册组件
  3. 单文件注册组件

一般注册组件的步骤分为三步:创建组件构造器、注册组件和使用组件。

Vue.extend()方法创建组件构造器

Vue.component()方法注册组件

<!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>案例分析</title>
    <style>
        .box {
            width: 100%;
        }
    </style>
</head>

<body>
    <div id="app">
        <div class="box">
            <one-component></one-component>
        </div>
    </div>

    <script src="./vue.js"></script>
    <script>
        // 1.首先,创建一个组件构造器
        var oneComponent = Vue.extend({
            template: '<div>这是一个组件</div>'
        })
        // 2.注册组件,组件的HTML标签为<one-component>
        Vue.component('one-component', oneComponent)
        new Vue({
            el: '#app',
            data: {

            },
            methods: {

            }

        })
    </script>
</body>

</html>

以上注册组件的方法过于繁琐,一般在开发中不会这样写下面的方法是注册语法的简写。

全局注册组件

        Vue.component('one-component', {
            template: '<div>这是一个组件</div>'
        })

Vue.component()的第一个参数是标签名称,第二个参数是一个对象,对象里是template的定义,template下面也可以定义常用的data、methods等属性和方法,用来实现一些交互。
局部注册组件
我们可以以不用在new Vue外面进行注册,直接在components中定义组件,注册的方式直接以对象的形式进行注册,对象的名称就是标签的名称,名称中不能出现符号,否则会报错。

new Vue({
            el: '#app',
            data: {

            },
            methods: {

            },
            components: {
                oneComponent: {
                    template: '<div>这是一个组件</div>'
                }
            }

单文件注册组件

页面中注册的组件过多时,会让页面看起来很臃肿,所以,我们可以把组件分出去,独立写成一个文件,然后在需要用到的地方引进来。

创建demo.vue

<template>
  <div>
      {{message}}
  </div>
</template>

<script>
export default {
  data() {
    return {
        message:'这是一个组件'
    };
  },
};
</script>

<style>
</style>

导入demo.vue,然后使用components注册组件,最后在template中使用组件

App.vue

<template>
   <demo></demo>
</template>

<script>
import Demo from './Demo';
export default {
 data() {
    return {
        message:'这是一个组件'
    };
  },
  components: {
    Demo,
  }
}
</script>

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):