Vue基础

目录

1 基础语法

0 async await axios.get 异步请求

配置项

v-text

v-html

v-on

v-show

v-if

v-bind

v-for

v-model

 watch侦听器

vue生命周期

vue生命周期函数

2 简单应用

2.1 计数器

2.1.1所用知识

2.1.2代码及结果展示

​编辑

2.2图片切换

2.2.1所用知识

2.2.2代码及结果展示

2.3 网页记事本

2.3.1所用知识

2.3.2代码及结果展示

2.4表单提交控制

2.4.1所用知识

2.4.2代码及结果展示


1 基础语法

0 async await axios.get 异步请求

配置项

data:{}

computed:{计算属性}:

        封装对数据的处理,存在缓存属性提高性能,作为属性直接使用

methods:{}:

        给实例提供业务逻辑,需要调用 -> this.方法名 @事件名="方法名"

v-text

设置标签的内容(要替换部分字符用差值表达式{{}})

v-html

可以存放纯文本,内容中有html结构会被解析为标签

v-on

为元素绑定事件,事件名不需要写on,可以简写指令为@

事件后跟上.修饰符可以对事件进行限制

v-show

根据真假切换元素的显示和隐藏,指令后面的内容会被解析为bool值

注:也可以直接在式子中用bool式(如 <h2 v-show="age>18" v-text="star" > </h2> )

v-if

用法跟v-show一样,但是v-if修改的是dom元素(dom树中元素的移除/添加),对资源消耗较大

v-bind

设置元素的属性,可简写为 :属性

v-for

根据数据生成列表结构 ,数组常和v-for结合使用,语法一般为(i ,index) in 数据

v-model

获取和设置表单元素的值(双向数据绑定,同步更新值)

 watch侦听器

监视数据变化(写成方法)

监视对象的子属性

额外配置项(写为对象)

deep:true 深度监视

immediate:true 初始化立刻执行一次handle

vue生命周期

创建阶段的最后(等待响应式数据准备完毕)时,开始发送初始化渲染请求;

挂载阶段结束后可以操作dom

vue生命周期函数

vue的生命周期过程中会自动调用的一些函数(钩子函数)

created:发送初始化渲染请求

mounted:操作dom

beforeDestory:卸载前用来将数据上传至后端 or 清除掉一些vue以外的资源占用(定时器、延时器,结合组件用)

watch监听与updated钩子函数的区别:watch是监听的数据修改就触发 updated是整个组件的dom更新才触发

2 简单应用

2.1 计数器

2.1.1所用知识

(1)el(挂载点),data(数据),methods(方法)

(2)v-on指令作为绑定事件,简写为@

(3)通过this关键字获取data数据

2.1.2代码及结果展示

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>hello world</title>
  </head>
  <body>
    <div id="app">
      <button @click="sub">
        -
      <button>
      <span>{{num}}</span>
      <button @click="add">
        +
      <button>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      var app=new Vue({
        el:"#app",
        data:{
          num:1
        },
        methods:{
          add:function(){
            if (this.num<10){
              this.num++
            }else
            alert("stop,no more")            
          },
          sub:function(){
            if (this.num>0){
              this.num--
            }else
            alert("stop,no smaller")
          }
        }

      })
    </script>
  </body>
</html>

2.2图片切换

2.2.1所用知识

列表数据用数组保存

2.2.2代码及结果展示

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>hello chicken</title>
  </head>
  <body>
    <div id="mask">
      <h2 class="title">
        I K U N
      </h2>
      <img :src="imgArr[index]">
    
      <a href="javascript:void(0)" @click="prev" v-show="index>0" >
      <br>
      <input type="button" value="上一张">
      </a>
    
      <a href="javascript:void(0)" @click="next" v-show="index<imgArr.length -1" >
        <input type="button" value="下一张">
      </a>
    </div> 

    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
   
    <script>
      var app=new Vue({
        el:"#mask",
        data:{
          index:0,
          imgArr:["https://img0.baidu.com/it/u=910898461,3729592231&fm=253&fmt=auto&app=120&f=JPEG?w=1174&h=733",
                  "https://img0.baidu.com/it/u=334282167,2599872929&fm=253&fmt=auto&app=120&f=JPEG?w=1280&h=800",
                  "https://img1.baidu.com/it/u=182809259,608048952&fm=253&fmt=auto&app=120&f=JPEG?w=495&h=299",
                  "https://img0.baidu.com/it/u=3163905801,1801334695&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=500",
                  "https://img0.baidu.com/it/u=2291712305,2704760041&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=281"],

        },
       methods:{
        prev:function(){
          this.index--
        },
        next:function(){
          this.index++
        }
        }
       }          
      )
    </script>
  </body>
</html>

2.3 网页记事本

2.3.1所用知识

1.v-for将数组和列表进行关联,向数组中添加内容实现元素的新增

2.索引结合事件传参实现删除

3.数组的长度通过v-test相关指令渲染到页面上

4.所绑定的数组消失,即为清空

5.列表没有数据时隐藏

2.3.2代码及结果展示

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>hello world</title>
  </head>
  <body>
    <h1>记事本</h1>
    <section id ="app">
      <input v-model="inputValue" @keyup.enter="add" autofocus="autofocus" autocomplete="off" placeholder="请输入任务">
      <li v-for="(item,index) in list" >
        <div>
          <span>
          {{index+1}}
          </span>
          <label>
            {{item}}
          </label>
          <input type="button" value="删除" @click="remove(index)"></input>          
        </div>        
      </li>
      <input type="button" value="清空" @click="moveOut" v-show="list.length!=0" >
      <h2 v-if="list.length!=0">{{list.length}}个事件</h2>
    </section>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
      var app=new Vue({
        el:"#app",
        data:{
          list:["吃饭","睡觉","打豆豆"],
          inputValue:"听歌",
        },
        methods:{
          add:function(){
            this.list.push(this.inputValue)
          },
          remove:function(index){
            console.log(index)
            this.list.splice(index,1)
          },
          moveOut:function(){
            this.list=[]
          }          
        }
        }              
      )
    </script>
  </body>
</html>

2.4表单提交控制

2.4.1所用知识

1.常见的表单元素都能用v-model绑定关联来快速获取或者设置表单元素的值,他能根据控件;欸行自动选取正确的方法来更新元素。

2.单选框中加入同一个name属性来进行分组

2.4.2代码及结果展示

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>hello world</title>
  </head>
  <body>
    <div id ="app">
      <h3>收集表<h3><!--通过表单收集体会v-model对多种标签的绑定-->
        姓名:<input type="text" v-model="username"><br><br>
        是否单身:<input type="checkbox" v-model="isSingle"><br><br>
        <!--单选框加入name属性分组互斥-->
        性别:<input type="radio" v-model="gender" name="gender" value="1">男
              <input type="radio" v-model="gender" name="gender" value="2">女
              <br><br>
        所在城市:
        <select v-model="city">
          <option value="101">北京</option>
          <option value="102">广州</option>
          <option value="103">上海</option>
          <option value="104">深圳</option>
        </select>
        <br><br>
        自我描述:<textarea v-model="intro"></textarea>
        <br><br>
        <button>立即注册</button>
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
      var app =new Vue({
        el:"#app",
        data:{
          username:"",
          isSingle:"false",
          gender:"",
          city:"",
          intro:""
        },
       
      })
    </script>
  </body>
</html>

3.Other

3.1App.vue根组件

3.2路由

路径和组件的映射关系

3.2.1 VueRouter 插件使用

npm install vue-router@3.6.5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码熬夜敲Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值