Skip to main content

The use of vue components

 Vue components can be divided into global components and local components. Global components are not used much, but local components are used more. The creation method is to use Vue.extend(options) to create, where options and the options passed in when new Vue(options) are almost the same, but there are also some differences: do not write el, data can no longer be written as an object, and must be written as a function. Generally, partial components are used more in single-page applications. Partial components belong to a Vue instance and are added (mounted) through comopnents. Registering components: local registration: you need to pass in the components option when new Vue, global registration: Vue.component ('component name', component), the component can be defined and placed, or it can be directly in the form of an object. Written in Vue.component.

Here are the steps and methods to actually define the registered usage component:

  <div id="app">
        <school></school>
        <hr>
        <student></student>
        <hello></hello>
    </div>
    //
    <div id="app2">
        <hello></hello>
    </div>
    <div id="app3">
        <app/>
    </div>
    <script>
     Vue.config.productionTip=false
        Vue.component("hello",{
            name:"HHHH",
            template:`
            <div>
            <div>{{helloName}}</div>
            <button @click="show">click</button>
            </div>
            `,
            data(){
                return{
                    helloName:"hellollll"
                }
            },
            methods: {
                show(){
                    alert("hahaha");
                }
            },
        });
        //
        const person={
            template:`
            <div>
                Page:<input v-model="personAge"/>
                </div>
            `,
            data(){
                return{
                    personAge:100
                }
            }
        };
        //
        const school=Vue.extend({
            template:`<div>
                <p>{{schoolName}}</p>
                <p>{{schoolAddr}}</p>
                </div>`,
            data(){
                return{
                    schoolName:"helloSChool",
                    schoolAddr:"beijing"
                }
            }
        });
        const student=Vue.extend({
            template:`<div>
                <p>{{studentName}}</p>
                <p>{{studentAge}}</p>
                <person></person>
                // <hello></hello>
                </div>`,
            data(){
                return{
                    studentName:"aaa",
                    studentAge:18
                }
            },
            components:{
                person:person,
            }
        });
        // console.log(student instanceof VueComponent);
        // console.log(student.__proto__ instanceof Vue);
        // console.log(student.__proto__);


//
        const app={
            template:`
            <div>
                <hello></hello>
                <school></school>
                <student></student>
                </div>`,
                components:{
                    school:school,
                    student:student
                }
        }

        var vm = new Vue({
            el: '#app',
            // data: {},
            // methods: {},
            components:{
                school:school,
                student:student
            }
        });
        // console.log(student instanceof vm);
        console.log(student.__proto__===vm.prototype);//false
        console.log(student.__proto__.__proto__===vm.__proto__);//false
        console.log(student.__proto__===Vue);//false
        console.log(student.prototype.__proto__===Vue.prototype);//true

        new Vue({
            el:"#app2",
        })
        new Vue({
            el:"#app3",
            components:{
                app:app
            }
        });
    </script>

Comments

Popular posts from this blog

What is the difference between the box-size property content-box and border-box in the css box model?

 The box model is a very important concept in CSS layout, it includes content area, padding, border, and margin. Box models can be divided into two types: standard box models and IE box models. The box model, as the name suggests, is used to hold things, and the things it holds are the content of HTML elements. In other words, every visible HTML element is a box.

Js uses recursive way to traverse the dom tree to dynamically create element nodes

 What is a dom tree? In short, DOM is the Document Object Model, which provides a structured representation for documents and defines how to access the document structure through scripts. DOM is composed of nodes. After the HTML is loaded, the rendering engine will generate a DOM tree in memory based on the HTML document. This article uses a small case to traverse the dom tree recursively. The core of the method is to determine whether the incoming data is an array, and then traverse the root node. Note that there must be an end condition when using recursion.