学习vue.js

最近除了我在优化以及测服务端并发,还有mq的优化

其他人在用vue.js写项目的前端

真的是一点也不会 才懒得看

虽然主要做服务端,还是学习下,不好前端怪尴尬的,万一以后面试招全站呢?
欢声笑语打出GG 要有后端服务端工程师的坚持

v-bind属性

<div id="app">
<div v-html="message"></div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: '<h1>I wanna leave</h1>'
  }
})
</script>
我注意到,html 并不是div的一个属性,所以是用v-html
其他的比如id,class等都是用的  v-bind-id = "id"  v-bind-class = "class"
v-bind-id
v-bind-class
v-bind-href
<p v-if ="seen"></p>    这个可以控制是否显示
v-html
v-if
v-on:click
v-model  //值
v-on:submit
v-show    //true 和 false

Vue.js 提供了完全的 JavaScript支持

{{就和普通的js一样,还可以创建变量的,改变变量}},我发现js写的变量依然可以绑定到v-bind,v-if等上面

过滤器

<div id="app">
  {{ message | capitalize("ss",aa)}}
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'runoob',
      aa:"和你贴心的流浪"
  },
  filters: {
    capitalize: function (value,value1,value2) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)+value1+value2
    }
  }
})
</script>

缩写

<a :href="url"></a>
<a @click="doSomething"></a>

条件和循环语句

<div v-if="type === 'A'">
  A
</div>
<div v-else-if="type === 'B'">
  B
</div>
<div v-else-if="type === 'C'">
  C
</div>
<div v-else>
  Not A/B/C
</div>

<ol>
<li v-for = "item in items">
    {{item.name}}
</li>
<ol>

<template v-for="item in items">    
    <li>{{item.name}}</li>
</templacte>

<template v-for="(value,key,index) in object">    
    <li>{{value}}</li>
    <li>{{index}}</li>
</templacte>

<template v-for="(value,index) in list">    
    <li>{{value}}</li>
</templacte>      

  <ul>
    <li v-for="n in 10"> 
     {{ n }}
    </li>
  </ul>    
  跟最近学的python有点像

计算属性

<div id="app">
  <p>原始字符串: {{ message }}</p>
  <p>计算后反转字符串: {{ reversedMessage }}</p>
</div>

<script>
var vm = new Vue({
  el: '#app',
  data: {
    message: 'battle!'
  },
  computed: {
// 计算属性的 getter
reversedMessage: function () {
  // `this` 指向 vm 实例
  return this.message.split('').reverse().join('')
}
  }
})   

可以用methods代替    computed

监听

  <div id = "computed_props">
     千米 : <input type = "text" v-model = "kilometers">
     米 : <input type = "text" v-model = "meters">
  </div>
   <p id="info"></p>
  <script type = "text/javascript">
     var vm = new Vue({
        el: '#computed_props',
        data: {
           kilometers : 0,
           meters:0
        },
        methods: {
        },
        computed :{
        },
        watch: {
            meters:function(value){
                this.meters = value;
                this.kilometers = value / 1000;
            },
            kilometers:function(value){
                this.kilometers = value;
                this.meters = value*1000
            }
        }
     });
     // $watch 是一个实例方法
    vm.$watch('kilometers', function (newValue, oldValue) {
        // 这个回调将在 vm.kilometers 改变后调用
            document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
    })
  </script>

class

有分隔符号的  -  需要用 ‘’  ,否则不需要

<style>
.active {
width: 100px;
height: 100px;
background: green;
}
.text-danger {
width: 150px;
height: 100px;
background: red;
}
</style>
</head>
<body>
<div id="app">
  <div class="static"
 v-bind:class="{ active: isActive, text-danger: hasError }">
  </div>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    isActive: true,
hasError: true
  }
})
</script>
还能用object以及数组来代替呢
    <div id="app">
    <div v-bind:class="[activeClass, errorClass]"></div>
    </div>

    <script>
    new Vue({
      el: '#app',
      data: {
        activeClass: 'active',
        errorClass: 'text-danger'
      }
    })
内联样式
<div id="app">
<div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }">夜空中</div>
</div>

<div id="app">
  <div v-bind:style="styleObject">夜空中</div>
</div>

<div id="app">
  <div v-bind:style="[baseStyles, overridingStyles]">夜空中</div>
</div>

事件处理器

v-on:click
v-on:keyup.13
v-on:keyup.enter  v-on:keyup.alt
@keyup.enter

<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联  -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(而不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>

<!-- click 事件只能点击一次,2.1.4版本新增 -->
<a v-on:click.once="doThis"></a>

表单

<div id="app">
  <p>单个复选框:</p>
  <input type="checkbox" id="checkbox" v-model="checked">
  <label for="checkbox">{{ checked }}</label>

  <p>多个复选框:</p>
  <input type="checkbox" id="runoob" value="穿越" v-model="checkedNames">
  <label for="runoob">Runoob</label>
  <input type="checkbox" id="google" value="红尘" v-model="checkedNames">
  <label for="google">Google</label>
  <input type="checkbox" id="taobao" value="的悲欢" v-model="checkedNames">
  <label for="taobao">taobao</label>
  <br>
  <span>选择的值为: {{ checkedNames }}</span>
</  div>

<script>
new Vue({
  el: '#app',
  data: {
checked : false,
checkedNames: []
  }
})
</script>

    .lazy
    在默认情况下, v-model 在 input 事件中同步输入框的值与数据,但你可以添加一个修饰符 lazy ,从而转变为在 change 事件中同步:

<!-- 在 "change" 而不是 "input" 事件中更新 -->
<input v-model.lazy="msg" >
.number
    如果想自动将用户的输入值转为 Number 类型(如果原值的转换结果为 NaN 则返回原值),可以添加一个修饰符 number 给 v-model 来处理输入值:

<input v-model.number="age" type="number">
这通常很有用,因为在 type="number" 时 HTML 中输入的值也总是会返回字符串类型。

.trim
如果要自动过滤用户输入的首尾空格,可以添加 trim 修饰符到 v-model 上过滤输入:

<input v-model.trim="msg">



<div id="app">
<div id="counter-event-example">
  <p>{{ total }}</p>
  <button-counter v-on:increment="incrementTotal"></button-counter>
  <button-counter v-on:increment="incrementTotal"></button-counter>
</div>
</div>

<script>
Vue.component('button-counter', {
  template: '<button v-on:click="incrementHandler">{{ counter }}</button>',
  data: function () {
return {
  counter: 0
}
  },
  methods: {
incrementHandler: function () {
  this.counter += 1
  this.$emit('increment')
}
  },
})
new Vue({
  el: '#counter-event-example',
  data: {
    total: 0
  },
  methods: {
incrementTotal: function () {
  this.total += 1
}
  }
})
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值