美文网首页
前端扯犊子之四Vue2(一)

前端扯犊子之四Vue2(一)

作者: wsgdiv | 来源:发表于2021-05-17 07:45 被阅读0次

一、概述

1、安装:

可npm可cdn可 script 标签本地引入

2、指令集:

v-cloak 去除闪动
v-html 指令用于输出 html 代码
v-bind 绑定,可以进行样式绑定【对象(可多个属性、绑定计算属性)、数组(传入多个class、三元表达式、使用对象)、用于组件、内联】
v-on 指令用于监听 DOM 事件
v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定
v-if 将根据表达式的布尔值进行操作,如果属性值为 null 或 undefined,则该属性不会显示出来。可以用 v-else 指令给 v-if 添加一个 "else" 块,v-else-if 用作 v-if 的 else-if 块。可以链式的多次使用
v-show 指令来根据条件展示元素
v-for 可以绑定数据到数组来渲染一个列表,可以迭代对象、迭代整数,可以提供第二个的参数为键名,第三个参数为索引
v-once 只渲染一次
v-pre 跳出渲染
v-text innerText输出

3、缩写

v-bind 语法糖为 :
v-on 语法糖为 @

4、简单例子:
<div id="app">
  <p>{{ message }}</p>
</div>

<script>
new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue.js!'
  }
})
</script>
5、模板
//src/APP.vue
<!-- 展示模板 -->
<template>
  <div id="app">
    <img src="./assets/logo.png">
    <hello></hello>
  </div>
</template>
 
<script>
// 导入组件
import Hello from './components/Hello'
 
export default {
  name: 'app',
  components: {
    Hello
  }
}
</script>
<!-- 样式代码 -->
<style>
#app {
  font-family: 'Avenir', Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

//接下来我们可以尝试修改下初始化的项目,将 Hello.vue 修改为以下代码:

//src/components/Hello.vue
<template>
  <div class="hello">
    <h1>{{ msg }}</h1>
  </div>
</template>
 
<script>
export default {
  name: 'hello',
  data () {
    return {
      msg: '欢迎'
    }
  }
}
</script>

二、过滤器

三种形式:

{{ message | capitalize }}
{{ message | filterA | filterB }}
{{ message | filterA('arg1', arg2) }}
message 是第一个参数,字符串 'arg1' 作为第二个参数, arg2 表达式的值将被求值后作为第三个参数。
简单例子:

<div id="app">
  {{ message | capitalize }}
</div>
    
<script>
new Vue({
  el: '#app',
  data: {
    message: 'runoob'
  },
  filters: {
    capitalize: function (value) {
      if (!value) return ''
      value = value.toString()
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
  }
})
</script>

三、methods方法

<div id="vue_det">
        <h1>site : {{site}}</h1>
        <h1>url : {{url}}</h1>
        <h1>{{details()}}</h1>
    </div>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#vue_det',
            data: {
                site: "菜鸟教程",
                url: "www.runoob.com",
                alexa: "10000"
            },
            methods: {
                details: function() {
                    return  this.site + " - 学的不仅是技术,更是梦想!";
                }
            }
        })
    </script>

methods方法里定义函数。

四、计算属性 computed、监听属性 watch

1、计算属性 computed

与methods比较: computed 是基于它的依赖缓存,只有相关依赖发生改变时才会重新取值。而使用 methods ,在重新渲染的时候,函数总会重新调用执行。

computed 属性默认只有 getter ,不过在需要时你也可以提供一个 setter

2、监听属性 watch
      <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 : {
               kilometers:function(val) {
                  this.kilometers = val;
                  this.meters = this.kilometers * 1000
               },
               meters : function (val) {
                  this.kilometers = val/ 1000;
                  this.meters = val;
               }
            }
         });
         // $watch 是一个实例方法
        vm.$watch('kilometers', function (newValue, oldValue) {
            // 这个回调将在 vm.kilometers 改变后调用
            document.getElementById ("info").innerHTML = "修改前值为: " + oldValue + ",修改后值为: " + newValue;
        })
      </script>

