组件相关整理

目录

组件注册

一.全局组件注册

组件注意事项

组件命名方式

二.局部组件注册

三.Vue组件之间的传值

1.父组件向子组件传值

2.子组件向父组件传值

3.兄弟之间的传值



组件注册

 

一.全局组件注册

Vue.component('组件名称',{
data:'组件数据',
template:'组建模板内容'
})

实例:

<body>
//组件用法
    <div id="app">
        <button-counter></button-counter>
    </div>
    <template id="temp">
        <button @click='count++'>点击了{{count}}次</button>
    </template>
    <script src="./js/vue.js"></script>
    <script>
    //定义一个名为button-counter的新组建
        Vue.component('button-counter',{
            data(){
                return {
                    count:0
                }
            },
            template:'#temp'
        })
        var vm = new Vue({
            el: '#app',
            data:{
            },
            methods:{
            }
        })
    </script>
</body>

组件注意事项

  1. 组件参数的data值必须是函数同时这个函数要求返回一个对象

  2. 组件模板必须是单个根元素

  3. 组件模板的内容可以是模板字符串

组件命名方式

  • 1.短横线方式
Vue.component('my-component',{})
  • 2.驼峰方式
Vue.component('MyComponent',{})

二.局部组件注册

<body>
    <div id="app">
        <component-a></component-a>
        <component-b></component-b>
        <component-c></component-c>
    </div>
    <script src="./js/vue.js"></script>
    <script>
        //定义组件的模板
        var ComponentA = {
            data() {
                return {
                    msg: 'ComponentA'
                }
            },
            template: '<div>{{msg}}</div>'
        };
        var ComponentB = {
            data() {
                return {
                    msg: 'ComponentB'
                }
            },
            template: '<div>{{msg}}</div>'
        };
        var ComponentC = {
            data() {
                return {
                    msg: 'ComponentC'
                }
            },
            template: '<div>{{msg}}</div>'
        }
        var vm = new Vue({
            el: '#app',
            //局部组件注册
            components: {
                'component-a': ComponentA,
                'component-b': ComponentB,
                'component-c': ComponentC
            }
​
        })
    </script>

PS:以上方式注册的组件只能在其父组件中使用

 

三.Vue组件之间的传值

1.父组件向子组件传值

子组件向父组件传值基本用法:

1.在父组件中给子组件标签添加自定义属性。

<div id="app">
        <menu-item title="来自父组件的值"></menu-item>
        <menu-item :title="pmsg"></menu-item>
    </div>

2.然后子组件在其内部通过props接收组件身上被添加的自定义属性

 <script>
        //全局下创建的子组件
        Vue.component('menu-item', {
            props: ['title'],
            data() {
                return {
                    msg: '子组件的本身的内容'
                }
            },
            template: '<div>{{title}}</div>'
        });
        //vm实例是父组件
        var vm = new Vue({
            el: '#app',
            data: {
                pmsg: '父组件内容',
            }
        });
    </script>

3.methods或者生命周期函数或者计算属性等访问 通过 this.名字

2.子组件向父组件传值

子组件向父组件传值基本用法:

  1. 在父组件中,给子组件标签绑定自定义事件;
  2. 在子组件中,想办法去触发绑定在自己身上的自定义事件(this$emit(自定义事件名));
  3. $emit可以在子组件中通过点击按钮,触发一个点击事件来执行
  4. $emit还可以在生命周期函数里执行
  5. 当子组件成功执行$emit之后,子组件身上的自定义事件触发,此时该自定义事件对应的事件执行函数执行。
<body>
    <div id="app">
        <h1>展示子组件传递来的数据---{{smsg}}</h1>
        <son @my-event='handle'></son>
    </div>
    <!-- 子组件模板 -->
    <template id="temp">
        <div>
            <h1>子组件区域---{{son_msg}}</h1>
            <button @click='clickhandle'>传递数据给父</button>
        </div>
    </template>
    <script src="./js/vue.js"></script>
    <script>
        Vue.component('son', {
            data() {
                return {
                    son_msg: 'son的数据'
                }
            },
            template: '#temp',
            methods: {
                clickhandle() {
                    this.$emit('my-event', this.son_msg)
                }
            }
        })
        var vm = new Vue({
            el: '#app',
            data: {
                smsg: ''
            },
            methods: {
                handle(val) {
                    console.log(1);
                    this.smsg = val
                }
            }
        })
    </script>
