Vue初体验

一、Vue 简介

    Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
    vue是轻量级的,它有很多独立的功能或库,我们会根据我们的项目来选用vue的一些功能。就像我们开发项目时如果只用到vue的声明式渲染,我就只用vue的声明渲染,而我们要用他的组件系统,我们可以引用它的组件系统。

Vue的特点

1.遵循 MVVM 模式
2.编码简洁,体积小,运行效率高,适合 移动/PC 端开发
3.它本身只关注 UI,可以轻松引入 vue 插件或其它第三方库开发项目
4.采用组件化模式,提高代码复用率、且让代码更好维护
5.声明式编码,让编码人员无需直接操作DOM,提高开发效率
6.使用 虚拟DOM和 Diff算法,尽量复用DOM节点

Vue使用

搭建Vue开发环境

直接在html中用script引入

vue.js文件引入,这两个用哪一个都可以

<script src="js/vue.js"></script>
<script src="js/vue.min.js"></script>

创建Vue实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="root">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>
  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#root',
        data() {
                return{
                    who:'Vue'
                }
            }
    });
  </script>
</body>
</html>

指令语法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
      <!-- 插值语法 -->
      <h1>Hello,{{who}}</h1>
      <hr>
      <!-- 指令语法 -->
      <p><a v-bind:href="url"> 百度</a></p>
      <p><a :href="url"> 百度-1</a></p>
  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data:{
            who:'Vue',
            url:'https://www.baidu.com'
        }
    });
  </script>
</body>
</html>

点击会 跳转到百度页面

数据绑定

单向数据绑定,数据只能从 data 流向页面,在页面其中改变who的值时,其他相同数据不变

双向数据绑定,数据不仅能从 data 流向页面,还能从页面流向 data。改变值时,其他相同数据一同改变

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
      <!-- 插值语法 -->
      <h1>Hello,{{who}}</h1>
      <hr>
       <p>Hello,<input type="text" :value="who">————————单向数据绑定</p>
       <p>Hello,<input type="text" v-model:value="who">————————双向数据绑定</p>
       <p>Hello,<input type="text" v-model="who">————————双向数据绑定</p>
      
  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#root',
        data:{
            who:'Vue',
        }
    });
  </script>
</body>
</html>

事件处理

点击事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

       <!-- 点击事件-->
      <button @click="showWho">点击</button>
      <button @click="allo(2)">点击:带参数</button>
  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },
        methods:{
                showWho(){
                    alert(this.who);
                },
                allo(param){
                    alert(param * 9)
                }             
            }
    });
  </script>
</body>
</html>

点击左边的,会出现弹窗

点击右边的,

阻止默认事件  .prevent

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

       <!-- 阻止默认事件  .prevent  -->
      <p><a href="https://www.baidu.com" @click.prevent="allo(1)">百度一下</a> </p>

  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },
        methods:{
                
                allo(param){
                    alert(param * 9)
                }            
            }

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

原本的结果是点击之后会出现上图的弹框,确定之后会进入到百度页面,但是由于我们添加了

阻止默认事件  .prevent  所以在点击确定后不会进行跳转了

阻止事件冒泡 .stop

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

       <!--阻止事件冒泡 .stop 外面有效果的话不去触发-->
   <div @click="showDIV" style='border: 1px solid red;width:200px; height:200px'>
       <p><a href="https://www.baidu.com" @click="showWho">百度两下</a> </p>
       <p><a href="https://www.baidu.com" @click.prevent="showWho">百度三下</a> </p>
       <p><a href="https://www.baidu.com" @click.prevent.stop="allo(3)">百度四下</a> </p>
   </div>


  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },

        methods:{
                showWho(){
                    alert(this.who);
                },
                allo(param){
                    alert(param * 9)
                },
                showDIV(){
                    alert('div')
                }
            }
    });
  </script>
</body>
</html>

输出结果为百度四下的,点击后只会弹出它本身的效果,其他效果不显示

事件只触发一次  .once

此结果,只能点击一次,之后再点击均为效果

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

        <!--事件只触发一次 once-->
     <button @click.once="showAAA">点击:只能点一次</button>


  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },
        methods:{
                
                showAAA(){
                    alert('AAA')
                }
            }
    });
  </script>
