• Vue2.5去哪儿学习笔记【一】


    一、Vue简介

    Vue官方文档:https://cn.vuejs.org/

    Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

    二、Vue下载

    在官方文档下载开发版本 vue.js

     https://cn.vuejs.org/v2/guide/installation.html

    三、Vue入门使用——HelloWorld案例

    ①在div标签里显示一个Hello World的字符串,应该怎么做?
    JS做法:获取div标签,对其innerHTML属性设置文本内
      
     
    Vue做法:引入Vue库,创建Vue实例管理目标区域的所有内容
     

     其中的el元素限制了实例管理的区域范围,data元素定义一组数据,实例可以通过插值表达式去调用data里的数据

    在div标签里显示一个Hello World的字符串,隔2秒钟去更改里面的内容,应该怎么做?

    JS做法

    Vue做法

    从以上例子可以看出,vue不需要去关注dom上的操作,而是把精力集中到数据的管理上

    四、使用指令实现简易的TodoList

    指令 (Directives) 是带有 v- 前缀的特殊 attribute。

     1.v-for

    v-for是vue的指令之一。
    v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名。
    v-for:告诉vue执行的循环语句,用来迭代、遍历数据

     2.v-on

    v-on是vue的指令之一,用于组件的事件绑定。

     3.v-model

    v-model是vue的指令之一.
     v-model:实现数据的双向绑定。
    当给某个组件添加指令v-model双向绑定某个数据后,组件绑定的数据发生变化时,vue实例里data的数据也会发生变化,页面也会发生变化。
    同理,vue实例里data的数据发生变化,组件绑定的数据也会发生变化,页面也会发生变化。

    4.简易TodoList案例

    案例介绍:在文本框输入内容后按提交,即可把内容添加到下面的列表中。

    该案例可以通过以上3个vue指令来实现。

    给input添加指令v-model双向绑定一个名为inputValue的数据后,当input框里的内容发生变化的时候,vue实例里data的inputValue也会发生变化,页面也会发生变化。
    v-on:click="handleBtnClick" 给组件绑定点击事件
    v-for = "item in list"  可以理解为 遍历list中的每一项保存到item去

    五、前端组件化

              一个页面有好多部分组成。如果没有组件化,业务逻辑会很多,维护起来很困难。一个页面由原来的一个整体划分成一个个部分,每个部分称之为一个组件。把页面拆分成一个个组件之后,会使得代码后续的维护性大大提高。

    六、使用组件化思想修改TodoList

    使用组件化思想修改TodoList:可以将列表项整体变成一个组件

    在这个案例中,需要学习新的指令,一个用于注册一个组件的私有资源和创建组件的方法

     1.v-bind

    v-bind是vue的指令之一.
    v-bind 主要用于属性绑定,比方你的class属性,style属性,value属性,href属性等等,只要是属性,就可以用v-bind指令进行绑定 

     2.Vue.component(实现全局注册)

    Vue.component('component-name', { /* ... */ })

    通过这个方法可以注册一个组件,该组件名就是Vue.component 的第一个参数.

    这些组件是全局注册的。也就是说它们在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中.

    例如:创建一个名为hello的组件,并用在Vue 根实例 (new Vue) 的模板中

     3.props和template

    pros和template在创建或注册组件时经常用到。

    props 代表了当前组件预期从父组件处获得的外部数据。可以和v-bind搭配使用。props 选项有一个简单的基于数组的写法,也有一个可选的基于对象的写法。
    template意为模板,用来写 html 模板

     4.使用组件化思想修改TodoList

    修改之前的TodoList案例

    ①全局组件的使用:使用Vue.component方法全局注册组件

    ②局部组件的使用:在vue实例使用components:{tagName:option}(tagname是自定义的组件名称,option是组件构造器)。需要将局部组件注册到实例里

    5.总结

    不管是全局组件还是局部组件,组件的使用有三个步骤:

    1、创建组件构造器

    2、注册组件

    3、使用组件

    全局组件使用Vue.component方法;局部组件使用components:{tagName:option}

    组件中使用camelCased(驼峰式)命名,在html中应改为kebab-case(短横线)命名方式。

    七、简单的组件间传值

    父组件向子组件传值:使用子组件的时候,通过v-bind的绑定的变量的值,把对应的值传给子组件

    子组件向父组件传值:子组件可以使用 $emit 触发父组件的自定义事件。 vm.$emit( event, arg )

    修改TodoList案例:点击列表项时可以将其删除

    <div id="app">
         <input type="text" v-model="inputValue">
         <button v-on:click="handleBtnClick">提交</button>
         <ul>
             <todo-item :content="item" :index="index" v-for="(item,index) in list" @delete="handleItemDelete"></todo-item>
         </ul>
    </div>
    
    <script>
          var TodoItem = {
              props: ['content', 'index'],
              template: "<li @click='handleItemClick'>{{content}}</li>",
              methods: {
                 handleItemClick: function() {
                 this.$emit("delete", this.index);
                 }
              }
          }
          var app = new Vue({
              el: '#app',
              components: {
                  TodoItem: TodoItem
              },
              data: {
                  list: [],
                  inputValue: ''
              },
              methods: {
                  handleBtnClick: function() {
                     this.list.push(this.inputValue)
                     this.inputValue = ''
                 },
             handleItemDelete: function(index) {
                  this.list.splice(index, 1)
                 }
             }
         })
     </script>

    父组件可以使用 props 把数据传给子组件。

    子组件可以使用 $emit 触发父组件的自定义事件。

    v-bind:数据变量名 简写为 :数据变量名

    v-on:事件名 简写为 @事件名

    不同于组件和 prop,事件名不存在任何自动化的大小写转换。而是触发的事件名需要完全匹配监听这个事件所用的名称。因此推荐使用 kebab-case 的事件名。

  • 相关阅读:
    AGC005D ~K Perm Counting
    运行python脚本后台执行
    java枚举类型
    java可变参数长度
    java 泛型数组列表
    java抽象类
    java final使用
    java继承
    java 对象
    java 重载
  • 原文地址:https://www.cnblogs.com/Small-Windmill/p/14309140.html
Copyright © 2020-2023  润新知