目录

vue组件开发基础

多层嵌套(内含详细注释)
vuecomponent构造函数


第一部分:vue组件开发基础

<!--
        vue中使用组件的三大步骤:
        一 ,定义组件(创建组件)
         二,注册组件
         三,使用组件(写组件标签)
        一,如何定义一个组件?
         使用vue.extend(Option)创建,其中Option和new vue(Option)叫传入的那个options几乎一样
         但也有点区别:区别如下:
        1,el不要写,为什么?---最终所有的组件都要经过一个vm的管理,由vm中的el决定服务哪个容器.
         2,data必须写成函数,为什么?------避免组件被复用时,数据存在引用关系
         备注:使用template可以配置组件解构            
         二,如何注册组件?
        1,局部注册:靠new vue 的时候传入components选项,
         2,全局注册:靠vue.component('组件名',组件)            
        三,编写组件标签:
        <school></school>
        -->
        <div id="root">
            <!-- 编写组件标签 -->
            <xuexiao></xuexiao>
            <hr>
            <xuesheng></xuesheng>
        </div>
        <div id="root2">
            <hello></hello>
        </div>
        <script type="text/javascript">
            // 创建school组件
            const school = Vue.extend({
                // 模板解析
                template: `
                <div>
                <h2>学校名称:{{schoolName}}</h2>
                <h2>学校地址:{{address}}</h2>
                </div>
                `,
                // el:'#root',组件定义时,一定不要写el配置项,因为最终所有的组件都要被一个vm管理,由vm决定服务与哪一项
                data() {
                    return {
                        schoolName: '北京学院',
                        address: '北京'
                    }
                }
            })
            // 创建student组件
            const student = Vue.extend({
                template: `
                <div>
                <h2>学生姓名{{studentName}}</h2>
                <h2>学生年龄:{{age}}</h2>
                <button @click="dianji">点我点击提示</button>
                </div>
                `,
                data() {
                    return {
                        studentName: '张三',
                        age: 18
                    }
                },
                methods:{
                    dianji(){
                        alert('点我提示信息')
                    }
                }
            })
            // 创建vm
            const vm = new Vue({
                el: '#root',
                // 组件门  注册组件(局部注册)
                components: {
                    //这里存放的才是真正的组件名
                    xuexiao: school,
                    xuesheng: student
                }
            })
            // 创建一个全局的组件
            const hello = Vue.extend({
                template: `
                <div>
                <h2>hello,Tom</h2>
                </div>
                `
            })          
            new Vue({
                el:'#root2',
            })
            // 使用全局变量
            // 第一个参数是组件名  第二个参数是组件在哪里
            // 这样所有的地方都可以使用
            Vue.component('hello',hello)                        
        </script>

第二部分:多层嵌套(内含详细注释)

<div id="root">
        <!--     <school></school>
            <hello></hello> -->
            <!-- 因为APP领导了所有的组件,所以这就可以简写了,只写一个APP标签即可 -->
        <!-- <app></app> -->
        </div>
        
        <script type="text/javascript">
            // 下面是多层嵌套
            // 定义一个msg的组件
            const hello = Vue.extend({
                template:
                `
                <div>
                {{msg}}
                </div>
                `,
                data(){
                    return{
                msg:'欢迎学习vue'        
                    }
                }
            })        
            //定义student组件
            const student = Vue.extend({
                // 第一块是和HTML部分模板字符串
                 name:'student',
                   template:`
                   <div>
                    <h1>学生姓名:{{names}}</h1>
                    <h2>学生年龄:{{age}}</h2>
                    </div>
                   `,
                   // 第二个是函数的封装内部的内容
                   data(){
                       return{
                           names:'张三',
                           age:18
                       }
                   } 
            })
            //定义一个school组件
              const school = Vue.extend({
                  template:`
                  <div>
                   <h1>学校名称:{{name}}</h1>
                   <h2>学校地址:{{address}}</h2>
                   <student></student>
                   </div>
                  `,
                  data(){
                      return{
                         name:'尚硅谷',
                         address:'北京'
                      }
                 },
                 // 组件的内嵌  嵌套之后在哪嵌套就放在哪里显示(所以就放在school的上面)
                  components:{
                    student
                  }
              })
             // 定义一个APP组件(领导其它的所有组件)
                const app = Vue.extend({
                         // 这里不写任何东西,只领导hello及school数据
                        template:`
                        <div>
                         <hello></hello>
                         <school></school>
                         </div>
                        `,
                        components:{
                            school,
                            hello 
                         }
                    })
             
            // 创建vm
             new Vue({
                 //也可以不在页面中写标签 再vm中写
                 template:`
                 <app></app>
                 `,
                el:'#root',
                components:{
                    // 简写  school  原school:school
                    app
                }
            })
        </script>

