源码

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title>几个注意点</title>
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <!-- 
            几个注意点:
                1.关于组件名:
                    一个单词组成:
                        第一种写法(首字母小写):school
                        第二种写法(首字母大写):School
                    多个单词组成:
                        第一种写法(kebab-case命名):my-school
                        第二种写法(CamelCase命名):MySchool (需要Vue脚手架支持)
                    备注:
                        (1).组件名尽可能回避HTML中已有的元素名称,例如:h2、H2都不行。
                        (2).可以使用 name配置项 指定组件 在 开发者工具中 呈现的名字。

                2.关于组件标签:
                    第1种写法 双标签形式:            <school></school> 
                    第2种写法 单标签形式(自闭合):    <school/>
                    备注:不用使用脚手架时,<school/>会导致后续组件不能渲染。

                3.定义组件时,一个简写方式: //★
                    const school = Vue.extend(options) 可简写为:const school = options
        -->
        <!-- 准备好一个容器-->
        <div id="root">
            <h1>{{msg}}</h1>

            <!-- 第3步: 使用组件 第1种写法 双标签形式 -->
            第3步: 使用组件 第1种写法 双标签形式
            <school></school>
            <hr/>
            <!-- 第3步: 使用组件 第2种写法 单标签形式(自闭合)-->
            第3步: 使用组件 第2种写法 单标签形式(自闭合)
            <school/>
        </div>
    </body>

    <script type="text/javascript">
        Vue.config.productionTip = false

        //第1步:定义组件
        //    组件名: 如果使用一个字母,那么就使用小写.
        /*const s = Vue.extend({
            //定义组件内部名。该名字作用于 F12 Vue开发者工具查看Root时看到的组件名。
            name:'atguigu',
            template:`
                <div>
                    <h2>学校名称:{{name}}</h2>    
                    <h2>学校地址:{{address}}</h2>    
                </div>
            `,
            data(){
                return {
                    name:'尚硅谷',
                    address:'北京'
                }
            }
        })*/
        //定义组件的简写形式: //该形式表面上没有调用 Vue.extend(),实际上调用了 Vue.extend()
        const s = {
            //定义组件内部名。该名字作用于 F12 Vue开发者工具查看Root时看到的组件名。
            name:'atguigu',
            template:`
                <div>
                    <h2>学校名称:{{name}}</h2>    
                    <h2>学校地址:{{address}}</h2>    
                </div>
            `,
            data(){
                return {
                    name:'尚硅谷',
                    address:'北京'
                }
            }
        }

        new Vue({
            el:'#root',
            data:{
                msg:'欢迎学习Vue!'
            },

            //第2步:注册组件
            components:{
                //注册的时候,组件名如果使用单词,那么第1个字母大写;
                //                  如果使用多个单词,那么全都小写,中间使用-分割,并且使用''包裹; 或者使用驼峰方式命名:首字母大写(需要借助脚手架)
                //注册的时候,注册名是什么,那么在第3步使用的时候就要用该注册名。
                //在注册组件的时候,底层会自动判断传入的对象s是否写了 Vue.extend()?如果写了Vue就直接拿过来用了,如果没有写,Vue会自动补上Vue.extend()
                school:s
            }
        })
    </script>
</html>