Vue基础

目录

[1 基础语法](#1 基础语法)

v-text

v-html

v-on

v-show

v-if

v-bind

v-for

v-model

[2 简单应用](#2 简单应用)

[2.1 计数器](#2.1 计数器)

2.1.1所用知识

2.1.2代码及结果展示

​编辑

2.2图片切换

2.2.1所用知识

2.2.2代码及结果展示

[2.3 网页记事本](#2.3 网页记事本)

2.3.1所用知识

2.3.2代码及结果展示

1 基础语法

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

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

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>
相关推荐
mldong6 小时前
你的 Vue3 项目也能有钉钉同款审批流设计器:npm 装包,10 分钟画出第一条审批流
前端·vue.js
2分钟速写快排6 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
passerby60617 小时前
如何自己造一个时间处理库
前端·javascript·github
走到天涯海角8 小时前
react里面的长列表渲染优化
前端·react.js·前端框架
小羊没烦恼!8 小时前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
北岛贰8 小时前
迷茫焦虑期,我做了一个带支付带官网的 AI 聊天虚拟恋人 App
前端·人工智能·后端
mayaairi10 小时前
Vue2 组件通讯(三):全局事件总线、PubSub、插槽与组件实例属性
前端·javascript·vue.js
kyriewen10 小时前
面试官问我:AI 都能写代码了,前端凭什么还值 25K
前端·javascript·人工智能
风骏时光牛马11 小时前
AI源码分析:拆解模型底层实现逻辑
前端
BillKu11 小时前
全局样式变量:CSS 自定义属性(--border-color)和SCSS 变量($border-color)的说明
javascript·css·scss