五、事件

v-on用来监听

1、事件修饰符

由点 . 表示的指令后缀来调用修饰符。

.stop - 阻止冒泡
.prevent - 阻止默认事件
.capture - 阻止捕获
.self - 只监听触发该元素的事件
.once - 只触发一次
.left - 左键事件
.right - 右键事件
.middle - 中间滚轮事件

<!-- 阻止单击事件冒泡 -->
<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 事件只能点击一次 -->
<a v-on:click.once="doThis"></a>
2、按键修饰符

Vue 允许为 v-on 在监听键盘事件时添加按键修饰符:

<!-- 只有在 keyCode 是 13 时调用 vm.submit() -->
<input v-on:keyup.13="submit">
//记住所有的 keyCode 比较困难,所以 Vue 为最常用的按键提供了别名:

<!-- 同上 -->
<input v-on:keyup.enter="submit">
<!-- 缩写语法 -->
<input @keyup.enter="submit">

全部的按键别名:

.enter
.tab
.delete (捕获 "删除" 和 "退格" 键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta

六、表单

1、类型:

input
textarea
input type="checkbox" 单/复选框
input type="radio" 单选按钮
select 列表

<div id="app">
  <select v-model="selected" name="fruit">
    <option value="">选择一个网站</option>
    <option value="www.runoob.com">Runoob</option>
    <option value="www.google.com">Google</option>
  </select>
 
  <div id="output">
      选择的网站是: {{selected}}
  </div>
</div>
 
<script>
new Vue({
  el: '#app',
  data: {
    selected: '' 
  }
})
</script>
2、修饰符

input v-model.lazy="msg" 不再实时更新,在失焦和回车时更新
input v-model.number="age" type="number" 将输入转为number
input v-model.trim="msg" 自动过滤输入的首尾空格

参考链接:
https://www.runoob.com/vue2/vue-tutorial.html

相关文章

  • 前端扯犊子之四Vue2(一)

    一、概述 1、安装: 可npm可cdn可 script 标签本地引入 2、指令集: v-cloak 去除闪动v-h...

  • 前端扯犊子之六Vue2(二)组件

    一、组件 个人理解:为了复用代码而进行封装代码,以及封装代码块之间的通信 1、全局组件 注:(1)、table标签...

  • 前端扯犊子之十Webpack

    安装:npm使用:配置文件:webpack.config.jsentry:入口模块,类型:字符串、数组、对象mod...

  • 前端扯犊子之九jQuery

    一、概述 1、功能: HTML 元素选取HTML 元素操作CSS 操作HTML 事件函数JavaScript 特效...

  • 前端扯犊子之一Axios

    中文文档:http://www.axios-js.com/zh-cn/docs/[http://www.axios...

  • 扯犊子

    致未来 别羡慕,去努力。 努力到柳暗花明, 坚持到苦尽甘来。

  • 扯犊子

    嘿!亲爱的小伙伴们。 我自我介绍一下我… 我是66大人,如果你们觉得费劲也可以叫我66、6大或者6人。。 ...

  • 扯犊子

    在一个聊天场景当中,当一个人被三次说到二逼的时候,如果这个人状态好的话,会一笑了之;如果刚好碰到状态不好,会恼羞成...

  • 扯犊子

    “北海有鱼, 其名为鲲, 鲲之大, 一锅炖不下; 化而为鸟 ,其名为鹏, 鹏之大, 两个烤炉 装不下;一个多汤, ...

  • 扯犊子

    看到它最近的一系列操作,让我越看越失望,越看越心寒,连最起码的防护都没有做,这不是坐等别人去撸么,而且已经被别人撸...

网友评论

      本文标题:前端扯犊子之四Vue2(一)

      本文链接:https://www.haomeiwen.com/subject/tcnwdltx.html