美文网首页
2021-vue-基础语法

2021-vue-基础语法

作者: 世玉茹花 | 来源:发表于2021-09-07 11:38 被阅读0次

1、
mounted 当页面加载完自动执行的函数
setInterval 定时器方法

 mounted() { //当页面加载完成自动执行的函数
            setInterval(() => {
                this.content += 1 //this.content 就是this.$data.content
            },1000),
            console.log('mounted')//自动执行,
        },

2、v-
v-on :绑定事件
v-on:click = ""

v-if:隐藏与显示
v-if="show"

v-for:遍历数组
v-for=""

<li v-for="(item,index) of list">{{item}} {{index}}</li>

v-model:双向绑定
v-model:输入框内容和value值进行双向绑定

 <input v-model="inputValue"></input>

3、
v-bind :标签属性跟值进行绑定
多个绑定,则需要写多个v-bind

 <todolist v-for="(item,index) of list" v-bind:content="item" v-bind:indexItem="index" />

拆分vue组件:

先注册vue实例 :const app = Vue.createApp({})
在拆分component组件

app.component( 'todolist',{
        // data() {
        //     return {
        //         item:"hello dell"
        //     }
        // },
        //外部传参
       props:["content","indexItem"],
       template:'<li>{{indexItem}} -- {{content}}</li>'
    });
props:进行组件传参定义;
一个组件写法跟一个跟vue最初实例方法是类似的,包含数据data,以及渲染的结构,逻辑。

最后挂载mount root上

app.mount('#root');

4、面向数据编程,数据模版关联起来,参考mvvm模式
createApp表示创建一个应用,存储在app变量中。
一个网页应用是由一个个组件组成的

//vm表示vue应用的根组件
const vm = app.mount('#root');

5、vue生命周期
生命周期函数:在某一时刻自动执行的函数

    //在实例执行之前执行的函数
    beforeCreate(){
      console.log('beforeCreate')
    },

    //实例创建之后执行的函数
    created() {
        console.log('created')
    },

    //组件被渲染到页面之前执行的函数  【在模版被编译成函数之后】
    beforeMount() {
        console.log('beforeMount')
    },

    //组件被渲染完成之后执行的函数
    mounted() {
        console.log('mounted')
    },

    //当data中数据发生变化会执行
    beforeUpdate(){
        console.log('beforeUpdate')
    },

    //当data数据发生变化,同时页面完成更新时,才会执行
    updated() {
        console.log('updated')
    },

    //当vue应用失效时,自动执行的函数
    beforeUnmount() {
        console.log('beforeUnmount')
    },

    //当应用失效时,且dom完全销毁之后,自动执行的函数。
    unmounted() {
        console.log('unmounted')
    },

当创建实例中有template,则把其当作模版;
如果没有,就把root结点下的dom当作模版来;

6、
title标签:鼠标点上去显示的title内容

 template:'<div v-bind:title="message">hello world</div>' 

v-html:可以展示一个html的字段样式
v-once:数据变化也会根据数据变化去重新做渲染
v-on:click = "" 等价于 @click = ""
v-bind:title = "" 可以简写为:title = ""

阻止按钮行为一:form添加click,click方法中写:e.preventDefault();
阻止行为方式二: 修饰符语法:@click.prevent="handleItemClick"

7、data数据 && 方法methods && 计算属性computer && watcher监听器
(1)methods 不仅可以在点击方法中用,也可以在插值表达式中用;
注意:当法:只要页面重新渲染,才会重新计算
(2)computer:计算属性:当计算属性依赖的内容发生变化,才会重新执行计算;

computered() {
        return total = this.count * this.price
    },

(3)watcher:监听某个值,发生变化进行函数调用;异步操作较方便

    watch:{
        price() {
            //price价格变了,3秒钟后打印日志
            setTimeout(() =>{
                console.log('price change')
              },3000
            )
        }
    },

总结:
(1)coomputer和method都能实现的一个功能,建议使用computer,因为有缓存。
(2)computer和watcher都能实现的一个功能,建议使用compuuter,因为更简洁。

8、样式绑定

<!-- 1、通过字符串:直接加样式,上面scrpit标签加<style></style> 样式定义,下面模版直接加class="red"就好了。 -->

<!-- 2、可以通过对象:classObject:{red:true,green:false} , -->

<!-- 3、可以通过数组:classArray:['red','green',{brow:flase}] -->

<!-- 4、子组件如果多个div,父组件样式会针对哪个子组件呢,可以通过在子组件中 class="$attrs.class" 来表示子组件用父组件的样式 -->

<!-- 5、行内也能直接加样式,<div style="color:yellow"></div> -->

<!-- 6、data中定义字符串或者定义对象来使用样式,推荐使用对象:
    styleObject:{
    color:'blue',
    background:'red',
    }
 --> 

9、条件渲染:v-if,v-show,v-else,v-if-else区别

<!-- 1、v-if控制div的显示隐藏,是通过控制dom上元素存在与否来控制的 -->

<!-- 2、v-show通过style样式来控制的,通过display:none来设置隐藏 -->

<!--
 3、v-if,v-else用法:
<div v-if="conditionOne">if</div>
<div v-else>else</div> 
-->

<!--
 4、if-else-if用法:
<div v-if="conditionOne">if</div>
<div v-else-if="conditionTwo">elseif</div>
<div v-else>else</div> 
-->

10、循环数组、循环对象、修改数组、修改对象内容

