vue js学习

构建项目
安装node.js
安装cnpm
安装vue-cli 脚手架构建工具 (也可以直接使用命令不许安装cli)
构建项目命令
vue init webpack 项目名
注:若提示webpack不是内容不命令,需要先安装下webpack 命令: npm install webpack -g
声明式编程

const 常量
let 变量
hide:true 隐藏展示字段
addDisplay:false 隐藏from表单字段
search:true 搜索字段
searchLabelWidth:90, 搜索label宽度
dicUrl: ``, 下拉选远程数据
cascaderItem:[] 关联字段
editDisplay: false, from表单隐藏字段
editDisabled: true, from表单不可编辑
dicData:[] 静态字典select下拉选
valueFormat: “yyyy-MM-dd HH:mm:ss” 获取到的日期字符串格式
实体类处理@JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “GMT+8”)
属性 methods: 方法
data: 数据
el:
computed:计算属性 不需要加() 若是在methods中写方法侧需要{{fullName()}}这么写
只会调用一次,若是函数会调用多次会浪费时间

<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
    <h3>{{fullName}}</h3>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'hello vue',
            name1: 'gwh',
          name2: 'nihao'
        },
      computed: {
        fullName: function(){
          return this.name1+"--"+this.name2;
        }
      }
    })
</script>

指令 v-pre

{{}}

数据不进行展示直接展示 {{}}
v-once 只渲染一次


v-bind 动态绑定 class可以为对象 true与false来决定是否生效

hello

对象语法 或者

hello

getclass: function(){return{blue:isblue,size:issize} } 效果一样 v-html

url=" baidu " 解析为html baidu 为超链接 v-cloak 斗篷 v-on事件 比如v-on:click v-on:keyup v-on 修饰符 1、.stop 防止冒泡事件:点击按钮div事件也触发
<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
  <div v-on:click="divClick">
    divviviviv
    <button @click.stop="btnClick">+</button>
  </div>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'v-on修饰符'
        },
      methods: {
        divClick(){
          console.log('divClick')
        },
        btnClick(){
          console.log('btnClick')
        }
      }
    })
</script>

2、.prevent 拦截默认事件 比如 from 提交事件

<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
  <div v-on:click="divClick">
    divviviviv
    <button @click.stop="btnClick">+</button>
  </div>
  <form action="url">
    <input type="submit" @click.prevent="submit">
  </form>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'v-on修饰符'
        },
      methods: {
        divClick(){
          console.log('divClick')
        },
        btnClick(){
          console.log('btnClick')
        },
        submit(){
          console.log('submit')
        }
      }
    })
</script>

3、.once 只监听一次

<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
  <div v-on:click="divClick">
    divviviviv
    <button @click.stop="btnClick">+</button>
  </div>
  <form action="url">
    <input type="submit" @click.prevent="submit">
  </form>
  <input type="button" @click.once="onceClick" value="once">
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'v-on修饰符'
        },
      methods: {
        divClick(){
          console.log('divClick')
        },
        btnClick(){
          console.log('btnClick')
        },
        submit(){
          console.log('submit')
        },
        onceClick(){
          console.log('onceClick');
        }
      }
    })
</script>

4、.监听键盘按键 v-on:keyup.enter=“enter” 监听按下回车键

<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
  <div v-on:click="divClick">
    divviviviv
    <button @click.stop="btnClick">+</button>
  </div>
  <form action="url">
    <input type="submit" @click.prevent="submit">
  </form>
  <input type="button" @click.once="onceClick" value="once">
  <hr>
  <input type="text" value="enter" @keyup.enter="enterClick">
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'v-on修饰符'
        },
      methods: {
        divClick(){
          console.log('divClick')
        },
        btnClick(){
          console.log('btnClick')
        },
        submit(){
          console.log('submit')
        },
        onceClick(){
          console.log('onceClick');
        },
        enterClick(){
          console.log('enterClick');
        }
      }
    })
</script>

vue会存在一个虚拟dom若是相同的dom不会创建新的dom会互用
在这里插入图片描述

在这里插入图片描述
v-show:展示当为false时在页面不展示 本质上在页面上display:none 若v-if=“false” 组件直接去掉
在这里插入图片描述v-for