第三部分:vuecomponent构造函数

<!--         
      关于vuecomponent:
        1,school组件本质是一个名为vuecomponent的构造函数,且不是程序员定义的,是vue.extend生成的.console.log('@',school)
        2,我们只需要写<school></school>vue解析是会帮我们创建school组件的实例对象 
        即:vue帮我们执行的:new vuecomponent(options)
        3,特别注意:每次调用vue.extend-,返回的都是一个全新的vuecomponent!!!
        
        
        4,关于this指向:
        (1)组件配置中:
           data函数、methods中的函数、watch中的函数、computed中的函数  他们的this均是【vuecomponent实例对象】
        (2)new.vue(options)配置中:
        data函数、methods中的函数、watch中的函数、computed中的函数  他们的this均是【vue实例对象】
        
        5,vuecomponent的实例对象,以后简称VC(也可成之为:组件实例对象)
        vue的实例对象,以后简称vm
        
        
        -->
        <div id="root">
            <school></school>
        </div>
        
        <script type="text/javascript">
            //定义school组件
            // school的本质:是
            const school = Vue.extend({
                name:'school',
                template:
                `
                <div>
                 <h2>学校名称:{{name}}</h2>  
                 <h2>学校地址:{{address}}</h2>
                 <button @click="btn">点我触发</button>
                </div>
                `,
                data(){
                    return{
                        name:'北大学校',
                        address:'北京'
                    }
                },
                methods:{
                    btn(){
                     console.log('btn',this)
                    }
                }
            })
            
            const hello = Vue.extend({
                name:'hello',
                template:`
                 <div>
                 <h1>{{msg}}</h1>
                 </div>
                `,
                data(){
                    return{
                        msg:'你好呀'
                    }
                }
            })
            
            // 这里打印出来得结果是相同的,(注:只是形式上一样,但事实上并非一样,我们通过粗暴的方法来验证,
            //那就是判断school是否等于hello若是等于则返回一个true,否则返回一个false)
            // 所以         3,特别注意:每次调用vue.extend-,返回的都是一个全新的vuecomponent!!!
           console.log('@',school===hello);
           console.log('#',hello);
           
           
            const vm = new Vue({
                el:'#root',
                components:{
                      school
                }
            })
        </script>

疑点解惑结果:

