2021-07-23大连东软实训第四天---vue

简介: 2021-07-23大连东软实训第四天---vue

数据库一个表对应一个类,表由子段组成,类由属性组成,互相对应,查表就是查一组对象,一个的对象数组,在vue迭代中最多的就是对象数组,

button默认的type是submit的,一提交就刷新页面,所以要想让他成为一个普通的按钮就type=button

全局过滤器+调用


全局不能定义到vm实例上,必须定义到外部

注意第一个参数第二个参数的区别

局部过滤器+调用


时间过滤器

过滤器加参数用pattern接受

让9变09用padStart,注意是大写

点击回车就添加,调用add事件,如果换成别的键比如f2就不好使,

如果用f2的话可以写113

记住太费劲,vue允许自定义键盘码

要焦点

自定义指令,全局和局部


自定义指令,此时el相当于

input

bind也行,但是全局不行,执行最早,当在元素上使用自定义指令时,就会被调用。此时,内存中的dom树,还没有被渲染到页面中,只执行一次以后,渲染以后不再执行,inserted当dom树被渲染到页面时执行,update只要更新就执行

如何给赋值?

如果有-就必须加‘’,上图是一个简写的形式,此时表示bind或update时该指令被执行。

生命周期


所以不能用data和method里面的东西

vue动画,三种方式


transform和transition过渡

动画分为两个阶段,入场和离场,四个状态

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>切换效果</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style type="text/css">
      .v-enter,.v-leave-to{
        opacity: 0;
        transform:translateX(200px) ;
      }
      .v-enter-active,
      .v-leave-active{
        transition: all 0.8s ease;
      }
      .my-enter,.my-leave-to{
        opacity: 0;
        transform:translateY(200px) ;
      }
      .my-enter-active,
      .my-leave-active{
        transition: all 0.8s ease;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button @click="flag=!flag">toggle</button>
      <transition name='my'>
        <h3 v-if="flag">{{msg}}</h3>
      </transition> 
    </div>
    <div id="app1">
      <button @click="flag=!flag">toggle</button>
      <transition>
        <h3 v-if="flag">{{msg}}</h3>
      </transition> 
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
          msg:"被执行的动画效果",
          flag:false
        },
        methods:{
      }
      });
      let vm1=new Vue({
        el:'#app1',
        data:{
          msg:"被执行的动画效果",
          flag:false
        },
        methods:{
      }
      });
    </script>
  </body>
</html>

name属性就是前缀

使用第三方动画库 Animate.css

https://animate.style/

第三种方式用钩子函数

https://cn.vuejs.org/v2/guide/transitions.html#JavaScript-%E9%92%A9%E5%AD%90

前四个进,后四个出

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style type="text/css">
      .ball{
        width: 20px;
        height: 20px;
        background-color: red;
        border-radius: 50%;
      }
    </style>
  </head>
  <body>
    <div id="app">
      <button @click="flag=!flag">加入购物车</button>
      <transition
        v-on:before-enter="beforeEnter"
        v-on:enter="enter"
        v-on:after-enter="afterEnter"
        >
        <div class="ball" v-if="flag"></div>
      </transition>
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
          flag:false
        },
        methods:{
          //el表示要执行动画的元素
          beforeEnter(el){
            el.style.transform='translate(0,0)';
          },
          enter(el){
            el.offsetLeft;//不加的话直接跳转没有移动的过程,offset强制重新绘制页面
            el.style.transform='translate(100px,450px)';
            el.style.transition='all 0.8s ease';
            done();//立刻执行afterEnter
          },
          afterEnter(el){
            this.flag=!this.flag;
          }
      }
      });
    </script>
  </body>