</body>

3.兄弟之间的传值

  1. 兄弟之间传递数据需要借助于事件中心,通过事件中心传递数据

    提供事件中心 var hub = new Vue()
  2. 在每个兄弟组件上添加hub.$emit(方法名,传递的数据)触发自定义事件

  3. 在mounted(){} 钩子中 触发hub.$on()方法名添加监听事件

  4. 销毁事件 通过hub.$off()方法名销毁之后无法进行传递数据

<body>
    <div id="app">
        <div>父组件</div>
        <div>
            <button @click='handle'>销毁证据</button>
        </div>
        <test-tom></test-tom>
        <test-jerry></test-jerry>
    </div>
​
    <script src="./js/vue.js"></script>
    <script>
        //1.提供事件中心
        var hub = new Vue();
​
        Vue.component('test-tom', {
            data() {
                return {
                    num: 0
                }
            },
            template: `
            <div>
            <div>TOM:{{num}}</div>
            <div>
                <button @click='handle'>点击</button>
            </div>
        </div>`
            ,
            methods: {
                handle() {
           //2、传递数据方,通过一个事件触发hub.$emit(方法名,传递的数据)   触发兄弟组件的事件
                    hub.$emit('jerry-event', 1);
                }
            },
            mounted() {
            // 3、接收数据方,通过mounted(){} 钩子中  触发hub.$on()方法名
                hub.$on('tom-event', (val) => {
                    this.num += val
                })
            }
        });
​
        Vue.component('test-jerry', {
            data() {
                return {
                    num: 0
                }
            },
            template: `
            <div>
            <div>JERRY:{{num}}</div>
            <div>
                <button @click='handle'>点击</button>
            </div>
        </div>`,
            methods: {
                handle() {
                    hub.$emit('tom-event', 2)
                }
            },
            mounted() {
                hub.$on('jerry-event', (val) => {
                    this.num += val;
                });
            }
        });
        var vm = new Vue({
            el: '#app',
            data: {
            },
            methods: {
                handle() {
             //4、销毁事件 通过hub.$off()方法名销毁之后无法进行传递数据 
                    hub.$off('tom-event');
                    hub.$off('jerry-event');
​
                }
            }
​
        })
    </script>
</body

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。
基于GPT-SoVITS的视频剪辑快捷配音工具 GPT, 通常指的是“Generative Pre-trained Transformer”(生成式预训练转换器),是一个在自然语言处理(NLP)领域非常流行的深度学习模型架构。GPT模型由OpenAI公司开发,并在多个NLP任务上取得了显著的性能提升。 GPT模型的核心是一个多层Transformer解码器结构,它通过在海量的文本数据上进行预训练来学习语言的规律。这种预训练方式使得GPT模型能够捕捉到丰富的上下文信息,并生成流畅、自然的文本。 GPT模型的训练过程可以分为两个阶段: 预训练阶段:在这个阶段,模型会接触到大量的文本数据,并通过无监督学习的方式学习语言的结构和规律。具体来说,模型会尝试预测文本序列中的下一个词或短语,从而学习到语言的语法、语义和上下文信息。 微调阶段(也称为下游任务训练):在预训练完成后,模型会被应用到具体的NLP任务中,如文本分类、机器翻译、问答系统等。在这个阶段,模型会使用有标签的数据进行微调,以适应特定任务的需求。通过微调,模型能够学习到与任务相关的特定知识,并进一步提高在该任务上的性能。 GPT模型的优势在于其强大的生成能力和对上下文信息的捕捉能力。这使得GPT模型在自然语言生成、文本摘要、对话系统等领域具有广泛的应用前景。同时,GPT模型也面临一些挑战,如计算资源消耗大、训练时间长等问题。为了解决这些问题,研究人员不断提出新的优化方法和扩展模型架构,如GPT-2、GPT-3等,以进一步提高模型的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值