快速入门vue,爆肝一万多字,“建议收藏”,用到省的百度了(含实战案例)

简介: 快速入门vue,爆肝一万多字,“建议收藏”,用到省的百度了(含实战案例)

目录


初识Vue


遍历数组


v-bind


基本使用


v-bind动态绑定class(对象语法)


v-bind动态绑定style(对象语法)


computed 计算属性


基本使用


v-on事件的监听


v-on的参数问题


v-on的修饰符


条件判断


v-if和v-else的使用


用户登录切换案例


v-for循环遍历


基本使用


补充:数组中那些方法是响应式


点击切换颜色 案例


v-mode(双向绑定)


v-mode基本使用


v-mode结合checkbox


v-mode修饰符

初识Vue

<div id="app">
    <!-- mustache语法中,不仅可以直接写变量,也可以写简单的表达式 -->
    <h2>{{message+name}}</h2>
    <h2>{{mesage+' '+neme}}</h2>
    <h3>{{message}}</h3>
    <h1>{{name}}</h1>
  </div>
<script>
    //let(变量)/const(常量)
    //编程范式:声明式编程
    const app = new Vue({
      el: "#app",//用于挂载要管理的元素
      data: {//定义数据
        message: '你好',
        name: "zaima"
      }
    })
        //js的编程范式是命令式编程,要一步一步明确指定
  </script>

遍历数组

<div id="app">
    <ul>
      <li v-for="item in movies">{{item}}</li>
    </ul>
  </div>
<script>
    const app = new Vue({
      el: "#app",
      data: {
        message: '你好',
        movies: ['海王', '星际穿越', '少年派', '盗梦空间']
      }
    })
  </script>

v-bind

基本使用

<!-- 不加v-bind就无法动态获取vue里的东西 -->
  <div id="app">
    <!-- v-bind的简写是: -->
    <a :href="aHref"></a>
    <img v-bind:src="对应图片地址" alt="">
  </div>
<script>
    // hook钩子
    const app = new Vue({
      el: '#app',
      data: {
        message: '你好吖',
        aHref: "www.baidu.com"
      }
    })
  </script>


v-bind动态绑定class(对象语法)

1.<div id="app">    //哪个类名为true就添加哪个类
    <!-- <h2 v-bind:class="{类名1:true,类名2:布尔值}">{{message}}</h2> -->
    <!-- 下面类名可以同时添加 -->
    <!-- <h2 class="title" v-bind:class="{active:isActive,line:isLine}">{{message}}</h2> -->
    <!-- 里面也可以加函数 -->
    <h2 class="title" v-bind:class="getClasses()">{{message}}</h2>
  </div>
<script>
    // hook钩子
    const app = new Vue({
      el: '#app',
      data: {
        message: '你好吖',
        isActive: true,
        isLine: true
      },
      // 里面放事件,函数都放进来
      methods: {
        btnClick: function () {
          this.isActive = !this.isActive
        },
        // 调用data里的方法都要加this
        getClasses:function(){
          return {active:this.isActive,line:this.isLine}
        }
      }
    })
  </script>


v-bind动态绑定style(对象语法)

1.<div id="app">
    <!-- <h2 v-bind:style="{key(属性名):value(属性值)}">{{message}}</h2> -->
    <!-- 属性值变量不用加单引号,固定值加单引号,不加单引号会当变量解析 -->
                //fontSize = font-size 在vue里前面有-要大写字母
    <h2 :style="{fontSize:finalSize + 'px',backgroundColor: finalColor}">{{message}}</h2>
    <h2 :style="getStyles()">{{message}}</h2>
  </div>
  <script>
   const app = new Vue({
      el: '#app',
      data: {
        message:'你好吖',
        finalSize:50,
        finalColor:'red'
      },
      methods:{
        getStyles:function(){
          return {fontSize:this.finalSize + 'px',backgroundColor: this.finalColor}
        }
      }
    })
</script>

computed 计算属性

基本使用

<div id="app">
   <h2>总价格:{{totalPrice}}</h2>
  </div>
  <script>
   const app = new Vue({
      el: '#app',
      data: {
        books:[
        {id:110,name:"编程艺术",proce:119},
        {id:111,name:"代码大全",proce:119},
        {id:112,name:"深入理解计算机原理",proce:119},
        {id:113,name:"现代操作系统",proce:119},
        ]
      },// computed计算属性
      computed:{
        // 计算总价格
        totalPrice:function(){
          let result=0;
          for(let i=0; i<this.books.length; i++){
            result += this.books[i].proce
          }
          return result
        }
      }
    })
  </script>

