VUE 记录学习

之前在学习vue的时候,觉得自己已经明白了 但其实还有很多细节没有去深研究,在实际的工作开发中还是遇到很多问题 今天就系统的记录一下vue的知识体系,持续更新ing...

前言
概述:Vue是一款前端渐进式框架,可以提高前端开发效率。

特点

​ Vue通过MVVM模式,能够实现视图与模型的双向绑定。

​ 简单来说,就是数据变化的时候, 页面会自动刷新, 页面变化的时候,数据也会自动变化.

mvvm模型

  1. M:模型(model):对应data中的数据
  2. V:视图(View):模板
  3. VM:视图模型(ViewModel):Vue实例对象

MVVM模型

 

Vue.js三种安装方式
此处引荐下大佬的文章 讲的非常详细
vue.js 三种方式安装(vue-cli)_muzidigbig的博客-CSDN博客_vue安装

一、 Vue导入

案例:

二、Vue基本语法

1.钩子函数

概述:**钩子函数, 其实就是Vue提前定义好的事件, 其作用类似于Servlet的init方法和distory方法

语法

补充:Vue声明周期和钩子函数

在这里插入图片描述

(1)什么是vue生命周期?

Vue 实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,我们称这是 Vue 的生命周期。

(2)vue生命周期的作用是什么?

Vue生命周期中有多个事件钩子,让我们在控制整个Vue实例过程时更容易形成好的逻辑。

(3)vue生命周期总共有几个阶段?

可以总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/后。

(4)第一次页面加载会触发哪几个钩子?

第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子

(5)DOM 渲染在 哪个周期中就已经完成?

DOM 渲染在 mounted 中就已经完成了。

(6)简单描述每个周期具体适合哪些场景?

生命周期钩子的一些使用方法:

beforecreate : 可以在此阶段加loading事件,在加载实例时触发;

created : 初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用;

mounted : 挂载元素,获取到DOM节点;

updated : 如果对数据统一处理,在这里写上相应函数;

beforeDestroy : 可以做一个确认停止事件的确认框;

nextTick : 更新数据后立即操作dom;

 2. 插值表达式

 概述:*插值表达式用户把vue中定义的数据,显示在页面上. 插值表达式允许用户输入"JS代码片段"

语法{{ 变量名/对象.属性名 }}

 3.显示数据(v-text和v-html)

​ v-text和v-html专门用来展示数据, 其作用和插值表达式类似.v-text和v-html可以避免插值闪烁问题.

​ 当网速比较慢时, 使用{{}}来展示数据, 有可能会产生插值闪烁问题。

​ 插值闪烁: 在数据未加载完成时,页面会显示出原始的{{}}, 过一会才会展示正常数据

语法:

 区别:

 4.数据双向绑定数据(v-model)

概述:

 Vue的双向绑定可以实现: 数据变化的时候, 页面会自动刷新, 页面变化的时候,数据也会自动变化.

注意:

  1. 双向绑定, 只能绑定**“文本框,单选按钮,复选框,文本域,下拉列表”**等
  2. 文本框/单选按钮/textarea, 绑定的数据是字符串类型
  3. 单个复选框, 绑定的是boolean类型
  4. 多个复选框, 绑定的是数组
  5. select单选对应字符串,多选对应也是数组

4.1.绑定文本框:

4.2.绑定单个复选框 :

在这里插入图片描述

 4.3.绑定多个复选框:

在这里插入图片描述4.4.form表单数据提交:

例子:传json格式跟formData格式的两种情况

<template>
  <div class="from_box">
    <form action="">
      <input type="text"  placeholder="请输入昵称" v-model="formMess.account">
      <input type="password" placeholder="请输入密码" v-model="formMess.act_pwd">
      <input type="text" placeholder="请输入手机号" v-model="formMess.phone">
    </form>
    <span class="but" @click="onSubmit()">提交</span>
  </div>
</template>
 
<script>
import axios from 'axios';
 
export default {
  name: "from",
  data() {
    return {
        formMess:{
        "account":"",
        "act_pwd":"",
        "phone":""
    }
    };
  },
  methods: {
    onSubmit() {
      /* json格式提交: */
      // let formData = JSON.stringify(this.formMess);
 
      /* formData格式提交: */
      let formData = new FormData();
      for(var key in this.formMess){
        formData.append(key,this.formMess[key]);
      }
 
        axios({
        method:"post",
        url:"xxxxxxx",
        headers: {
          "Content-Type": "multipart/form-data"
        },
        withCredentials:true,
        data:formData
    }).then((res)=>{
            console.log(res);
        });
    }
  }
};
</script>
 
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped lang="less">
.from_box{
  form{
    width:90%;
    margin: auto;
    border:.01rem solid gray;
    display: flex;
    flex-wrap: wrap;
    input{
      width:80%;
      height:.5rem;
      margin-bottom: .2rem;
      border:.01rem solid black;
      height:.5rem;
    }
  }
  .but{
    font-size: .14rem;
    margin-left:5%;
  }
}
</style>

