• Vue 官方文档2.x教程学习笔记 1 基础 1.2 介绍 1.2.5 处理用户输入 & 1.2.6 组件化应用构建 & 1.2.7 与自定义元素的关系


    Vue 官方文档2.x教程学习笔记

    1 基础

    1.2 介绍
    1.2.5 处理用户输入

    为了让用户和你的应用进行交互,我们可以用 v-on 指令添加一个事件监听器,通过它调用在 Vue 实例中定义的方法:

    <div id="app5">
        <p>{{message}}p>
        <button v-on:click="reverseMessage">反转消息button>
    div>
    <script src="../js/vue.js">script>
    <script>
    
        var app5 = new Vue({
            el: '#app5',
            data: {
                message: 'Hello Vue.js!'
            },
            methods: {
                reverseMessage : function (){
                    this.message = this.message.split('').reverse().join('')
                }
            }
        })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    在这里插入图片描述

    单击按钮后,字符串进行反转操作,整个过程中,我们只是将app5应用的状态,没有触碰过DOM 元素,所有的 DOM 操作都由 Vue 来处理,编写的代码只需要关注逻辑层面即可

    Vue 还提供了 v-model 指令,它能轻松实现表单输入和应用状态之间的双向绑定。

    <div id="app6">
        <p>{{message}}p>
        <input v-model="message">
    div>
    <script src="../js/vue.js">script>
    <script>
        
        var app6 = new Vue({
            el: '#app6',
            data: {
                message: 'Hello Vue!'
            }
        })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    浏览器运行效果

    在这里插入图片描述

    1.2.6 组件化应用构建

    组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型、独立和通常可复用的组件构建大型应用。

    仔细想想,几乎任意类型的应用界面都可以抽象为一个组件树:

    在这里插入图片描述

    在 Vue 里,一个组件本质上是一个拥有预定义选项的一个 Vue 实例。

    在 Vue 中注册组件很简单:

    <div id="app">
        <ol>
            
            <todo-item>todo-item>
        ol>
    div>
    
    <script src="../js/vue.js">script>
    <script>
    
        //定义一个名为todo-item的新组件
        Vue.component('todo-item', {
            template: '<li>这是一个待办项li>>'
        })
    
        var app = new Vue({
            el: '#app',
            data: {}
        })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    页面效果

    在这里插入图片描述

    但是这样会为每一个待办事项都渲染同样的文本,像下面这样

    在这里插入图片描述

    这看起来并不炫酷

    我们应该能从父作用域将数据传到子组件才对。让我们来修改一下组件的定义,使之能够接受一个 prop:

    //定义一个名为todo-item的新组件
    Vue.component('todo-item', {
        // template: '
  • 这是一个待办项
  • >'
    // todo-item 组件现在接受一个"prop",类似于一个自定义 attribute。 // 这个 prop 名为 todo。 props : ['todo'], template: '
  • {{todo.text}}
  • >'
    })
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    现在,我们可以使用 v-bind 指令将待办项传到循环输出的每个组件中:

    <div id="app7">
        <ol>
            <todo-item
                    v-for="item in groceryList"
                    v-bind:todo = 'item'
                    v-bind:key = 'item.id'
            >todo-item>
        ol>
    div>
    
    <script src="../js/vue.js">script>
    <script>
    
        //定义一个名为todo-item的新组件
        Vue.component('todo-item', {
            // template: '<li>这是一个待办项li>>'
            // todo-item 组件现在接受一个"prop",类似于一个自定义 attribute。
            // 这个 prop 名为 todo。
            props: ['todo'],
            template: '<li>{{todo.text}}li>>'
        })
    
        var app7 = new Vue({
            el: '#app7',
            data: {
                groceryList: [
                    { id : 0 , text : '蔬菜'},
                    { id: 1, text: '奶酪' },
                    { id: 2, text: '随便其它什么人吃的东西' }
                ]
            }
        })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    浏览器效果

    在这里插入图片描述

    虽然这是个很刻意的例子,但是我们已经设法将应用分割成了两个更小的单元。

    子单元通过 prop 接口与父单元进行了良好的解耦。我们现在可以进一步改进 组件,提供更为复杂的模板和逻辑,而不会影响到父单元。

    后面还会详细讲解组件

    【一个例子】

    在这里插入图片描述

    1.2.7 与自定义元素的关系

    Vue 组件非常类似于自定义元素——它是 Web 组件规范的一部分,这是因为 Vue 的组件语法部分参考了该规范。

    但是有些差别:

    • Web Components 规范已经完成并通过,但未被所有浏览器原生实现。目前 Safari 10.1+、Chrome 54+ 和 Firefox 63+ 原生支持 Web Components。相比之下,Vue 组件不需要任何 polyfill,并且在所有支持的浏览器 (IE9 及更高版本) 之下表现一致。必要时,Vue 组件也可以包装于原生自定义元素之内。
    • Vue 组件提供了纯自定义元素所不具备的一些重要功能,最突出的是跨组件数据流、自定义事件通信以及构建工具集成。

    虽然 Vue 内部没有使用自定义元素,不过在应用使用自定义元素、或以自定义元素形式发布时,依然有很好的互操作性。Vue CLI 也支持将 Vue 组件构建成为原生的自定义元素。

  • 相关阅读:
    手把手教你制作手机底部导航栏,领导看完都说好
    【HarmonyOS NEXT】鸿蒙customScan (自定义界面扫码)
    数据链路层重点协议-以太网
    数据库到底是什么?举例MySQL给你讲明白
    【数据结构】树和二叉树概念及其结构
    【mac】常用命令01
    mysql安装
    tomcat部署和优化(二)----- 轻松搭建博客、状态页优化、虚拟主机配置
    docker安装卸载及基础命令
    Vue学习笔记
  • 原文地址:https://blog.csdn.net/weixin_44226181/article/details/127564757