Vue语法

简介: Vue语法

事件处理器

是什么

事件处理器是一种函数,用于响应和处理事件的触发。在编程中,当特定事件发生时,可以通过事件处理器来执行相应的操作和逻辑。

事件处理器通常与特定的事件绑定在一起。当事件触发时,绑定的事件处理器函数将被调用,并且可以访问事件的相关信息。例如,当用户点击按钮时,与该按钮相关联的点击事件处理器将被调用。

在Vue中,可以使用@v-on指令来绑定事件处理器。例如,@click="handleClick"表示将handleClick函数作为点击事件的处理器。

事件处理器函数可以接收事件对象作为参数,该对象包含有关事件的信息,如事件类型、触发元素、鼠标位置等。事件处理器函数可以执行任意的JavaScript代码,以响应事件并执行相应的操作,如更新数据、调用方法、触发其他事件等。

总结来说,事件处理器是一种函数,用于响应和处理特定事件的触发,以执行相应的操作和逻辑。

案列

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.6/vue.js"></script>
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <title>插值</title>
    <style type="text/css">
      .one{
        background-color: red;
        height: 400px;
        width: 400px;
      }
      .two{
        background-color: yellow;
        height: 300px;
        width: 300px;
      }
      .three{
        background-color: greenyellow;
        height: 200px;
        width: 200px;
      }
      .four{
        background-color: blue;
        height: 100px;
        width: 100px;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <div class="one" @click="fun1">
        <div class="two" @click.stop="fun2">
          <div class="three" @click.stop="fun3">
            <div class="four" @click.stop="fun4"></div>
          </div>
        </div>
      </div>
      <input :value="msg" />
      <button @click.once="clickMe">点我</button>
    </div>
    <script type="text/javascript">
      new Vue({
        el:"#app",
        data(){
          return {
            msg:'沸洋洋你个臭傻逼',
          };
          },
          methods:{
            fun1(){
              alert("我是红色");
            },
            fun2(){
              alert("我是黄色");
            },
            fun3(){
              alert("我是黄绿色");
            },
            fun4(){
              alert("我是蓝色");
            },
            clickMe(){
              console.log(this.msg);
            }
          }
      });
    </script>
  </body>
</html>

 

在@click后面加.stop

表单的综合案列

定义

Vue表单是指在Vue.js框架中用于处理用户输入的一组相关元素和功能。它允许你构建交互式的表单界面,处理用户的输入数据,并将其绑定到Vue实例的数据中。Vue表单提供了一种简单、灵活的方式来管理表单元素,实现数据的双向绑定、验证和提交。

常用功能

1. 数据绑定:将表单元素与Vue实例的数据进行绑定,实现双向数据绑定。

2. 表单验证:对用户输入的数据进行验证,确保数据的合法性。

3. 表单提交:监听表单的提交事件,执行相应的操作,如发送表单数据到后台服务器。

4. 表单重置:提供重置按钮,可以将表单中的数据重置为初始状态。

5. 动态表单:根据数据的变化动态生成表单元素,如根据选项数量生成多选框或下拉菜单。 6. 表单数据处理:对表单数据进行处理,如格式化、过滤、计算等。

7. 表单组件封装:将表单元素封装成可复用的组件,提高开发效率和代码可维护性。

8. 表单联动:实现表单元素之间的联动效果,如一个下拉菜单的选项改变会影响另一个表单元素的可选项。

9. 表单数据持久化:将表单数据存储在本地或远程,以便在页面刷新或重新加载后能够恢复数据。

10. 表单样式设计:通过CSS样式对表单进行美化和定制,提升用户体验。 

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.6/vue.js"></script>
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <title>表单</title>
  </head>
  <body> 
    <div id="app">
      姓名:<input name="name" v-model="name" /><br />
      密码:<input type="password" v-model="pwd"/><br />
      性别:<span v-for="s in sexList">
        <input type="radio" name="sex" v-model="sex" :value="s.id" />{{s.name}}
      </span><br />
      籍贯:<select name="myAddr" v-model="myAddr">
        <option v-for="a in address" :value="a.id">{{a.name}}</option>
      </select><br />
      爱好:<span v-for="h in hobby"  >
        <input type="checkbox"  v-model="myLike"  name="myLike" :value="h.id" />{{h.name}}
      </span><br />
      个人简介:<textarea v-model="sign" cols="10" rows="5"></textarea><br />
      同意:<input type="checkbox" v-model="ok" /><br />
      <button v-show="ok" @click="dosub">提交</button>
    </div>
    <script type="text/javascript">
      new Vue({
        el:"#app",
        data(){
          return {
            name:'灰太狼',
            pwd:'123456',
            sexList:[{
              name: '男', id:1
            }, 
            {
              name: '女', id:2
            },
            {
              name: '未知', id:0
            }],
            sex:1,
            hobby:[{
                name: '抓羊', id: 1
              },{
                name: '争狼王', id: 2
              },{
                name: '带儿子', id: 3
              }],
            myLike:[],
            address:[{
                name: '羊村', id: 1
              },{
                name: '狼堡', id: 2
              },{
                name: '别墅', id: 3
              },{
                name: '城堡', id: 4
            }],
            myAddr:null,
            sign:null,
            ok:false
          };
          },
          methods:{
            dosub(){
              var obj ={};
              obj.name = this.name;
              obj.pwd = this.pwd;
              obj.sex = this.sex;
              obj.address=this.myAddr;
              obj.love=this.myLike;
              obj.sign=this.sign;
              console.log(obj);
            }
          }
      });
    </script>
  </body>
</html>

 

组件通信

定义

1. 父子组件通信:父组件可以通过props将数据传递给子组件,子组件可以通过$emit触发事件通知父组件。这种方式适合用于父组件向子组件传递静态数据或通过事件监听子组件的动态变化。

2. 子父组件通信:子组件可以通过$emit触发事件,将数据传递给父组件。父组件通过监听子组件的事件,接收数据。这种方式适合用于子组件向父组件传递数据或通知父组件进行某些操作。

3. 兄弟组件通信:如果两个组件处于同一父组件下,它们可以通过父组件作为中间人进行通信。兄弟组件可以通过父组件传递数据,或通过事件派发和监听来进行通信。

4. 跨级组件通信:如果组件之间的关系比较复杂,可以使用Vue的事件总线或Vuex进行跨级组件通信。事件总线是一个空的Vue实例,可以作为中央事件总线,用于触发和监听事件。Vuex是一个专门用于管理Vue应用程序状态的库,可以在任何组件中访问共享的状态。

父传子

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.6/vue.js"></script>
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <title>组件传参父传子</title>
  </head>
  <body>
    <div id="app">
      <p>自定义组件</p>
      <my-button>xx</my-button>
      <p>组件通信-父传子</p>
      <my-button m='懒大王'></my-button>
      <p>组件通信-父传子2</p>
      <my-button m='懒大王' n="10"></my-button>
      </div>
    <script type="text/javascript">
      new Vue({
        el:"#app",
        components:{
          'my-button':{
            props:['m','10'],
            template:'<button @click="clickMe">被{{m}}点击了{{n}}次</button>',
            data:function(){
              return{
                n:1
              }
            },
            methods:{
              clickMe(){
                this.n++;
              }
            }
          }
        },
        data(){
          return {
            msg:'沸洋洋你个臭傻逼',
          };
        },
      });
    </script>
  </body>
</html>

子传父

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
      <script src="https://cdn.bootcdn.net/ajax/libs/vue/2.7.6/vue.js"></script>
      <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script>
    <title>组件传参子传父</title>
  </head>
  <body>
    <div id="app">
      <p>组件通信-子传父</p>
      <my-button m='懒大王' @xxx="getParam" ></my-button>
      </div>
    <script type="text/javascript">
      new Vue({
        el:"#app",
        components:{
          'my-button':{
            props:['m'],
            template:'<button @click="clickMe">被{{m}}点了</button>',
            methods:{
              clickMe(){
                let name ='懒大王';
                let bname = '我的零食屋';
                let price = '白嫖';
                this.$emit('xxx',name,bname,price);
              }
            }
          }
        },
        methods:{
          getParam(a,b,c){
            console.info(a,b,c);
          }
        }
      });
    </script>
  </body>
</html>


相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
7天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
7天前
|
缓存 JavaScript 搜索推荐
Vue SSR(服务端渲染)预渲染的工作原理
【10月更文挑战第23天】Vue SSR 预渲染通过一系列复杂的步骤和机制,实现了在服务器端生成静态 HTML 页面的目标。它为提升 Vue 应用的性能、SEO 效果以及用户体验提供了有力的支持。随着技术的不断发展,Vue SSR 预渲染技术也将不断完善和创新,以适应不断变化的互联网环境和用户需求。
27 9
|
6天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
5天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
13 2
|
5天前
|
JavaScript
Vue 中的插槽
【10月更文挑战第25天】插槽的使用可以大大提高组件的复用性和灵活性,使你能够根据具体需求在组件中插入不同的内容,同时保持组件的结构和样式的一致性。
11 2
|
5天前
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
6天前
|
JavaScript 前端开发 UED
vue 提高 tree shaking 的效果
【10月更文挑战第23天】提高 Vue 中 Tree shaking 的效果需要综合考虑多个因素,包括模块的导出和引用方式、打包工具配置、代码结构等。通过不断地优化和调整,可以最大限度地发挥 Tree shaking 的优势,为 Vue 项目带来更好的性能和用户体验。
|
6天前
|
缓存 JavaScript UED
Vue 中异步加载模块的方式
【10月更文挑战第23天】这些异步加载模块的方式各有特点和适用场景,可以根据项目的需求和架构选择合适的方法来实现模块的异步加载,以提高应用的性能和用户体验
|
6天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。
|
7天前
|
JavaScript 搜索推荐 前端开发
Vue SSR 预渲染的广泛应用场景及其优势
【10月更文挑战第23天】Vue SSR 预渲染技术在众多领域都有着广泛的应用价值,可以显著提升网站的性能、用户体验和搜索引擎优化效果。随着技术的不断发展和完善,其应用场景还将不断拓展和深化
21 2