【精讲】vue组件开发基础、多层嵌套(内含详细注释)、vuecomponent构造函数相关推荐

  1. 视频教程-2020最新微信小程序基础+实战精讲视频-微信开发

    2020最新微信小程序基础+实战精讲视频 负责过多个软件项目的研发.设计和管理工作,拥有项目管理师认证.项目监理师中级认证.出版过的图书有<微信小程序开发图解案例教程><Axure ...

  2. 3个概念,入门 Vue 组件开发

    "组件"是 Vue 中比较基础的概念,但我发现,许多同学对 Vue 组件的概念和由来并不是清楚.因此,我希望通过这个专题,带大家换个角度来分析,最终让大家更清楚组件开发. 首先,我 ...

  3. 【干货分享】自己总结录制的web前端精讲视频,零基础入门学习资料,开发工具

    "大清亡于闭关锁国,学习技术需要交流和资料" 为了让大家在自己的前端生涯中少走一些弯路,我亲自做了这么一门课:用我自己一路从码农到创业者的亲身经历,带大家感受前端程序员的职业发展规 ...

  4. c# 无法加载oraops.dll_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发.开发语言同样是基于.NET框架的C#语言或VB语言.Smart组件是Robotstudio软件中实现 ...

  5. 提升效率的Vue组件开发和实战技巧

    大家好我是若川. 现在的大前端时代,是一个动荡纷争的时代,江湖中已经分成了很多门派,主要以Vue,React还有Angular为首,形成前端框架三足鼎立的局势.Vue在前端框架中的地位就像曾经的 jQ ...

  6. c#获取autocad安装位置_Robotstudio软件二次开发:基于C#语言的Smart组件开发基础

    Robotstudio软件除了支持Add-Ins插件的二次开发以外,还支持Smart组件的二次开发. 开发语言同样是基于 .NET框架的C#语言或VB语言. Smart组件是Robotstudio软件 ...

  7. react复习总结(1)--react组件开发基础

    这次是年后第一次发文章,也有很长一段时间没有写文章了.准备继续写.总结是必须的. 最近一直在业余时间学习和复习前端相关知识点,在一个公司呆久了,使用的技术不更新,未来真的没有什么前景,特别是我们这种以 ...

  8. Vue 组件开发 - 数据输入框组件

    目录 设计通用组件的一般思路 组件效果 1. HTML结构 2. index.js 3. input-number.js 3.1 input-number.js代码注解 设计通用组件的一般思路 明确需 ...

  9. vue 组件开发 ---- rui-vue-poster 海报制作

    绘制海报 预览效果[最好在移动设备预览] 体验二维码 介绍 海报插件,用于分享和保存海报,便于快捷开发! 引入 下载插件包 海报插件 引入 <script src="./js/rui- ...

最新文章

  1. CSS:布局的三个关键属性:float、position、display
  2. Nature:首个完全复现人眼的仿生眼问世,港科大造出半球形人工视网膜,感光性能超过人眼460倍...
  3. java 18 -4 LinkedHashMap集合
  4. 关于 SAP UI5 对服务器端渲染 Server Sider Render 的支持问题
  5. 用户体验岗如何说服其他部门_为什么我们应该说服用户更新他们的浏览器-这是双赢的。...
  6. 洛谷——P2068 统计和
  7. Mac上最佳的SVN管理工具:Cornerstone
  8. [哀悼]5.12地震后把网站改成灰色的方法
  9. HTML中td元素的nowrap属性
  10. 常用的JDBC的驱动
  11. 利用Matlab绘制图像中的某一行或者某一列的灰度曲线
  12. OpenCart支付宝付款接口(直接到账、担保交易、双接口)
  13. 计算机四级要学多长时间,过计算机四级要多长时间哦?
  14. h2ouve下载 insyde_一种基于InsydeBIOS的BIOS更改方法及系统与流程
  15. 新入职软件安装-win10
  16. 提高共射放大电路增益不改变直流偏置的手段
  17. html 多余的字省略号,html中把多余文字转化为省略号
  18. IPv6技术精要--第12-13章 ICMPv6和邻居发现协议(ND协议)
  19. PyQt之QSS美化
  20. 三张图读懂机器学习:基本概念、五大流派与九种常见算法

热门文章

  1. tar指令打包文件不包含路径
  2. amd 服务器 虚拟化技术,关于“虚拟化”(Intel VT和AMD SVM)的一些认识
  3. 如何修复模糊的照片?简单的处理方法
  4. 解决java.io.IOException: Cannot run program “javac“问题,并设置jdk版本
  5. requests 超时设置
  6. 【ROS-cartographer学习小记-01】使用自己的激光雷达思岚A1运行cartographer,附代码以及bag包-直接运行即可看到结果
  7. 一人之下鸿蒙炁灵搭配,一人之下手游炁灵怎么搭配
  8. 手把手教你怎么撩妹,五分钟读懂!提取于《谈话的力量》
  9. DSSM原理解读与工程实践
  10. 分享6款越用越好用的微信小程序