<script src="../js/vue.js"></script>
<div id="app">
    <h2 style="text-align: center">{{ message }}</h2>
  <ul>
    <li v-for="movie in movies">{{movie}}</li>
  </ul>
  <hr>
  <!-- 对象取值(值,下标) -->
  <ul>
    <li v-for="(movie,index) in movies">{{index+1+'.'+movie}}</li>
  </ul>
  <!-- 对象取值(值,键,下标) -->
  <ul>
    <li v-for="(value,key,index) in video">{{index+1+'.'+key+':'+value}}</li>
  </ul>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'v-for 练习',
          movies: ['变形金刚','骷髅岛','异形'],
          video: {
              name:'骷髅岛',
            time:'2021',
            role:'6'
          }
        }
    })
</script>

注意:this.movies[0] = ‘复联’ 不是响应式的 在时间函数中改变页面并不会渲染这是非响应式

数组函数

<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '函数测试'
        },
        methods: {
          btnClick(){
            let nums = [21,65,46,87];
            /*let newNum = nums.filter(function (n) { //过滤数组返回为true的这个数组值放入新数组
              return n<50;
            })*/
            /*let newNum = nums.map(function (n) { //对数组数据进行处理返回值加入新数组数组
                return n*2
            })*/
            /*let newNum = nums.reduce(function (p,n) {  //对数组进行处理 返回单个值
                return p+n
            },0)*/
            let newNum = nums.filter(function (n) {
                return n<50
            }).map(function (n) {
                return n*2
            }).reduce(function (p,n) {
              return p+n
            },0)
            console.log(newNum);
          }
        }
    })
</script>

filters过滤器

<td>{{ book.price | showPrice}}</td>
filters: {
    showPrice(price){
      return '¥'+price.toFixed(2);
    }
  },

v-model双向绑定
与radio 可以当做name=“sex” 使用作用效果一致

<script src="../js/vue.js"></script>
<div id="app">
    <h2>{{ message }}</h2>
    <!--for为label指定标签,点击label相当于点击for指定的id标签-->
  <label for="man"></label><input id="man" type="radio" v-model="sex" value="">
  <label for="woman"></label><input id="woman" type="radio" v-model="sex" value="">
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: 'hello vue',
          sex: '男'
        }
    })
</script>
与复选框 CheckBox
<script src="../js/vue.js"></script>
<div id="app">
    <h2>{{ message }}</h2>
  <label for="man"></label><input id="man" type="radio" v-model="sex" value="">
  <label for="woman"></label><input id="woman" type="radio" v-model="sex" value="">
  <hr>
  <input id="yes" type="checkbox" v-model="isAgree"><label for="yes">同意</label> <!--单选对应的是Boolean值多选对应的是value 数组-->
  <button :disabled="!isAgree">下一步</button>
  <hr>
  <input id="lq" type="checkbox" value="篮球" v-model="hobbies"><label for="lq">篮球</label>
  <input id="zq" type="checkbox" value="足球" v-model="hobbies"><label for="zq">足球</label>
  <input id="pq" type="checkbox" value="排球" v-model="hobbies"><label for="pq">排球</label>
  <br>
  <h2>{{hobbies}}</h2>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
          message: 'hello vue',
          sex: '男',
          isAgree: '',
          hobbies: []
        }
    })
</script>

与下拉选select单选与多选

<script src="../js/vue.js"></script>
<div id="app">
    <h2>{{ message }}</h2>
  <select name="a" v-model="fruit">
    <option value="苹果">苹果</option>
    <option value="香蕉">香蕉</option>
    <option value="西瓜">西瓜</option>
  </select>
  <hr>
  <select name="b" v-model="fruits" multiple>
    <option value="苹果">苹果</option>
    <option value="香蕉">香蕉</option>
    <option value="西瓜">西瓜</option>
  </select>
  <hr>
  <h2>{{fruit}}</h2>
  <h2>{{fruits}}</h2>
</div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            message: '练习select model',
          fruit: '西瓜',
          fruits: []
        }
    })
</script>

v-model修饰符
1.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值