5.事件处理(v-on)

5.1.事件绑定(v-on)

概述: ​ Vue中也可以给页面元素绑定事件.

Vue支持html中所有已知事件. 如: @click, @submit等, 只不过事件的名字不带on

5.2.事件修饰符

概述:**事件修饰符主要对事件的发生范围进行限定

语法:<button @事件名.事件修饰符="函数名/vue表达式">点我</button>

分类:.stop :阻止事件冒泡, 也就是当前元素发生事件,但当前元素的父元素不发生该事件
           .prevent :阻止默认事件发生
           .capture :使用事件捕获模式, 主动获取子元素发生事件, 把获取到的事件当自己的事件执行
           .self :只有元素自身触发事件才执行。(冒泡或捕获的都不执行)
           .once :只执行一次

案例:

6.循环遍历(v-for)

6.1.遍历数组

语法:v-for="item in items"
           v-for="(item,index) in items"

items:要迭代的数组
item:存储数组元素的变量名
index:迭代到的当前元素索引,从0开始。

6.2.遍历对象

语法:v-for="value in object"
           v-for="(value,key) in object"
           v-for="(value,key,index) in object"

value,对象的值
key, 对象的键
index, 索引,从0开始

6.3.key

概述: :key 一般配合v-for一起使用. 用来在特定情况下, 保证被遍历的数组中的元素的顺序.

效果:解决方案:

7.判断语法(v-if和v-show) 

概述:v-if与v-show可以根据条件的结果,来决定是否显示指定内容.

​           v-if: 条件不满足时, 元素不会存在.

​           v-show: 条件不满足时, 元素不会显示(但仍然存在).

8.显示数据(v-bind) 

概述:v-bind的作用和插值表达式差不多, 只不过, v-bind主要用于动态设置标签的属性值

语法:<!--完整写法-->
          <标签名 v-bind:标签属性名="vue实例中的数据属性名"/>
          <!--简化写法-->
          <标签名 :标签属性名="vue实例中的数据属性名"/>

9.Vue页面跳转(两种方法) 

9.1方法一(标签实现)

9.1方法二(this.$router.push()实现)

当this.$router.push()只有一个参数时 默认为跳转地址 最多可传两个参数 第二个参数为地址参数

三、Vue其他语法 

3.1 计算属性

概述:计算属性是一个提前定义好的方法, 该方法可以看作一个特殊的值, 可在插值表达式中使用.

语法:

 案例:

 3.2.watch监控

概述:watch可以监听简单属性值及其对象中属性值的变化.

​           watch类似于onchange事件,可以在属性值修改的时候,执行某些操作.

语法

 四、Vue组件

4.1.基本使用

概述:组件, 类似于模版, 模块. 在项目需要重用某个模块(头部、尾部、新闻。。。)的时候,可以将模块抽取成组件,其它页面中注册组件并引用。

案例:

注意: 组件的模版中, 只能书写一个跟标签

         组件的定义必须放在Vue创建对象之前, 否则报错

4.2.父组件向子组件通信

概述:子组件无法直接使用父组件中的数据, 如果需要使用, 则必须由父组件把数据传递给子组件才可以.

本质: 让子组件中的属性与父组件中的属性进行关联绑定, 然后子组件使用该属性, 这样才能做到数据传递

意义:可以把父组件中的数据, 更新传递到子组件

 4.3.子组件向父组件通信

概述:子组件无法直接给父组件传递数据. 也无法操作父组件中的数据, 更无法调用父组件中的方法.所以所谓的子组件向父组件通讯, 其实就是想办法让子组件调用父组件的方法. 进而响应到父组件中的数据.

意义:子组件可以调用父组件中的方法

五、axios异步请求

5.1 axios概述

概述:axios是一个基于 promise 的 HTTP 库, 主要用于:发送异步请求获取数据

常见的方法:axios(config)        axios.get(url, [config])             axios.post(url, [data])

发送数据config常用参数:

 响应数据常用参数:

5.2.Get请求 

5.3.Post请求 

5.4.跨域请求 

跨域请求:在前端js中如果发送异步请求的话,请求的地址与当前服务器的ip或者端口号不同都是跨域请求. 跨域请求需要在服务提供方, 开启允许跨域请求

 六、VueJs Ajax

6.1.axios

Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中
axios的github:GitHub - axios/axios: Promise based HTTP client for the browser and node.js

6.1.1.引入axios

首先就是引入axios,如果你使用es6,只需要安装axios模块之后
import axios from ‘axios’;
//安装方法
npm install axios     //或      bower install axios

当然也可以用script引入

6.1.2.get请求

6.1.3.post请求

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值