Vue 2020

2020-05-29  本文已影响0人  云木杉

Vue模板语法

v-once 只编译一次

v-model 双向绑定

v-on:click

函数参数传递

事件修饰符

按键修饰符

样式绑定

<div :class="{active:isActive}">
.style{
    active:{
        width:200px;
    }
}

// 数组与对象结合
<div :class=['activeClass,errorClass,{active:isActive}']>
// 简化版数组
<div :class='arrClasses']>
// 简化版对象
<div :class='objClasses']>

data(){
    return{
        arrClasses:[active,error,other]
        objClasses:{
            active:true,
            error:true
        }
        isActive:true,
        activeClass:'active', // active 为样式
        errorClass:'error' // error 为样式
        
    }
}

Vue常用属性

生命周期

挂载(初始化相关属性)

更新(元素或组件的变更操作) 界面更新时调用

销毁(销毁相关属性)

Vue组件化

父组件向子组件传值

Vue.component('blog-post', {
  // 在 JavaScript 中是 camelCase 的
  props: ['postTitle'],
  template: '<h3>{{ postTitle }}</h3>'
})

// 子组件往父组件传递数据
this.$emit('myEvent')


<!-- 在 HTML 中是 kebab-case 的 -->
<blog-post :myEvent="doingSomthing" post-title="hello!"></blog-post>


<navigation-link url="/profile">
 hello world
</navigation-link>

Vue.component('navigation-link', {
  template: <a v-bind:href="url" class="nav-link">
                <slot></slot>//这里将使用hello world替换
            </a>
})

// 作用域插槽 应用场景:父组件对子组件的内容进行加工处理
// 子组件
<ul>
    <li v-for="item in list" :key="item.id">
        <slot :row=item>
        {{item.name}}
        </slot>
    </li>
</ul>

// 插槽内容
<future-list :list='list'>
    <template v-slot='scope'>
    {{scope.row.name}}
    </template>
</future-list>

Vue前端交互

URL地址格式

Promise用法

//初始化
var value = new Promise(resolve,reject => {
    if(true){
        resolve("success message")
    }else {
        resolve("error message")
    }
})

// 1 回调数据
value.then(res => {
    console.log(res) // success message
},res =>{
    console.log(res) // error message
})

// 2 

value.then(res => {
    console.log(res) //
    return request()
}).then(res => {
            console.log(res)
            return 'string'
        },res =>{
            console.log(res)
            return 'error'
        })
.then(res => {
    console.log(res)// 'string'
    return request()
}).catch(res =>{
    //获取异常信息
}).finally(res => {
    //成功与否都会执行
})

// 多个请求 并发处理多个异步任务,所有任务执行完成后才能得到结果
Promise.all([request1,request2,request3]).then(result => {
    console.log(result)
})

// 并发处理多个异步任务,只要有一个任务完成就得到结果
Promise.race([request1,request2,request3]).then(result =>{
    console.log(result)
})

fetch

fetch(url,
    {
        method:'POST',
        headers:{
            //'Content-type':'application/x-xxx-form-urlencoded'
             'Content-type':'application/json'

        },
        body:JSON.stringfy({
            requestParam:params
        })
    }
).then(res => {
    // return data.text(); // 数据转换为字符串
    return data.json() // 数据转为json
}).then(res => {
    console.log(res) //真正的返回数据
})

axios

// get请求
axios.get(url).then(res => {
    console.log(res)
})

// 三种传参方式
axios.get(url?params='***').then(res => {
    console.log(res)
})
axios.get(url/'***').then(res => {
    console.log(res)
})
axios.get(url,{
    params:{
        params:'***'
    }
}).then(res => {
    console.log(res)
})

// post 
axios.post(url,
      {  params1:'***',
         params2:'***'
      }
).then(res => {
    console.log(res)
})

const params = ne URLSearchParams();
param.append('params1','***')
param.append('params2','***')
axios.post(url,params).then(res => {
    console.log(res)
})

// axios的全局配置
axios.defaults.timeout = 3000;
axios.defaults.headers['token'] = tokenValue

//请求拦截器
axios.interceptors.request.use(config => {
    // 请求前进行信息设置
    return config;
},res =>{
    //处理响应的错误信息
})


//响应拦截器
axios.interceptors.request.use(config => {
    // 请求前进行信息设置
    return config;
},res =>{
    //处理响应的错误信息
})

async/await用法

Vuex 使用

上一篇 下一篇

猜你喜欢

热点阅读