Vue学习笔记1——基础

前言

作为只搞后端程序的我本来只掌握前端三件套和thymeleaf就够了,奈何疫情在家做毕设,做着做着发现现在好的前端模板几乎都是基于Vue构建了。大二绘蓝杯结束后邓刚学长就提议过让我学一学Vue,奈何后面的时间断断续续只是零零散散的学,这次决定静下来,好好补补这一块。
PS:本次学习是跟着B站视频vue教程-黑马-vue2.4–vuejs-vue.js-205集完整版-前端框架-前端-刘龙宾-刘龙宾0225(该视频已被up主下架,刘龙宾老师B站上有账号,可以去那里找)来学的,所以笔记中内容大多来自其文案及案例源码。

1、数据填充

  <div id="app">
    <div>{{msg}}div>
    <div v-text='msg'>div>
    <div v-html='msg1'>div>
    <div v-pre>{{msg}}div>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    /*
      1、v-text指令用于将数据填充到标签中,作用于插值表达式类似,但是没有闪动问题
      2、v-html指令用于将HTML片段填充到标签中,但是可能有安全问题
         例如:XXS攻击,所以用户post的数据不能用该指令填充.
      3、v-pre用于显示原始信息(即啥都不干,是什么就是什么)
    */
    var vm = new Vue({
      el: '#app',
      data: {
        msg: 'Hello Vue',
        msg1: '<h1>HTMLh1>'
      }
    });

结果
Vue学习笔记1——基础_第1张图片

2、双向数据绑定

    <div id="app">
      <div>{{msg}}div>
      <div>
        <input type="text" v-model='msg'>
      div>
    div>
    <script type="text/javascript" src="js/vue.js">script>
    <script type="text/javascript">
      /*
        双向数据绑定
        1、从页面到数据
        2、从数据到页面
      */
      var vm = new Vue({
        el: '#app',
        data: {
          msg: 'Hello Vue'
        }
      });
    script>

这个应该很熟悉了,我就不截图了(反正我也懒得搞动态图)

3、事件基本用法及传参

<div id="app">
        <div>{{num}}div>
        <div>
            
            <button v-on:click='handle1'>点击1button>
            
            <button v-on:click='handle2(123, 456, $event)'>点击2button>
        div>
    div>
    <script type="text/javascript" src="js/vue.js">script>
    <script type="text/javascript">
        var vm = new Vue({
            el: '#app',
            data: {
                num: 0
            },
            methods: {
                handle1: function(event) {
                    console.log(event.target.innerHTML)
                },
                handle2: function(p, p1, event) {
                    console.log(p, p1)
                    console.log(event.target.innerHTML)
                    this.num++;
                }
            }
        });
    script>

Vue学习笔记1——基础_第2张图片
其中v-on:click可以用@click表示,例如

		<div>
            <button v-on:click='num++'>点击button>
            <button @click='num++'>点击1button>
            <button @click='handle'>点击2button>
            <button @click='handle()'>点击3button>
        div>

以及最后两个button实现的效果是一样的。

4、事件修饰符

  <div id="app">
    <div>{{num}}div>
    <div v-on:click='handle0'>
      <button v-on:click.stop='handle1'>点击1button>
    div>
    <div>
      <a href="http://www.baidu.com" v-on:click.prevent='handle2'>百度a>
    div>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    /*
      事件绑定-事件修饰符
    */
    var vm = new Vue({
      el: '#app',
      data: {
        num: 0
      },
      methods: {
        handle0: function(){
          this.num++;
        },
        handle1: function(event){
          // 阻止冒泡
          // event.stopPropagation();
        },
        handle2: function(event){
          // 阻止默认行为
          // event.preventDefault();
        }
      }
    });
  script>

在这里插入图片描述
显而易见,无论怎么点0都不变,点击超链接也不会跳转和变红。

5、属性绑定

  <div id="app">
    <a v-bind:href="url">百度a>
    <a :href="url">百度1a>
    <button v-on:click='handle'>切换button>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    /*
      属性绑定
    */
    var vm = new Vue({
      el: '#app',
      data: {
        url: 'http://www.baidu.com'
      },
      methods: {
        handle: function(){
          // 修改URL地址
          this.url = 'http://itcast.cn';
        }
      }
    });
  script>

在这里插入图片描述
点击了切换后第一个百度地址将会换成 http://itcast.cn

6、分支结构

  <div id="app">
    <div v-if='score>=90'>优秀div>
    <div v-else-if='score<90&&score>=80'>良好div>
    <div v-else-if='score<80&&score>60'>一般div>
    <div v-else>比较差div>
    <div v-show='flag'>测试v-showdiv>
    <button v-on:click='handle'>点击button>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    /*
      分支结构

      v-show的原理:控制元素样式是否显示 display:none
    */
    var vm = new Vue({
      el: '#app',
      data: {
        score: 10,
        flag: false
      },
      methods: {
        handle: function(){
          this.flag = !this.flag;
        }
      }
    });
  script>

在这里插入图片描述在这里插入图片描述

7、循环结构

7.1、循环数据

  <div id="app">
    <div>水果列表div>
    <ul>
      <li v-for='item in fruits'>{{item}}li>
      <li v-for='(item, index) in fruits'>{{item + '---' + index}}li>
      <li :key='item.id' v-for='(item, index) in myFruits'>
        <span>{{item.ename}}span>
        <span>-----span>
        <span>{{item.cname}}span>
      li>

    ul>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    /*
      循环结构-遍历数组
    */
    var vm = new Vue({
      el: '#app',
      data: {
        fruits: ['apple', 'orange', 'banana'],
        myFruits: [{
          id: 1,
          ename: 'apple',
          cname: '苹果'
        },{
          id: 2,
          ename: 'orange',
          cname: '橘子'
        },{
          id: 3,
          ename: 'banana',
          cname: '香蕉'
        }]
      }
    });
  script>

Vue学习笔记1——基础_第3张图片

7.2、循环对象

  <div id="app">
    <div v-if='v==13' v-for='(v,k,i) in obj'>{{v + '---' + k + '---' + i}}div>
  div>
  <script type="text/javascript" src="js/vue.js">script>
  <script type="text/javascript">
    // 使用原生js遍历对象
    var obj = {
      uname: 'lisi',
      age: 12,
      gender: 'male'
    }
    for(var key in obj) {
      console.log(key, obj[key])
    }
    /*
      循环结构
    */
    var vm = new Vue({
      el: '#app',
      data: {
        obj: {
          uname: 'zhangsan',
          age: 13,
          gender: 'female'
        }
      }
    });
  script>

Vue学习笔记1——基础_第4张图片
基础就先到这里,困得鸭批。

你可能感兴趣的:(Vue)