组件基础

作者: 北街九条狗 | 来源:发表于2019-07-02 18:07 被阅读0次
组件的入门
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <!-- 使用组件 -->
        <login-com></login-com>
        <register-com></register-com>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        // 全局组件声明有三种方式,这里只讲一种
        Vue.component('login-com', {
            template : `<div><h1>这是我们的 login 组件</h1></div>`, // html模板内容
        })

        Vue.component('register-com', {
            template : `<div><h1>这是我们的 register 组件</h1></div>`, // html模板内容
        })

        var vm = new Vue({
            el : "#app", 
            data : {},
        })
    </script>

</body>
</html>
组件的私有化
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <!-- <my-btn></my-btn>
        <my-btn></my-btn>
        <my-btn></my-btn> -->

        <mybtn></mybtn>
        
    </div>

    <script src="./js/vue.js"></script>
    <script>
        // my-btn 命名 通常为 xx-xxx 一般不要起myBtn这种组件名,如果一定要使用,使用组建时也必须是<my-btn></my-btn>
        Vue.component('my-btn', {
            template : `<button @click="num++">您已经点击我 {{num}} 次了</button>`,
            data() { // data是一个函数,才能复用
                return {
                    num : 0
                }
            },
        });

        // 声明一个组件对象
        var mybtn = {
            template : `<button @click="num++">您已经点击我 {{num}} 次了</button>`,
            data() { // data是一个函数,才能复用
                return {
                    num : 10
                }
            },
        }

        var vm = new Vue({
            el : "#app", 
            data : {},
            components : { // 注册局部组件
                mybtn, // 等同于 'mybtn' : mybtn
            }
        })
    </script>
</body>
</html>
组件的切换
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <input type="button" value="toggle" @click="onOff=!onOff">
        <login-com v-if="onOff"></login-com>
        <register-com v-else></register-com>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        Vue.component('login-com', {
            template : `<h1>这是 login 组件</h1>`
        })

        Vue.component('register-com', {
            template : `<h1>这是 register 组件</h1>`
        })

        var vm = new Vue({
            el : "#app", 
            data : {
                onOff : true
            },
        })
    </script>
</body>
</html>
组件间的传值-向组件内传值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <login :title="msg" :abc="msg"></login>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        Vue.component('login', {
            template : `<h1> 这是 login 组件 -- {{num}} -- {{title}} -- {{abc}} </h1>`,
            data() {
                return {
                    num: 123
                }
            },
            props : ['title','abc']
        })

        var vm = new Vue({
            el : "#app", 
            data : {
                msg : '标题信息22222'
            },
        })
    </script>

</body>
</html>
组件间传值-向组件外传值
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <son @func="show"></son>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        Vue.component('son', {
            template : `<button @click="sendMsg">发送数据</button>`,
            data() {
                return {
                    num : 1234
                }
            },
            methods :{
                sendMsg(){
                    // console.log('son : ' + num);
                    // $emit 触发组件上的事件
                    this.$emit('func',this.num);// 第一个参数是需要触发当前组件身上的函数,第二个参数要发送的数据
                }
            }
        })

        var vm = new Vue({
            el : "#app", 
            data : {},
            methods: {
                show(num){
                    console.log('app : ' + num);
                }
            },
        })
    </script>

</body>
</html>
ref获取元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>

    <div id="app">
        <button @click="getMsg">获取元素内容</button>
        <h1 ref="myh1">这是一个<span>大标题</span></h1>
        <login ref="mylogin"></login>
    </div>

    <script src="./js/vue.js"></script>
    <script>

        Vue.component('login',{
            template : `<h1> 这是 login 组件 </h1>`,
            data() {
                return {
                    name : '张三'
                }
            },
        })

        var vm = new Vue({
            el : "#app", 
            data : {},
            methods: {
                getMsg(){
                    console.log("innerHTML : "+this.$refs.myh1.innerHTML);
                    console.log("innerText : "+this.$refs.myh1.innerText);

                    console.log(this.$refs.mylogin.name);
                }
            },
        })
    </script>

</body>
</html>

相关文章

  • Angular组件篇

    Angular组件 一:组件基础 1:什么是组件? 组件(Component)是构成Angular应用的基础和核心...

  • 组件化流程

    组件化创建大致步骤,以项目、基础组件为例 1、创建项目、基础组件远程仓库 创建项目远程仓库,基础组件远程仓库如下 ...

  • DataPicker

    Android基础:Date & Time组件(上)Android基础:Date & Time组件(下)

  • vue命名规范

    自用vue变量命名规范 props 驼峰式命名 事件 组件 组件文件 基础组件名 基础组件名 name Pasca...

  • 应用程序UI编程

    基础组件 基础内容组件 表单组件 微信小程序伸缩布局 视图容器 view scroll-viewswiper-view

  • Flutter - UI基础

    Flutter基础组件用Flutter构建漂亮的UI界面 - 基础组件篇Flutter滚动型容器组件 - List...

  • 组件化

    组件构成 基础组件(分类) 功能组件 业务组件 (骨架) 创建私有库

  • 组件化之路—集成组件SDK

    介绍 组件化的前提是要有基础组件、功能组件、业务组件这三大块。其中基础组件和功能组件都可以做成SDK,可以供其他A...

  • 远程私有库设计优化

    问题描述 : 一般我们在设计组件的时候分为基础组件 功能组件 业务组件 假如在基础组件中写的模块越来越多,那我们在...

  • 两篇文章搞定ReactNative之搞定ReactNative

    View View组件是ReactNative的最基础组件,所有ReactNative UI都需要在View的基础...

网友评论

    本文标题:组件基础

    本文链接:https://www.haomeiwen.com/subject/modthctx.html