1、修改数组
(1)数组变更:使用数组的变更函数:push,pop等函数
eg:
<!-- 尽量给个key,提升性能,尽量复用 -->
<!-- push函数:增加元素 -->
<!-- pop函数:从下标大的往小的挨着删除 -->
<!-- shift函数:往开头删除内容 -->
<!-- unshift函数:从头开始新增元素 -->
<!-- rverse函数:取反 -->
<!-- splice函数:对一部分内容做变更 :list.splice(index,len,item) 数组下标,替换长度,替换的值,,,删除的话item为空就好了-->
<!-- sort函数:进行排序 -->

(2)替换数组
this.list = ["one",'two']

(3)直接更新数组内容
this.list[1] = 'hello'

2、修改对象
(1)直接添加对象内容
            this.listobject.age = 100;
            this.listobject.sex = 'male'

(2)循环对象遍历显示,筛选key 不为lastname的元素
          <li>循环对象</li>
            <div v-for="(value,key,index) in listobject">
            <div v-if="key !== 'lastName'">{{value}} -- {{key}} -- {{index}}</div>
            //此处不展示key为lastname的元素
            </div>
    v-for 和 v-if同时判断,v-for优先级会更高;
    可以在div中嵌套一个div去写v-if,也可以用tmplate去替代外层div,
    template代表一个占位符,不会进行渲染dom。

10、事件绑定 && 事件修饰符
事件绑定:可以mothods添加方法,也能!@click="表达式"

 1、直接method 方法添加cunter+=1
 2、button click中直接写表达式,不去添加方法
 3、button click多个方法时,可以这样添加:@click="addAction(),addAction1()"

事件修饰符:

     冒泡:从内到外
     捕获:从外到内
 事件修饰符:
 1、 @click.stop :表示停止向上冒泡事件 (不加的话,click事件会响应buttn事件,同时上层div有click事件也会响应)

 2、 @click.self :表示是不是当前div标签触发的事件,如果是自己dom标签才执行,子标签触发不执行的;
 类似还有:@click.prevent 阻止事件默认行为,  @click.capture 改变冒泡顺序 ,@click.once只执行一次, passive

11、其他修饰符

 按键修饰符:
 keydown:按键事件的绑定
 1、<input @keydown="addAction" /> 随着键盘输入内容去执行方法
 2、<input @keydown.enter="addAction" /> 按下enter 去执行方法
 类似还有:tab,delete,esc,up,down,left,right,


 鼠标修饰符:
 left,right,middle
 @click.left


 精确修饰符:
 exact:
 例如:@click.ctrl 指的是按住control再点击会执行方法,
      @click.ctrl.exact 指的是只有按住conntrol+点击,才会去执行方法

12、双向绑定:input,textarea,checkbox,radio

1、 input 表单项跟数据进行双向绑定,数据变化输入框也变了,输入框变化,数据也变了 

 2、textarea 跟input一样,v-model跟数据进行双向绑定。vue底层为其进行了双向绑定。 
eg:<textarea v-model="message"/>

3、checkbox 多选框 :<input type="checkbox" v-model="message" /> 
    true-value:设置true状态为某个字符串
    false-value:设置false状态为某个字符串
    eg:true-value="hello"
4、多个checkbox的话:可以在data中用数组去存储v-model,以保存多个checkbox的值。
     同时需要设置checkbox的value值 
             <div>   
            {{message}}
           jack <input type="checkbox" v-model="message" value="jack" />
           dell  <input type="checkbox" v-model="message" value="dell" />
           lee <input type="checkbox" v-model="message" value="lee" />
        </div>

 5、radio:单选框,只能选择一个,初始值给个字符串就行
eg:jack <input type="checkbox" v-model="message" value="jack" />

  6、select:下拉选择框,opotion是选项内容,v-model进行值绑定,默认值设置字符串。
    multiple:select设置多选。
    <select v-model="message">
        <option>A</option>
        <option>B</option>
        <option>C</option>
     </select> 


-----------------------------------------------------------
options:[
           {text:"A",value:"AAAA"},
           {text:"B",value:"BBBB"},
           {text:"C",value:"CCCC"},
        ]

     <div>
         <select v-model="message">
            <option v-for="item in options" :value="item.value">{{item.text}}</option>
         </select>
         <li>{{message}}</li>
     </div>
     多个选项存放在数组里,遍历去拿数据。
     注::value 【如果后面是表达式,需要加冒号,否则显示字符串内容】

13、其他修饰符

 7、lazy修饰符:v-model.lazy="message" 取消焦点才去执行赋值
    <input v-model.lazy="message" />

    number修饰符:v-model.number="message" 将数值转化为number类型再去赋值
    <input v-model.number="message" type="number"/>

    trim修饰符:v-mdel.trim="message" 赋值前去掉空格,只是去除前后空格,字符串中间空格是不去除的;
    <input v-model.trim="message" />

相关文章

  • 2021-vue-基础语法

    1、mounted 当页面加载完自动执行的函数setInterval 定时器方法 2、v-v-on :绑定事件...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • 快速上⼿ Kotlin

    快速上⼿ Kotlin 基础语法 函数基础语法 与 Java 代码互调 Java 与 Kotlin 交互的语法变化...

  • Java面试题知识点

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • Java初级面试题

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • 高考英语基础语法单句语法填空

    高考英语基础语法单句语法填空

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

  • Swift5.1——前言

    主要是针对Swift5.1,基础语法,和内部剖析。 基础语法 基础语法 流程控制 函数 枚举 可选项 为什么选择S...

网友评论

      本文标题:2021-vue-基础语法

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