vue的基本使用

vue

渐进式JavaScript 框架

vue 的挂载点

提供的元素只能作为挂载点。不同于 Vue 1.x,所有的挂载元素会被 Vue 生成的 DOM 替换。因此不推荐挂载 root 实例到 或者 上。

  1. 通过 el 属性 设置挂载点
const  app = new Vue({
    //  #app 对应的是页面中的div#app
    el:'#app'
})
  1. 通过显示调用 $mount() 方法
const  app = new Vue({
    //  #app 对应的是页面中的div#app
}).$mount('#app')

vue的数据

vue的数据都是在data属性中进行存储

const  app = new Vue({
    //  #app 对应的是页面中的div#app
    el:'#app',
    //  vue的数据存储
    data:{
        msg:'hello vue'
    }
})

vue的指令

  1. v-if v-else v-else-if
  2. v-for
  3. v-on
  4. v-bind
  5. v-html
  6. v-text
  7. v-show
  8. v-model
  9. v-pre
  10. v-once
  11. v-cloak
  12. v-slot

vue的插值语法

  1. 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号{{}}) 的文本插值:
<标签名>{{data中的key}}</标签名>
  1. 通过指令进行插值 v-html v-text
  • v-html: 可以识别标签, 作用就是标签内部插入子元素
<标签名 v-html='data中的key'></标签名>
  • v-text: 不能识别标签, 作用就是标签内部插入纯文本, 类似于 {{}}
<标签名 v-text='data中的key'></标签名>

vue的条件渲染 v-if v-else

<标签名 v-if='data中的key'></标签名>
<标签名 v-else-if='data中的key'></标签名>
<!--  v-else 后边没有表达式 -->
<标签名 v-else></标签名>

vue的列表渲染(循环)v-for

  • 遍历数组
<!--  item 就是数组的中每个值 -->
<标签名 v-for='item in data中的key(数组)' :key='item'></标签名>
<!-- 获取索引值: 传入第二个参数 index -->
<标签名 v-for='(item, index) in data中的key(数组)' :key='index'></标签名>
  • 遍历对象
<!--  value 就是对象中的值-->
<标签名 v-for='value in data中的key(对象)' :key='item'></标签名>
<!-- 获取对象的键: 传入第二个参数 name -->
<标签名 v-for='(value, name) in data中的key(对象)' :key='index'></标签名>
<!--  获取对象的索引值: 传入第三个参数 index -->
<标签名 v-for='(value, name, index) in data中的key(对象)' :key='index'></标签名>
  • 直接循环
<!--  number 具体的数值 -->
<标签名 v-for='item in number' :key='item'></标签名>

v-for=‘item in items’ 形式, 也可以把 in 替换 为 of
你也可以用 of 替代 in 作为分隔符,因为它更接近 JavaScript 迭代器的语法:

元素的出现和隐藏

v-if 和 v-show 都可以控制元素的出现和隐藏;
但是原理不同; v-if是通过创建和销毁DOM实现控制元素的出现和隐藏; v-show是 通过css样式 display:none 控制DOM的出现和隐藏

使用场景:一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好

<标签名 v-if='data中的key'></标签名>
<标签名 v-show='data中的key'></标签名>

vue的事件绑定 v-on

v-on事件绑定可以简写 : v-on: 整体简写为 @

<!-- 直接绑定事件 -->
<标签名 v-on:事件名='methods中的方法名'></标签名>
<标签名 @事件名='methods中的方法名'></标签名>
<!--  可以添加事件修饰符 -->
<标签名 v-on:事件名.事件修饰符='methods中的方法名'></标签名>
<!--  事件修饰符 根据实际功能确定 -->
<标签名 v-on:事件名.事件修饰符1.事件修饰符2='methods中的方法名'></标签名>

vue的属性绑定 v-bind

绑定标签的属性

  1. 绑定标签固有的属性
<标签名 v-bind:src='data中的key'  v-bind:title=''></标签名>

<!--  案例: 绑定原始的字符串, 需要给字符串加引号 -->
<p v-bind:title=' "直接挟制了" '>属性绑定</p>

<!--  可以进行字符串拼接 -->
<p v-bind:title=' "直接挟制了" + str'>属性绑定</p>
  1. 绑定自定义属性
<标签名 v-bind:index='data中的key' ></标签名>

绑定样式

  1. 通过绑定行内样式
<!--  绑定单一的样式值 使用对象的形式, {key:value} key是样式属性名(确定的), value 是绑定的属性值(动态改变的),对应data中的key -->
<标签名 v-bind:style='{color:data中的key}' ></标签名>

<!--  直接绑定样式对象  -->
<标签名 v-bind:style='data中的key' ></标签名>

<!--  绑定多个样式对象 和单一样式值  使用数组的形式(综合应用 ) -->
<标签名 v-bind:style='[data中的key, ....] '></标签名>

  1. 通过绑定类名class
<!--  绑定一个类名  -->
<标签名 v-bind:class='data中的key' > </标签名>

<!--  动态绑定类名: 类名的添加和移除通过条件控制  使用对象的形式 ; className 就是类名 -->
<标签名 v-bind:class='{className: data中的key}' > </标签名>

<!--  绑定多个类名  使用数组的形式-->
<标签名 v-bind:class='[data中的key, data中的key2, {className:data中的key}]' > </标签名>