</body>
</html>

事件的捕获模式   capture

.capture没有时先触发里面的函数,在冒泡阶段触发外面函数
.capture存在时先触发外面函数,在捕获阶段触发里面的函数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

      <!--使用事件的捕获模式  让事件在捕获阶段就执行(传统方式是先捕获再冒泡,在冒泡阶段执行函数)
          .capture没有时先触发里面的函数,在冒泡阶段触发外面函数
          .capture存在时先触发外面函数,在捕获阶段触发里面的函数-->
      <div class="box1" @click.capture="showMsg(1)" style='border: 1px solid red;width:200px; height:200px'>
                div1
          <div class="box2" @click="showMsg(2)" style='border: 1px solid #1c1919;width:100px; height:100px'>
                div2
          </div>
      </div>

  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },

        methods:{
               
                showMsg(param){
                    alert(param)
                }
            }
    });
  </script>
</body>
</html>

只有event.target是当前操作的元素时才触发事件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
       <!--插值语法-->
      <h1>Hello,{{who}}</h1>

       <!-- 只有event.target是当前操作的元素时才触发事件-->
       <div class="demo1" @click.self="show($event)" style='border: 1px solid blue;width:200px; height:200px'>
       <button @click="show($event)" >点我</button>
       </div>

  </div>

  <script>
    <!-- 3.创建Vue实例 -->
    const vm = new Vue({
        el:'#app',
        data() {
                return{
                    who:'Vue'
                }
            },

        methods:{
             
                show(e){
                    alert(e.target)
                }
            }


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

点击“点我”按钮时

点击其他空白时

键盘事件

在输入框中输入内容后只有在键盘上按下特定的键才能弹出框来

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
        <h1>hello, {{who}}</h1>
        <p><input type="text" @keydown.enter="show1($event)"></p>
        <p><input type="text" @keydown.13="show1($event)"></p>
        <p><input type="text" @keydown.huiche="show1($event)"></p>
        <p><input type="text" @keydown.ctrl="show1($event)"></p>
  </div>
  <script>
      Vue.config.keyCodes.huiche = 13 // 自定义一个回车键的keyCode别名按键
    //3.创建Vue实例
    const vm = new Vue({
        el:'#app',
        data:{
            who:'Vue',
        },
        methods:{
                show1(e){
                    alert(e.target.value)
                }
            }
    });
  </script>
</body>
</html>

exact 修饰符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
        <h1>hello, {{who}}</h1>

         <!-- 即使alt或shift被一同按下,也会触发 -->
        <button @click.ctrl="msg('A')">A</button>

        <!-- 有且只有ctrl 被按下,才会触发 -->
        <button @click.ctrl.exact="msg('B')">B</button>
        <button @click.alt.exact="msg('C')">C</button>
        <button @click.shift.exact="msg('D')">D</button>

        <!-- 非系统按键被按下,才会触发 -->
        <button @click.exact="msg('E')">E</button>
  </div>
  <script>
     
    //3.创建Vue实例
    const vm = new Vue({
        el:'#app',
        data:{
            who:'Vue',
        },
        methods:{
               
                msg(param){
                    alert(param)
                }
            }
    });
  </script>
</body>
</html>

鼠标按钮修饰符

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue初体验</title>
    <!-- 1.引入Vue -->
    <script src="../js/vue.js"></script>
</head>
<body>
  <!-- 2.准备一个容器 -->
  <div id="app">
        <h1>hello, {{who}}</h1>
        <button v-on:click="showClick">点我1(不传参)</button>
        <button @click.right="showClick">右键点我1(不传参)</button>
        <button @click="showClick($event,66)">点我2(传参)</button>
        <button @dblclick="showClick">双击点我3(不传参)</button>
  </div>
  <script>
    
    //3.创建Vue实例
    const vm = new Vue({
        el:'#app',
        data:{
            who:'Vue',
        },
        methods:{
                showClick(event,param){
                    alert(param)
                }
            }
    });
  </script>
</body>
</html>
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值