</html>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
      li{
        border:2px dashed #aaa;
        height:50px;
        line-height:50px;
        width: 100%;
      }
      li:hover{
        background-color:#aa4765;
      }
      .v-enter,.v-leave-to{
        opacity: 0;
        transform:translateY(200px) ;
      }
      .v-enter-active,
      .v-leave-active{
        transition: all 0.6s ease;
      }
      .v-move{
        transition: all 0.8s ease;
      }
      .v-leave-active{
        position: absolute;
      }
    </style>
  </head>
  <body>
    <div id="app">
        id:<input v-model="Userid" />
        name:<input v-model="Username" />
        <button @click="add()">添加</button>
        <!--<ul>    tag属性修改transition-group编译后默认为span-->
          <!--为多个元素添加动画-->
          <transition-group appear tag="ul">
          <li v-for="(item,index) in Userlist" :key='item.Userid1' @click="del(index)" >
            {{item.Userid1}}---------------{{item.Username1}}
          </li>
          </transition-group>
        </ul>
    </div>
    <script type="text/javascript">
      let vm=new Vue({
        el:'#app',
        data:{
            Userid:'',
            Username:'',
            Userlist:[
              {
              Userid1:'1',
              Username1:'张飞'}
          ]
        },
        methods:{
          add(){
            let user= {Userid1:this.Userid,Username1:this.Username};
            this.Userid=this.Userlist.push(user);
            this.Userid=this.Username='';
          },
          del(index){
            this.Userlist.splice(index,1);
          }
      }
      });
    </script>
  </body>
</html>


目录
相关文章
|
1天前
|
存储 JavaScript 开发者
Vue 组件间通信的最佳实践
本文总结了 Vue.js 中组件间通信的多种方法,包括 props、事件、Vuex 状态管理等,帮助开发者选择最适合项目需求的通信方式,提高开发效率和代码可维护性。
|
1天前
|
存储 JavaScript
Vue 组件间如何通信
Vue组件间通信是指在Vue应用中,不同组件之间传递数据和事件的方法。常用的方式有:props、自定义事件、$emit、$attrs、$refs、provide/inject、Vuex等。掌握这些方法可以实现父子组件、兄弟组件及跨级组件间的高效通信。
|
6天前
|
JavaScript
Vue基础知识总结 4:vue组件化开发
Vue基础知识总结 4:vue组件化开发
|
6天前
|
存储 JavaScript
Vue 状态管理工具vuex
Vue 状态管理工具vuex
|
13天前
|
缓存 JavaScript UED
Vue 中实现组件的懒加载
【10月更文挑战第23天】组件的懒加载是 Vue 应用中提高性能的重要手段之一。通过合理运用动态导入、路由配置等方式,可以实现组件的按需加载,减少资源浪费,提高应用的响应速度和用户体验。在实际应用中,需要根据具体情况选择合适的懒加载方式,并结合性能优化的其他措施,以打造更高效、更优质的 Vue 应用。
|
12天前
|
JavaScript
如何在 Vue 中使用具名插槽
【10月更文挑战第25天】通过使用具名插槽,你可以更好地组织和定制组件的模板结构,使组件更具灵活性和可复用性。同时,具名插槽也有助于提高代码的可读性和可维护性。
15 2
|
12天前
|
JavaScript
Vue 中的插槽
【10月更文挑战第25天】插槽的使用可以大大提高组件的复用性和灵活性,使你能够根据具体需求在组件中插入不同的内容,同时保持组件的结构和样式的一致性。
14 2
|
12天前
|
前端开发 JavaScript 容器
在 vite+vue 中使用@originjs/vite-plugin-federation 模块联邦
【10月更文挑战第25天】模块联邦是一种强大的技术,它允许将不同的微前端模块组合在一起,形成一个统一的应用。在 vite+vue 项目中,使用@originjs/vite-plugin-federation 模块联邦可以实现高效的模块共享和组合。通过本文的介绍,相信你已经了解了如何在 vite+vue 项目中使用@originjs/vite-plugin-federation 模块联邦,包括安装、配置和使用等方面。在实际开发中,你可以根据自己的需求和项目的特点,灵活地使用模块联邦,提高项目的可维护性和扩展性。
|
13天前
|
缓存 JavaScript UED
Vue 中异步加载模块的方式
【10月更文挑战第23天】这些异步加载模块的方式各有特点和适用场景,可以根据项目的需求和架构选择合适的方法来实现模块的异步加载,以提高应用的性能和用户体验
|
13天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。
下一篇
无影云桌面