<!--  固定类名和绑定类名 固定类名需要添加引号,使用数组的形式 -->
<标签名 v-bind:class='[ "wrap",   data中的key, data中的key2, {className:data中的key}]' > </标签名>

vue的双向数据绑定 v-model

v-model 主要是绑定表单元素的

<表单元素标签 v-model='data中的key' > 

<!--  获取用户输入的值 -->
<input type='text'  v-model='data中的key' > 


<!--  绑定单个复选框: 绑定一个布尔值   在vue的实例中定义 checked:true  -->
<input type="checkbox" id="checkbox" v-model="checked">
<label for="checkbox">{{ checked }}</label>


<!--  绑定多个复选框: 绑定一个数组  -->

跳过编译 v-pre

v-pre没有表达式; 效果: 原始展示 {{}} 语法(写什么就是什么); 跳过该元素和其子元素的编译过程

<标签名 v-pre>{{内容是原样输出,不会编译}}</标签名>

初始化渲染一次 v-once

没有表达式; 只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

<标签名 v-once>{{data中key; 内容只会被渲染一次,后期改变,不会响应}}</标签名>

v-cloak (可以避免{{}}的闪烁的效果)

没有表达式; 这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。

<style>
    [v-cloak]{display: none}
</style>
<标签名 v-cloak>{{data中key; 直到实例编译结束才渲染}}</标签名>

vue的计算属性 computed

计算属性是一个函数,本质依然是属性, 用法和data的用法一样;

为什么使用计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护;所以,对于任何复杂逻辑,你都应当使用计算属性。

计算属性的基础

const app = new Vue({
    el:'#app',
    computed:{
        自定义的属性名(){
            //  业务逻辑处理
            // 通过return 返回处理后的结果
            return result;
        }
    }
})

计算属性传参

计算属性可以接受多个参数的,但是需要通过闭包的形式进行传递

const app = new Vue({
    el:'#app',
    computed:{
        自定义的属性名(){
            return function(params){
                //  业务逻辑处理
                // 通过return 返回处理后的结果
                return result;
            }
        }
    }
})

计算属性的setter 和 getter

计算属性默认只有getter属性, 如果需要,也可以手动设置setter

const app = new Vue({
    el:'#app',
    data:{
        // data中必须定义一个变量进行接受set的值
        msg:''
    }
    computed:{
        自定义的属性名:{
            set(value){
                this.msg = value;
            },
            get(){
                return this.msg
            }
        }
    }
})

vue的过滤器 filter

自定义过滤器,可被用于一些常见的文本格式化处理

过滤器的使用场景

过滤器可以用在两个地方:双花括号插值和 v-bind 表达式 过滤器应该被添加在 JavaScript 表达式的尾部,由“管道”符号 | 指示

过滤器的基础

过滤器默认接受的参数就是要处理的数据, 其实就是过滤器前边的数据(data中的key)

  1. 定义过滤器
//  定义过滤器
const app = new Vue({
    el:'#app',
    data:{
        msg:'hello vue'
    },
    filters:{
        自定义的过滤器名字(value){
            //  业务逻辑处理 value
            // 通过return 返回处理后的结果
            return result;
        }
    }
})
  1. 使用过滤器
<标签名> {{msg | 自定义过滤器名字}}</标签名>

过滤器传参

过滤器可以接受多个参数: 第一个参数是要处理的数据,后边的参数就是传递的参数

  1. 定义过滤器 接受多个参数
//  定义过滤器
const app = new Vue({
    el:'#app',
    data:{
        msg:'hello vue'
    },
    filters:{
        自定义的过滤器名字(value, arg1, arg2, ...){
            //  业务逻辑处理 value
            // 通过return 返回处理后的结果
            return result;
        }
    }
})
  1. 使用过滤器 传递参数
<标签名> {{msg | 自定义过滤器名字(value1, value2, ...)}}</标签名>

定义多个过滤器

定义多个过滤器,过滤器按照从左到右的顺序依次执行, 上一次执行的结果作为下一次执行的数据, 链式用法

  1. 多个过滤器
//  定义过滤器
const app = new Vue({
    el:'#app',
    data:{
        msg:'hello vue'
    },
    filters:{
        自定义的过滤器名字1(value, arg1, arg2, ...){
            //  业务逻辑处理 value
            // 通过return 返回处理后的结果
            return result;
        },
         自定义的过滤器名字2(value, arg1, arg2, ...){
            //  业务逻辑处理 value
            // 通过return 返回处理后的结果
            return result;
        }
    }
})
  1. 使用过滤器
    多个过滤器之间使用管道符号 | 进行链接
<标签名> {{msg | 自定义过滤器名字1(value1, value2, ...) | 自定义过滤器名字2(value1, value2, ...)}}</标签名>

全局过滤器

全局过滤需要在vue的实例化之前进行定义; 全局过滤器定义在Vue对象上的
用法和局部过滤器用法一样

Vue.filter('自定义过滤器名字', (value) => {
    // 逻辑处理
    return result;
})

const app = new Vue({
    el:'#app'
})

全局过滤器和局部过滤器重名问题:当全局过滤器和局部过滤器重名时,会采用局部过滤器。

vue的生命周期created

创建后自动执行的一个钩子函数;在组件创建后可以发起数据请求

const app = new Vue({
    el:'#app',
    data:{
        msg:'hello vue'
    },
   created(){
    //    可以在此处发起请求
     axios.get().then(res => {})
   }
})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值