v-on事件的监听

v-on的参数问题

<div id="app">
    <!-- 1.事件调用的方法没有参数 -->
    <button @click="btn1Click()">按钮一</button>
    <button @click="btn1Click">按钮一</button>
    <!-- 2.事件在定义时,写方法时省略了小括号,但是方法本身是需要一个参数的,
      这个时候,Vue会默认将浏览器生产的event事件对象作为参数传入到方法 
       如果方法不需要参数可以省略小括号-->
      <!-- <button @click="btn2Click(123)">按钮二</button>
      <button @click="btn2Click()">按钮二</button> -->
      <button @click="btn2Click">按钮二</button>
      <!-- 3.方法定义时,我们需要event对象,同时有需要其他参数 -->
      <!-- 在调用方式,如何手动获取到浏览器参数的event对象:$event -->
                               <!-- abc不加引号就当作变量 -->
      <button @click="btn3Click(abc,$event)">按钮三</button>
  </div>
  <script>
  const app = new Vue({
      el: '#app',
      data: {
        message:'你好吖',
        abc:123
      },
      methods:{
        btn1Click(){
          console.log("btn1Click");
        },
        btn2Click(event){
          console.log("------",event);
        },
        btn3Click(abc,event){
          console.log('+++++',abc,event);
        }
      }
    })
</script>

v-on的修饰符

<div id="app">
    <!-- 1.stop修饰符,阻止了下面事件的冒泡 -->
    <div @click="divClick">
      <button @click.stop="btnClick">按钮</button>
    </div>
    <!-- 2.prevent修饰符,阻止了下面事件向百度提交 -->
    <form action="baidu">
      <input type="submit" value="提交" @click.prevent="submitClick">
    </form>
    <!-- 3.监听某个键盘的键帽,enter只执行keyUP(回车)一个键位 -->
    <input type="text" @keyup.enter="keyUp">
    <!-- 4.once修饰符,只能执行一次 -->
    <button @click.once="btn2Click">按钮2</button>
  </div>
  <script>
   var vm = new Vue({
      el: '#app',
      data: {
      },
      methods: {
        btnClick() {
          console.log("btnclick");
        },
        divClick() {
          console.log("divclick");
        },
        submitClick() {
          console.log("submitclick");
        },
        keyUp() {
          console.log("keyup");
        },
        btn2Click() {
          console.log("btn2click");
        }
      }
    });
</script>

条件判断

v-if和v-else的使用

<div id="app">
    <!-- v-if 当条件为false时,包含v-if指令的元素,根本不会出现在dom中 -->
    <!-- v-show 当条件为false时,只是包含v-show指令的元素看不到了,但是还存在网页代码中 -->
    <!-- 跟js的if语句相似,也可以用函数判断决定那个为true -->
    <h2 v-if="isShow">
      <div>abc</div>
      <div>abc</div>
      <div>abc</div>
    </h2>
    <h1 v-else>isShow为false时,显示我</h1>
  </div>
  <script>
  const app = new Vue({
      el: '#app',
      data: {
        isShow:false,
      },
      methods: {}
    });
 </script>


用户登录切换案例

1.<div id="app">
    <span v-if="isUser">
      <!-- label里的username这个属性指向input里的id,这样点击label里的文字也可以获取焦点 -->
      <label for="username">用户账号</label>
      <!-- 如果不希望文本框的内容被复用就用key设置不同的值,这样文本框才会重新渲染 -->
      <input type="text" id="username" placeholder="用户账户" key="username">
    </span>
    <span v-else>
      <label for="email">用户邮箱</label>
      <input type="text" id="email" placeholder="用户邮箱" key="email">
    </span>
    <button @click="isUser = !isUser">切换类型</button>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        isUser: true,
      },
      methods: {}
    });
  </script>

v-for循环遍历

基本使用

 <div id="app">
   <ul>
     <!-- <li v-for="item in info">{{item}}</li>把所有数组或所有对象的value(属性值) -->
     <!-- value获取值,key获取名字 info遍历的对象-->
     <li v-for="(value,key) in info">{{value}}-{{key}}</li>
     <!-- index获取下标 -->
     <li v-for="(value,key,index) in info">{{value}}-{{key}}-{{index}}</li>
    </ul>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        info:{
          name:'why',
          age:18,
          height:1.88
        }
      },
      methods: {}
    });
  </script>

