vue基础二

组件的应用

首先我们要先安装vue
vue init webpack vuetest
bpm run dev
上面两句命令语句安装在你要使用的文件夹内
这样我们就创建了一个vue环境的服务器

在浏览器上输入localhost:8080就会出现下面的界面了
99DF33BB-C1DB-4502-B145-FC886B0FBF59.png

这样说明我们已经成功了
这时我们在文件夹中就会找到vuetest文件夹,我们可以再vuetest文件夹下的src文件夹下的compoents文件夹里创建组件了
下面我来介绍几种简单的事件组件
  • 传递事件
    先新建一个Emit.vue文件,这时就会生成下面的代码

    <template>
    
    </template>
    
    <script>
        export default {
            name: "emit",
        }
    </script>
    
    <style scoped>
    
    </style>
    

现在我们在template标签内输入

  <h1>我是emit组件</h1>
<button @click="passDad">点击我的时候向父级发射</button>

在name:"emit",下面输入

   methods:{
      passDad(){
        //传递事件
        //第一个参数是发射的事件名称,后面是要传递的数据
        this.$emit("myfn",this.message)
      }
  }

这时被没有结束,我们要到App.vue文件中
在script文件夹中输入

  import emit from '@/components/emit'

在components:{}输入emit,
同时要再methods下面输入

  fn:function(mydata){
  console.log(mydata)

最后在id=app的标签下输入<emit @myfn="fn"></emit>
这样一个组件就完成了
},
下面介绍prop组件
prop组件,Prop 是单向绑定的:当父组件的属性变化时,将传导给子组件,但是反过来不会
在App.vue id为app的标签下输入

  <person
  username="张三"
  :height="178"
  color="white"
></person>
<person
  username="李四"
  :height="178"
  color="black"
></person>

在新建的person.vue文件内输入

  <template>
<div>
  <p>姓名:{{username}}</p>
  <p>肤色:{{color}}</p>
  <p> 身高:{{height}}</p>
  <button @click="showprops">点击我查看props</button>
</div>
</template>

<script>
export default {
    name: "person",
  // props:['username','height','color'],
  props:{
      username:{type:String},
      height:{type:Number},
      color:{type:String}
  },
  methods:{
            showprops:function(){
              console.log(this.userna      me,this.height,this.color      )
            }
        }
      }
  </script>

<style scoped>

</style>

其他设置与上面emit设置差不多

运行结果如下
6A29AFCD-769F-4DFA-952E-27E44064D993.png

下面讲一下动画设置

App.vue设置与上面的都差不多就不一一说了

  <template>
<div>
  <transition name="fade">
    <div v-show="judge">我是要过渡的div</div>
  </transition>

  <button @click="judge=!judge">点击我切换div显示隐藏</button>
  <hr>
  <!--组件的动态切换-->
  <!--组件的动态切换 模式切换-->
  <transition name="fade" mode="out-in">
    <div :is="switchs?'commont1':'commont2'"></div>
  </transition>
  <button @click="switchs=!switchs">点击我切换组件</button>
  <hr>
  <!--if else控制切换 读缓存了,使用key 可以进行修改-->
  <transition name="mymove" mode="out-in">
    <div v-if="switchs" key="1">我是div1</div>
    <div v-else key="2">我是div2</div>
  </transition>
  <hr>
  <transition
    @before-enter="beforeEnter"
    @enter="enter"
    @leave="leave"
    :css="false"
  >
    <div class="mydiv" v-show="myjudge">我是div的内容</div>
  </transition>
  <button class="btn" @click="myjudge=!myjudge">点击我切换</button>

</div>
</template>

<script>
    import commont1 from './commont1'
    import commont2 from './commont2'

export default {
    name: "",
  data:function(){
      return{
        judge:true,
        switchs:true,
        myjudge:true
      }
  },
  methods:{
      beforeEnter:function(el){
       $(el).css({left:"0px",opacity:0});

      },
    enter:function(el,done){
        $(el).animate({
          left:"380px",opacity:1
        },done)


    },
    leave:function(el,done){
      $(el).animate({
        left:"800px",opacity:0
      },done)
    }
  },
  components:{
    commont1,
    commont2
  }
}
</script>

  <style scoped>
    .fade-enter-active,.fade-leave-active{
      transition:all 1s;
  }

  .fade-enter,.fade-leave-to{
      opacity:0;
  }
  .mymove-enter-active,.mymove-leave-active{
      transition:all 1s;
  }

    .mymove-enter{
      transform:translate(-500px);
  }
    .mymove-leave-to{
      transform:translate(500px);
    }
    .mydiv{
      position:absolute;
      left:500px;

  }
  .btn{
      margin-top:30px;
    }
</style>

上面有通过JS设置动画还有CSS设置的动画
介绍上面使用到的知识点

  • transition 会有mode模式默认的是in-out :先进入 在出去
  • if else控制切换 读缓存了,使用key 可以进行修改
  • 会有 4 个(CSS)类名在 enter/leave 的过渡中切换
    1. v-enter: 定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。
    2. v-enter-active: 定义进入过渡的结束状态。在元素被插入时生效,在 transition/animation 完成之后移除。
    3. v-leave: 定义离开过渡的开始状态。在离开过渡被触发时生效,在下一个帧移除。
    4. v-leave-active: 定义离开过渡的结束状态。在离开过渡被触发时生效,在 transition/animation 完成之后移除。
  • s过度动画 不需要给transition加上name属性

过滤器

    filters: {
      capitalize: function (value) {
        if (!value) return ''
        value = value.toString()
        return value.charAt(0).toUpperCase() + value.slice(1)
      }
    }

filterA 被定义为接收三个参数的过滤器函数。其中 message 的值作为第一个参数,普通字符串 'arg1' 作为第二个参数,表达式 arg2 的值作为第三个参数

Slot 插槽功能

  • 单个插槽
    直接通过slot来获取

  • 具名插槽
    子组件里设置name值
    <slot name=“header”></slot>
    父组件设置slot属性
    <div slot=“header”>我是头部内容</div>

自定义指令

全局注册自定义指令:

    Vue.directive("backgroundDirective",{
            inserted: function (el) {
    //           console.log(el);
                el.style.background = "red";
            }
        })

局部注册自定义指令:

    var vm  = new Vue({
        el:"#myapp",
        data:{
            message:"我是测试数据"
        },
        directives:{
            backgroundDirective:{
                inserted:function (el,binding) {
                    el.style.background = "red";
                }
            }
    
        }
    })
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容