Vue.js day01

什么是Vue.js

  • Vue.js 是目前最火的一个前端框架,React是最流行的一个前端框架(React除了开发网站,还可以开发手机App,Vue语法也可以进行手机App的开发,需要借助Weex)
  • Vue.js 是前端的主流框架之一,和Angular.js、React.js一起,并成为前端三大主流框架!
  • Vue.js 是一套构建用户界面的框架,只关注视图层,它不仅易于上手,还便于第三方库或既有项目整合。(Vue配套的第三方类库,可以整合起来做大型项目的开发)
  • 前端的主要工作?主要负责MVC中的V这一层;主要工作就是和界面打交道,来制作前端页面效果;

框架和库的区别 

框架:是一套完整的解决方案;对项目的侵入性较大,项目如果需要更换框架,则需要重新架构整个项目                        :           

node中的express

库(插件):提供某一个小功能,对项目的侵入性较小,如果某个库无法完成某些需求,可以很容易切换到其他库实现需求。

从Jquery 切换到 zepto   

从 EJS 切换到 art-template

Node(后端)中的MVC与前端中MVVM之间的区别

  • MVC 是后端的分层开发概念
  • MVVM是前端视图层的概念,主要关注于 视图层分离,也就是说:MVVM把前端的视图层,分为了 三部分Model,View,VM ViewModel

Vue.js实例化

               el:这个控制是哪块试图

               data:存放数据

               methods:放我们的方法

插值表达式、v-cloak、v-text、v-html的基本使用

  •  插值表达式{{}},可以在前后插入一些内容
  •  v-cloak:防止加载时出现界面闪烁
  •  v-text:会替换掉元素里的内容
  •  v-html:可以渲染html界面
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" >
  <meta http-equiv="X-UA-Compatible" content="IE=edge" >
  <meta name="viewport" content="width=device-width, initial-scale=1.0" >
  <title>Document</title>

  <style>
    [v-cloak] {
      display: none;
    }
  </style>
</head>

<body>
  <!--视图层 -->
  <div id="app">
    <!-- 插值表达式  {{}} -->
    <!-- v-cloak防抖 -->
    <div v-cloak>{{msg}} {{num1+num2}}</div>
    <div>{{text}}{{html}}</div>
    <div v-html="html">11111</div>
    <div v-text="text">2222</div>
  </div>

</body>
</html>
<script src="./vue-2.4.0.js"></script>
<script>
  let vm = new Vue({
    //   控制区域
    el: "#app",
    // 数据
    data: {
      msg: "hello word2!",
      num1: 5,
      num2: 6,
      text: "<h2>哈哈我是H2</h2>",
      html: "<h2 style='color:red'>哈哈我是H2</h2>",
    },
    // 方法
    methods: {},
  });
</script>

V-bind 界面元素属性值的绑定

1. 括号里不加引号的都是我们data里的数据读取

2. 如果想使用字符串需要加上引号

3. 里面可以写表达式

4. 里面也可以调用定义好的方法,拿到的是方法的返回值

5.简写‘:’

<body>
  <div id="app">
    <div title="title">123</div>
    <!-- v-bind  属性绑定-->
    <div v-bind:title="msg">123</div>
    <input type="text" value="haha">
    <input type="text" v-bind:value="msg">
    <input type="text" v-bind:value="'msg'">
    <input type="text" v-bind:value="num1+num2">
    <input type="text" v-bind:value="title1+msg">
    <input type="text" v-bind:value="sum(4,5)">
    <input type="text" :value="sum(4,5)" >
    <button v-on:click="log1">点击打印1</button>
  <!-- 简写 -->
    <button @click="log1">点击打印1</button>
    <div>{{num2}}</div>
  </div>
  <script>
    const vm = new Vue({
      el: "#app",
      data: {
        title1: "titleName",
        msg: "这是一个信息",
        num1: 2,
        num2: 3,
      },
      methods: {
        log1() {
          console.log(1);
          // 里面可以直接通过this获取data上的内容
          console.log(this.num2);
          this.num2++;
        },
        sum(a, b) {
          return a + b;
        },
      },
    });
  </script>

V-on 进行事件绑定

简写“@”:@click、@mouseover

跑马灯效果如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <script src="./vue-2.4.0.js"></script>
  <title>Document</title>
</head>

<body>
  <div id='app'>
    <button @click='start' :disabled='!dis'>浪起来</button>
    <button @click='stop' :disabled='dis'>别浪</button>
    <p>{{msg}}</p>
  </div>
</body>
<script>
  let vm = new Vue({
    el: '#app',
    data: {
      msg: '猥琐发育,别浪!',
      timer: 'null',
      dis: 'true'
    },
    methods: {
      start() {
        this.dis = !this.dis;
        this.timer = setInterval(() => {
          let str1 = this.msg.substring(0, 1);
          let str2 = this.msg.substring(1);
          this.msg = str2 + str1;
        }, 500);
      },
      stop() {
        this.dis = !this.dis;
        clearInterval(this.timer);
      }
    }
  })
</script>

</html>

事件修饰符

  • .stop 阻止冒泡

  • .prevent 阻止默认事件

  • .capture 添加事件侦听器时使用事件捕获模式

  • .self 只当事件在该元素本身(比如不是子元素)触发时触发回调

  • .once 事件只触发一次

v-model数据双向绑定

作用:数据双向绑定

注意:绑定的是表单控件

计算器效果案例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <script src="./vue-2.4.0.js"></script>

<body>
  <div id="app">
    <input type="text" v-model:value='num1'>
    +
    <input type="text" v-model:value='num2'>
    <button @click='add'>=</button>
    <input type="text" v-model:value='sum'>
  </div>

</body>

</html>
<script>
  //创建Vue实例,得到 ViewModel
  const vm = new Vue({
    el: '#app',
    data: {
      num1: 0,
      num2: 0,
      sum: 0
    },
    methods: {
      add() {
        this.sum = Number(this.num1) + Number(this.num2)
      }
    }
  });
</script>

Vue中样式的使用

使用class样式:

  •   数组
  •   三木表达式
  •   数组内置对象(对象的键是样式的名字,值是bool类型)
  •   直接通过对象

使用内联样式

  • 直接在元素上通过 :style 的形式,书写样式对象

  • 将样式对象,定义到 data 中,并直接引用到 :style 中

    1. 在data上定义样式

    2. 在元素中,通过属性绑定的形式,将样式对象应用到元素中

  • 在 :style 中通过数组,引用多个 data 上的样式对象

    1. 在data上定义样式

    2. 在元素中,通过属性绑定的形式,将样式对象应用到元素中

 V-for和key属性

  •  便利数组,参数(item,index) in list
  •  便利对象,参数(value,key,index) in list
  •  便利数字,num in 10 (1~10)
  •  key在使用v-for的时候都需要去设置key
  1.  让界面元素和数组里的每个记录进行绑定
  2.  key只能是字符串或者数字
  3. key必须是唯一的

v-if与v-show区别

区别:

1. v-if删除dom元素

2. v-show设置display:none

应用场景:

1. v-if只修改一次的时候可以使用v-if

2. v-show频繁切换的时候可以使用v-show

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值