补充:数组中那些方法是响应式

<div id="app">
    <ul>
      <!-- 加key可以提高效率,一般加 :key="item -->
      <li v-for="item in letters">{{item}}</li>
    </ul>
    <button @click="btnClick">按钮</button>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        letters: ['a', 'b', 'c', 'd']
      },
      methods: {
        btnClick() {
          // 1.push方法,从最后添加多个元素
          // this.letters.push('aaa','bbb')
          // 4.unshift(),从数组最前面添加元素多个元素
          // this.letters.unshift('aaa')
          // 2.pop(),从最后删除
          // this.letters.pop();
          //  3.shift(),从第一个删除
          // this.letters.shift();
          // splice()作用:删除/插入/替换元素
          // 删除元素:第二个参数传入你要删除几个元素(如果不传,就删除后面所有)
          // 替换元素:第二个参数,表示我们要替换几个元素,后面是用来替换前面的元素
          // (可以说第二个值后面都是添加的值,加几个都可以)
          // this.letters.splice(1,2,'m','n','l','o')
          // 插入元素:第二个写0,并跟上要插的元素
          // this.letters.splice(1,0,'ha','he')
          // 5.sort()排序
          // 6.reverse()反转
          // this.letters.reverse()
          // 7.vue里的内部的函数
          // Vue.set(要修改的对象,索引值,修改后的值)
          // Vue.set(this.letters,0,'bbb')
          // 2.通过索引值修改数组中的元素,页面不会自动刷新,因为不是响应式的方法,别用这种方式
          // this.letters[0]='bbb';
          // function sum(...num){
          //   ...可以添加多个元素
          // }
          // sum(1,2,3,4);
        }
      }
    });
  </script>

点击切换颜色 案例

1.<div id="app">
    <ul>       <!--class里的active为true才用这个类 ,      点击第几个下标-->
      <li v-for="(item,index) in movies"
       :class="{active:currentIndex === index}" @click="liClick(index)">{{item}}
      </li>
    </ul>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        movies: ['海王', '海贼王', '海尔兄弟', '加勒比海盗'],
        currentIndex: 0
      },
      methods: {
        liClick(index) {
          // 让currentIndex等于点击的下标,这样第几个下标就变色了
          this.currentIndex = index
        }
      }
    });
  </script>

v-mode(双向绑定)

v-mode基本使用

 <div id="app">
    <!-- v-mode用于表单的双向绑定,文本框的值改变data里对应的值也改变 -->
    <label for="male">
      <!-- input里添加name属性值相同他们就只能选择一个选项,互斥 -->
      <!-- v-model的值相同也会互斥 -->
    <input type="radio" id="male" value="男" v-model="sex">男
    </label>
    <label for="female">
      <input type="radio" id="female" value="女" v-model="sex">女
      </label>
      <h2>您选择的性别是:{{sex}}</h2>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        // 这里写啥就默认选中啥,传的是value值
        sex:'男'
      },
      methods: {}
    });
  </script>

v-mode结合checkbox

<div id="app">
    <!-- 1.checkbox单选框 ,v-model对应布尔类型-->
    <!-- <label for="agree"> -->
    <!-- 点击之后isAgree就true了,因为下面disabled取反了 -->
    <!-- <input type="checkbox" id="agree" v-model="isAgree">同意协议 -->
    <!-- </label> -->
    <!-- <h2>您的选则是:{{isAgree}}</h2> -->
    <!-- disabled的值为ture就禁止点鸡了 -->
    <!-- <button :disabled="!isAgree">下一步</button> -->
    <!-- 2.checkbox多选框,v-model对应数组类型 -->
    <!-- 选中之后获取value值 -->
    <input type="checkbox" value="篮球" v-model="hobbies">篮球
    <input type="checkbox" value="足球" v-model="hobbies">足球
    <input type="checkbox" value="乒乓球" v-model="hobbies">乒乓球
    <input type="checkbox" value="羽毛球" v-model="hobbies">羽毛球
    <h2>您的爱好是:{{hobbies}}</h2>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        isAgree: false,//单选框
        hobbies: []  //多选框
      },
      methods: {
      }
    });
  </script>

