`

vue基础笔记

vue 
阅读更多
1:v-bind绑定变量(字符串的一部分)

<div id="app-9">
  <p v-bind:id="'list-'+num">
    v-bind绑定一部分变量
  </p>
</div>


  var app9 = new Vue({
    el: "#app-9",
    data: {
      num: 1
    }
  })

2: v-on:click 简写 @click


    .stop - 调用 event.stopPropagation()。
    .prevent - 调用 event.preventDefault()。
    .capture - 添加事件侦听器时使用 capture 模式。
    .self - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
    .{keyCode | keyAlias} - 只当事件是从侦听器绑定的元素本身触发时才触发回调。
    .native - 监听组件根元素的原生事件。


3:  调用计算表达式如果message不变,将调用缓存

<div id="app-1">
  <p>{{getDate}}</p>
</div>

  var app1 = new Vue({
    el: "#app-1",
    data: {
      message: "日期"
    },
    computed: {
      getDate: function(){
        return this.message + ": " + Date.now()
      }
    }
  })

app1.getDate 多次调用时,调用的是缓存.如果message的值改变,那么app1.getDate返回值才会更新

4: computed中添加set和get方法自定义赋值和读取表达式

<div id="app-1">
  <p>{{fullName}}</p>
</div>

  var app1 = new Vue({
    el: "#app-1",
    data: {
      firstName: "zhang",
      lastName: "cai yan"
    },
    computed: {
      fullName: {
        get: function(){
          return this.firstName + "  1   " + this.lastName
        },
        set: function(newValue){
          this.firstName = newValue.split(" ")[0]
          this.lastName = newValue.split(" ")[1]
        }
      }
    }
  })

5: watch

<div id="app-1">
  你来自什么星球: <input v-model="question"><br/>

  <span>{{answer}}</span>
</div>

  var app1 = new Vue({
    el: "#app-1",
    data: {
      question: "",
      answer: "请回答问题...."
    },
    watch: {
      question: function(){
        this.answer = "回答中...."
      }
    }
  })

6: v-bind:class 传入对象

1):
<div id="app-1">
  <div class="star" v-bind:class="{active: isActive, current: isCurrent}">对象语法</div>
</div>

  var app2 = new Vue({
    el: "#app-1",
    data: {
      isActive: true,
      isCurrent: true
    }
  })

2):
<div id="app-1">
  <div class="name" v-bind:class="classObject">对象语法</div>
</div>


  var app1 = new Vue({
    el: "#app-1",
    data: {
      classObject: {
        'active': true,
        'text-danger': true
      }
    }
  })

3):
<div id="app-1">
  <div class="name" v-bind:class="classObject">对象语法</div>
</div>


  var app1 = new Vue({
    el: "#app-1",
    data: {
      classObject: {
        'active': true,
        'current': true
      }
    },
    computed: {
      classObject: function(){
        return{
          active: this.isActive,
          current: this.isCurrent
        }
      }
    }
  })


4):

<div id="app-1">
  <div class="name" v-bind:class="[active, {blue: isBlue}, isCurent ? 'current' : '']">对象语法</div>
</div>

  var app1 = new Vue({
    el: "#app-1",
    data: {
      active: 'active',
      isBlue: true,
      isCurrent: true
    }
  })


7: 组件 注意: 使用组件时,组件添加了class样式后,会添加到组件中的模板class,如下

<div id="app-2">
  <my-template class="blue" v-bind:class="{green: isGreen}"></my-template>
</div>

  Vue.component("my-template", {
    template: "<p class='red' style='color:red;'>组建</p>"
  })

  var app2 = new Vue({
    el: "#app-2"
  })

8: v-bind:style 和 v-bind:class的使用方式差不多,对象中有数组、hash形式,并且在数组中可以使用表达式,不一样的是v-bind:class中的hash是样式名称对应布尔型数据,而v-bind:style中的hash是style的样式名称和值的对应,class中数组的元素是class样式名称的变量,而style中的数组元素是对象,class中的样式对象是直接添加。


<div id="app-2">
  <p v-bind:style="[sizeObject, weightObject, {color: red, height: height+'px'}]">对象</p>
</div>


  var app1 = new Vue({
    data: {
      red: 'green',
      height: 25,
      sizeObject: {
        fontSize: '20px'
      },
      weightObject: {
        fontWeight: 'bold'
      }
    },
    el: "#app-1"
  })

9:  v-if、v-else-if、v-else、v-show,v-show和v-if的区别是,v-if如果为true才渲染,false不会渲染,v-show是display,无论是否为true都会渲染

<div id="app-3">
  <p v-if="isSmall">small</p>
  <p v-else-if="isMiddle">middle</p>
  <p v-else>big</p>
</div>

  var app3 = new Vue({
    el: "#app-3",
    data: {
      isSmall: false,
      isMiddle: true
    }
  })

10:  vue尽可能复用元素,这样就可以提高渲染效率,如果不要复用,而强制重新渲染。

<div id="key-example" class="demo">
  <template v-if="loginType === 'username'">
    <label>Username</label>
    <input placeholder="Enter your username" key="username-input">
  </template>
  <template v-else>
    <label>Email</label>
    <input placeholder="Enter your email address" key="email-input">
  </template>
  <button v-on:click="toggleLoginType">切换</button>
</div>

  new Vue({
    el: '#key-example',
    data: {
      loginType: 'username'
    },
    methods: {
      toggleLoginType: function () {
        return this.loginType = this.loginType === 'username' ? 'email' : 'username'
      }
    }
  })


11: v-for: 数组、对象


1)<li v-for="item in items">{{item.message}}</li>

2)<li v-for="(item, index) in items">{{index}}  {{item.message}}</li>

3)
<li v-for="item in object">  {{item}}</li>
<li v-for="(value, key) in object"> {{key}} {{value}}</li>
<li v-for="(value, index, key) in object">{{index}} {{key}} {{value}}</li>

  var app1 = new Vue({
    el: '#app-1',
    data: {
      object: {
        firstName: "zhang",
        lastName: "san"
      }
    }
  })

4) <li v-for="n in 10">{{n}}</li>

  var app1 = new Vue({
    el: '#app-1',
    data: {
      object: {
        firstName: "zhang",
        lastName: "san"
      }
    }
  })

5) <li v-for="n in newNumbers">{{n}}</li>

var app1 = new Vue({
  el: '#app-1',
  data: {
    numbers: [1,2,3,4,5]
  },
  computed: {
    newNumbers: function(){
      return this.numbers.filter(function(number){
        return number % 2 === 0
      })
    }
  }
})

12: 数组中添加的方法: push, unshift, pop, shift, splice, slice, filter, sort, reverse, concat

直接使用下标添加数组元素,Vue无法检测到数组的变动,可以使用set方法来实现Vue.set(app1.todos, 9, "b")

13: v-mode 实现文本框数据双向绑定

1):
<div id="app-1">
  <input type="checkbox" id="checkbox" v-model="checked">
  <p>{{checked}}</p>
</div>

var app1 = new Vue({
  el: "#app-1",
  data: {
    checked: true
  }
})

2): 绑定为一个数组

<div id="app-1">
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
<label for="jack">Jack</label>
<input type="checkbox" id="john" value="John" v-model="checkedNames">
<label for="john">John</label>
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames">
<label for="mike">Mike</label>
<br>
<span>Checked names: {{ checkedNames }}</span>
</div>

var app1 = new Vue({
  el: "#app-1",
  data: {
    checkedNames: []
  }
})

3): 绑定到单选按钮中(radio)

<div id="app-2">
  <input type="radio" v-model="picked" value="One">
  <label>One</label>
  <br/>
  <input type="radio" v-model="picked" value="Two">
  <label>Two</label>
  <br/>
  <span>Picked: {{picked}}</span>
</div>


var app2 = new Vue({
  el: "#app-2",
  data: {
    picked: "One"
  }
})


4) select下拉框绑定值


<div id="app-1">
  <select v-model='selectValue'>
    <option value="a">a</option>
    <option value="b">b</option>
    <option value="c">c</option>
  </select>
  <span>selectValue: {{ selectValue }}</span>
</div>

var app1 = new Vue({
  el: "#app-1",
  data: {
    selectValue: 'c'
  }
})


5) multiple select

<div id="app-1">
  <select v-model='selectValue' multiple>
    <option value="a" v-for="option in options" v-bind:value="option.value">{{option.text}}</option>
  </select>
  <span>selectValue: {{ selectValue }}</span>
</div>


var app1 = new Vue({
  el: "#app-1",
  data: {
    selectValue: ['C'],
    options: [
      {text: "One", value: "A"},
      {text: "Two", value: "B"},
      {text: "Three", value: "C"}
    ]
  }
})

6) 修饰符
number  自动转换为数字
trim  自动过滤两边的空格

<div id="app-1">
  <input v-model.number="msg">
  <span>msg: {{ msg }}</span>
</div>

var app1 = new Vue({
  el: "#app-1",
  data: {
    msg: "111"
  }
})

typeof app1.msg 

14: 组件  全局和局部,使用模板可以直接使用模板名称或者通过is指定,组件中可以使用Vue构造器中的大多数选项,但是使用data的时候一定要是函数。

1)
全局:
<div id="app-1">
  <my-component></my-component>
</div>

Vue.component("my-component", {
  template: "<div>模板</div>"
})

var app1 = new Vue({
  el: "#app-1",
})


2)
局部:

<div id="app-2">
  <my-component2></my-component2>
  或
  <div is="my-component2"></div>
</div>


var app2 = new Vue({
  el: "#app-2",
  components: {
    "my-component2": {
      template: "<div>模板2</div>"
    }
  }
})


3) 组件中使用data

<div id="app1">
  <my-component></my-component>
  <my-component></my-component>
  <my-component></my-component>
</div>


  Vue.component('my-component', {
    template: '<button v-on:click="counter+=1">{{name}}: {{ counter }}</button>',
    data: function(){
      return {
        name: "点击加一",
        counter: 0
      }
    }
  })

  new Vue({
    el: '#app1'
  })

4) props传递参数

<div id="app1">
  <my-component v-bind:message="message1" v-bind:count="count1"></my-component>
  <my-component v-bind:message="message2" v-bind:count="count2"></my-component>
</div>


  Vue.component('my-component', {
    template: '<button v-on:click="counter+=count">{{message}} {{counter}}</button>',
    props: ["message", "count"],
    data: function(){
      return {
        counter: 0
      }
    }
  })

  new Vue({
    el: '#app1',
    data: {
      message1: "点击加一",
      message2: "点击加二",
      count1: 1,
      count2: 2
    }
  })

5)  自定义prop中的type类型,默认值 String、Number、Boolean、Function、Object、Array

数组/对象的默认值应当由一个工厂函数返回

<div id="app1">
  <input v-model="message">
  {{message}}
  <my-component v-bind:message="message" v-bind:message1="message1" v-bind:count="count1"></my-component>
</div>


  Vue.component('my-component', {
    template: '<button v-on:click="counter+=count">{{message}} {{message1}} {{counter}} {{names}} {{user.name}}</button>',
    props: {
      message: String,
      message1: [String, Number],
      count: {
        type: Number,
        default: 1
      },
      names: {
        type: Array,
        default: function(){
          return [1,2,3]
        }
      },
      user: {
        type: Object,
        default: function(){
          return {
            name: "zhang san"
          }
        }
      }
    },
    data: function(){
      return {
        counter: 0
      }
    }
  })

  new Vue({
    el: '#app1',
    data: {
      message: "",
      message1: "点击加一",
      count1: 1
    }
  })











分享到:
评论

相关推荐

    Vue基础笔记111111111

    Vue.js 是一款流行的前端JavaScript框架,用于构建...以上是Vue.js的基础知识点,包括其核心的MVVM模式、数据绑定、事件处理、条件渲染、循环遍历以及优化技术。掌握这些知识能帮助开发者有效地构建和维护Vue.js应用。

    最新尚硅谷vue系列笔记

    8. **学习资源**:"尚硅谷vue系列笔记"可能包含的是针对Vue.js的学习资料,涵盖基础到高级的内容,帮助开发者深入理解Vue及其应用。`vue-learning-master.zip`和`vue-advance-master.zip`可能是不同阶段的学习资源,...

    vue基础笔记2-自存资料-需要自取

    Toto-list案例源码,需要的自取,打基础的vue练习

    Vue基础笔记,适合小白

    适合小白

    Vue2+Vue3笔记(黑马程序员+尚硅谷)

    学习Vue2+Vue3笔记可以帮助开发者全面掌握Vue.js的两种主要版本,理解它们的异同,以及如何在实际项目中选择合适的版本。黑马程序员和尚硅谷是知名的在线教育平台,它们提供的笔记内容通常覆盖了基础概念、实战案例...

    Vue学习笔记——【尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通-哔哩哔哩】 https://b23.tv/

    Vue学习笔记——【尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通-哔哩哔哩】 https://b23.tv/

    Web前端框架应用:第1章 Vue基础入门-打包工具.pptx

    第1章 Vue基础入门 初识Vue webpack打包工具 Vue开发环境 学习目标 目录 ☞点击查看本节相关知识点 ☞点击查看本节相关知识点 Vue开发环境 ☞点击查看本节相关知识点 1.3 webpack打包工具 安装webpack webpack官网...

    VUE笔记.zip

    2. Vue基础笔记.pdf Vue的基础知识涵盖了组件化、指令、生命周期、响应式系统等多个方面: - 组件化:Vue的核心是组件,可复用的UI单元,通过组合构建复杂应用。 - 指令:如v-if/v-else、v-for、v-bind/v-model等...

    Vue基础培训案例笔记素材等全套课程课件资料.zip

    通过这套Vue基础培训案例笔记素材,你将能够从理论到实践全面了解Vue.js,并具备独立开发Vue项目的技能。无论是对前端开发感兴趣的新手,还是寻求技术进阶的开发者,这都将是一份宝贵的参考资料。

    vue2笔记和案例 vue2 笔记和案例

    本笔记和案例将深入探讨Vue 2的核心概念和实践应用。 1. **Vue实例**: - Vue实例是Vue应用的基础,它包含数据、方法、生命周期钩子等属性。创建Vue实例时,可以传递一个选项对象,定义初始数据、计算属性、方法、...

    本人开发初级阶段学习VUE整理笔记.zip

    这份“本人开发初级阶段学习VUE整理笔记”恰好为想要踏入Vue世界的新手提供了一份宝贵的资源。 在初学者的Vue学习过程中,以下是一些核心知识点: 1. **基础概念**:Vue的核心理念是声明式渲染,通过数据绑定(`v-...

    vue学习笔记及知识点

    vue基础、进阶学习笔记及知识点,vue服务端渲染知识点文件。 swiper的css、js文件。。。。

    vue资料 笔记 源码

    描述中提到的"vue基础资料"意味着这个压缩包可能包含了Vue的基础教程,比如如何安装Vue、如何创建一个基本的Vue项目、Vue的生命周期、指令、组件、计算属性、侦听器等概念。"老师讲课的笔记"通常会详细解释这些概念...

    狂神说Vue笔记完整版

    【狂神说Vue笔记完整版】是一份详细记录Vue.js前端框架学习的资料,涵盖了从前端基础知识到Vue的深入理解,旨在帮助读者从零开始掌握前端开发,特别是Vue.js技术。以下是笔记中的关键知识点: 一、前端核心分析 ...

    Vue学习笔记

    通过学习和实践这些知识点,并按照笔记中的案例动手操作,不仅能够掌握Vue的基础用法,也能逐步熟悉更高级的应用场景,为实际的开发工作打下坚实基础。在阅读和理解笔记时,建议结合官方文档和在线示例加深理解,...

    vue2.x基础笔记(大部分)

    根据提供的文件内容,我们可以归纳出一系列关于 Vue 2.x 的基础知识点。这些知识点涵盖了 Vue 实例的创建、数据绑定、事件处理、自定义指令、组件、生命周期钩子以及实例属性等多个方面。 ### Vue 实例创建 Vue ...

    Vue基础上课笔记.md

    Vue基础上课笔记.md

    vue学习笔记

    本学习笔记将涵盖Vue的基础概念、核心特性以及常见应用场景,帮助初学者建立起对Vue的全面理解。 一、Vue.js简介 Vue.js的核心理念是通过声明式的模板语法来简化DOM元素的更新,实现数据驱动视图。它采用MVVM...

    Vue笔记,Vue笔记,Vue笔记

    Vue笔记主要涵盖了从基础到进阶的各种Vue知识,通过一系列的学习日程,旨在帮助开发者深入理解和熟练掌握Vue框架。 在"Day 01",通常会介绍Vue的基础概念,包括Vue实例的创建、模板语法、数据绑定(如`v-bind`和`v-...

    Vue2.X基础学习笔记 md版本

    Vue2.X基础学习笔记 md版本

Global site tag (gtag.js) - Google Analytics