Vue入门

Vue入门

Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。

Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,
Vue 也完全能够为复杂的单页应用提供驱动。

简单的vue版"Holle Vue"

  1. 下载vue.js
    https://cdn.jsdelivr.net/npm/vue/dist/vue.js

    有网状态下我们直接在需要用到vue框架的html的head标签之间添加

  2. 创建静态web项目

  3. 将vue.js导入项目

  4. 编写hello页面,引入vue.js

  1. 启动服务器,显示效果
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello-vue</title>
    <script src="../js/vue/vue.js"></script>
</head>
<body>

<div id="app">
    {{ message }}
</div>
<script>
    var app = new Vue({
        el: '#app',
        data: {
            message: 'Hello Vue!'
        }
    })
</script>
</body>
</html>

常见指令

  • {{属性}} : 解析数据的指令,使用插值表达式**{{}}**进行数据渲染

  • v-bind:绑定属性 如v-bind:src,v-bind:class,v-bind:href等,可以简写成一个“ : ” 如 :src , :class , :href

    <!--v-bind属性绑定--->
    <div id="app">
        <!--v-bind-->
        <span v-bind:title="title">原来的长这样</span>
        <span :title="title">简写的呦</span>
    </div>
    <script>
        var vue = new Vue({
          el:"#app",
          data:{
              title:"是阿浔~"
          }
        })
    </script>
    
  • v-model :双向数据绑定,绑定数据功能跟v-bind是一样的, 区别在如果html属性值改变, vue的data数据也会变动(双向)

    <!--model双向绑定--->
    <div id="app">
    
        <!--v-bind: 表示数据单项绑定,可以给html标签属性绑定参数,如果html属性值改变,vue中data数据值不会变动  -->
        v-bind:<input type="text" name="username" v-bind:value="username">
    
        <!--v-model:表示双向绑定,绑定数据功能跟v-bind是一样的, 区别在如果htmle属性值改变, vue的data数据也会变动-->
        v-model:<input type="text" name="username" v-model:value="username">
    
        <br>
        <span>{{username}}</span>
    
    </div>
    <script>
        var vue = new Vue({
            el:"#app",
            data:{
                username:"axun"
            }
        })
    </script>
    
  • v-html :数据是带有html格式的数据时,此时需要使用v-html指令, 将html格式数据渲染出来

    <div id="app" v-html="content">
    </div>
    
    <script>
        var vue = new Vue({
            el:"#app",
            data:{
                content:"<span style='color: red;'>这是内容</span>"
            }
        })
    </script>
    
  • v-if : 判断指令

    <!--age是否大于18,等于18,小于18-->
    <div id="app">
        <span v-if="age > 18">欢迎光临</span>
        <span v-else-if="age < 18">18禁</span>
        <span v-else="age == 18">有点纠结</span>
    </div>
    <script>
        var vue = new Vue({
          el:"#app",
          data:{
              age:18
          }
        })
    </script>
    
  • v-for : 循环指令

    <div id="app">
        <ul>
            <!--带索引 -->
            <li v-for="(item,index) in arr">{{index+1}}--{{item}}</li>
        </ul>
    </div>
    
    <script>
        var vue = new Vue({
            el:"#app",
            data:{
                arr:["啊","吧","吃","的"]
            }
    
        });
    
    </script>
    
  • v-on : 事件绑定指令, 可缩写成@

    比如:

    v-on:click//绑定点击事件, 
    @click  //简写方式
    <input type="text" name="username" v-on:click="函数名()">
    <input type="text" name="username" @click="函数名()">
    
    

事件

  • 事件函数

    var vue = new Vue({
        //事件函数写在methods里
          methods:{
              //格式 -->  事件名:function([参数1]...){ ... }
              
              choseClick : function () {
                  alert(1);
              },
              changeSelect : function(){
                  alert(2);
              }
          }
        })
    
  • 事件对象

    <!--$event 事件对象-->
    <ul>
        <li v-for="u in list" v-on:click="choseClick($event)">
            {{u.id}}-{{u.name}}-{{u.age}}-{{u.sex==1?'男':'女'}}
        </li>
    </ul>
    
  • 事件源

    <!--被触发事件的标签元素-->
    <!--事件对象的currentTarget获取事件源-->
    <ul>
        <li v-for="u 是一个函数, 在vue实例创建过程中被调用(html加载完成后执行)
    
    一般用处初始化data中的数据是一个函数, 在vue实例创建过程中被调用(html加载完成后执行)
    
    一般用处初始化data中的数据in list" v-on:click="choseClick($event)">
            {{u.id}}-{{u.name}}-{{u.age}}-{{u.sex==1?'男':'女'}}
        </li>
    </ul>
    <script>
        
    var vue = new Vue({
          methods:{
              choseClick:function (e) {
                  console.log(e.currentTarget);
              }
          }
    })
    </script>
    
  • 事件参数 : JavaScript传参数一样

属性

  • el : 指定vue编译器从哪个元素哪个地方解析 ,如下代码的 el:"#app"
  • data : 用来组织从view中抽象出来的属性,可以说将视图的数据抽象出来存放在data中
  • methods : 放置页面中的业务逻辑,js函数一般都放置在methods中
  • filters : vue过滤器集合
  • **mounted ** : 是一个函数, 在vue实例创建过程中被调用(html加载完成后执行)一般用处初始化data中的数据(经常使用到)

<ul>
    <li v-for="u in list" v-on:click="choseClick($event,u.id,u.name)">
        {{u.id}}-{{u.name}}-{{u.age}}-{{u.sex | sexFilter}}
    </li>
</ul>
<script>
      Vue.filter('sexFilter', function (sex) {
        if (sex==1){
            return "男";
        } else if(sex==0){
            return "女";
        }else{
            return "妖"
        }
    })
    var vue = new Vue({
      el:"#app",
      data:{
          arr:[1,2,3]

      },
      methods:{
          fun1:function () {
          },
          fun2:function () {
          }
      },
      filters:{
            sexFilter:function (sex) {
                if (sex==1){
                    return "男";
                } else if(sex==0){
                    return "女";
                }else{
                    return "妖1"
                }
            }
            },
      mounted:function () {
          console.log("执行数据初始化")
      }  
    })
</script>

生命周期

请求跨域


//细节:发送ajax的链接的端口号需要与后端服务器的端口号一样
//步骤1:接口启动类App.java中跨域访问配置
//跨域访问
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            //重写父类提供的跨域请求处理的接口
            public void addCorsMappings(CorsRegistry registry) {
                //添加映射路径
                registry.addMapping("/**")
                        //放行哪些原始域
                        .allowedOrigins("*")
                        //是否发送Cookie信息
                        .allowCredentials(true)
                        //放行哪些原始域(请求方式)
                        .allowedMethods("GET", "POST", "PUT", "DELETE","OPTIONS")
                        //放行哪些原始域(头部信息)
                        .allowedHeaders("*")
                        //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
                        .exposedHeaders("Header1", "Header2");
            }
        };
    }

获取路径(url)上的参数

//获取url上的请求参数
function getParams() {
    //获取问号及问号后面的内容
    var url = window.location.search;
    var params = new Object();
    if (url.indexOf("?") != -1) {
        //截取问号后面的内容,再使用&分割多个属性
        var arr = url.substr(1).split("&");
        for (var i = 0; i < arr.length; i++) {
            //使用=分割为keyvalue
            var keyValue = arr[i].split("=");
            params[keyValue[0]] = keyValue[1];
        }
    }
    return params;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值