v-mode修饰符

1.<div id="app">
    <!-- 1.修饰符:lazy  这个修饰符鼠标焦点消失之后才传给vue值 -->
    <input type="text" v-model.lazy="message">
    <h2>{{message}}</h2>
    <!-- 2.修饰符:number  改成数字类型,原本是字符串类型    
      。 type="number"这个表示只能输入数字,但获取的是字符串的数字 -->
    <input type="number" v-model.number="age">
    <h2>{{age}}-{{typeof age}}</h2>
    <!-- 3.修饰符:trim     去除两侧空格-->
    <input type="text" v-model.trim="name">
    <h2>您输入的名字:{{name}}</h2>
  </div>
  <script>
    const app = new Vue({
      el: '#app',
      data: {
        message:'你好吖',
        age:0,
        name:''
      },
      methods: {}
    });
  </script>

期待各位小伙伴加入我们一起学习的队伍哦❤

相关文章
|
11天前
|
存储 缓存 JavaScript
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
vue表单案例练习:vue表单创建一行数据及删除数据的实现与理解
29 2
|
18天前
|
JavaScript
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
《进阶篇第9章》学习vuex知识点后练习:求和案例_纯vue版代码
12 1
|
22天前
|
存储 JavaScript 前端开发
前端开发:Vue.js入门与实战
【10月更文挑战第9天】前端开发:Vue.js入门与实战
|
23天前
|
JavaScript 前端开发
Vue开发必备:$nextTick方法的理解与实战场景
Vue开发必备:$nextTick方法的理解与实战场景
98 1
|
8天前
|
JavaScript UED
"Vue实战技巧大揭秘:一招解决路由跳转页面不回顶部难题,让你的单页面应用用户体验飙升!"
【10月更文挑战第23天】在Vue单页面应用中,点击路由跳转时,默认情况下页面不会自动滚动到顶部,这可能影响用户体验。本文通过一个新闻网站的案例,介绍了如何使用Vue-router的全局前置守卫和`scrollBehavior`方法,实现路由跳转时页面自动滚动到顶部的功能,提升用户浏览体验。
30 0
|
2月前
|
JavaScript 前端开发 API
Vue2与Vue3插槽使用的区别及案例
Vue 3在插槽功能上的改进,体现了其对开发体验的持续优化。通过简化API、加强动态特性和提升性能,Vue 3使得插槽的使用更加灵活和高效。这些改进不仅有助于减轻开发者的负担,还为组件之间的高级交互和内容复用打开了新的可能性。随着Vue生态系统的不断成熟,我们有理由相信,Vue将继续为前端开发提供强大且易用的工具。
55 3
|
2月前
|
JavaScript
vue 计算属性,实现复选框的全选和反选 【小案例】
本文通过一个Vue.js小案例,展示了如何使用计算属性实现复选框的全选和反选功能。计算属性的完整写法包括get和set两部分,分别用于获取值和设置值。在全选和反选的场景中,计算属性的get方法用于判断所有复选框是否都已选中,从而控制全选复选框的状态;计算属性的set方法则用于根据全选复选框的状态,批量更新每个复选框的选中状态。通过示例代码和效果图,文章清晰地说明了计算属性在实现这一功能中的作用和效果。
vue 计算属性,实现复选框的全选和反选 【小案例】
|
27天前
|
JavaScript
【有手就行系列】Vue快速入门案例
【有手就行系列】Vue快速入门案例
23 0
|
2月前
|
JavaScript 前端开发 UED
组件库实战 | 用vue3+ts实现全局Header和列表数据渲染ColumnList
该文章详细介绍了如何使用Vue3结合TypeScript来开发全局Header组件和列表数据渲染组件ColumnList,并提供了从设计到实现的完整步骤指导。
|
3月前
|
JavaScript
Vue学习之--------消息订阅和发布、基础知识和实战应用(2022/8/24)
这篇文章介绍了Vue中消息订阅和发布的机制,作为组件间通信的一种方式,特别适用于任意组件间的通信。文章通过基础知识讲解和具体的代码实例,展示了如何使用`pubsub-js`库来安装、订阅、发布消息,并在组件销毁前取消订阅以避免内存泄漏。
Vue学习之--------消息订阅和发布、基础知识和实战应用(2022/8/24)