美文网首页
Vue快速笔记

Vue快速笔记

作者: 逆风g | 来源:发表于2020-09-05 16:52 被阅读0次

    xxx.vue文件结构

    主要由<template><script><style>三大标签构成:<template>中包含<div>,<div>中定义组件;<script>定义javascript,推荐vue.js;<style>定义样式,推荐每个vue文件中定义自己的样式:<style scoped>。

    • <template>
      定义组件:

    Radio单选框 el-radio
    Checkbox复选框 el-checkbox
    Input输入框 el-input
    InputNumber计数器 el-input-number
    Select选择器 el-select
    Cascader级联选择器 el-cascader
    Switch开关 el-switch
    Slider滑块 el-slider
    TimePicker时间选择器 el-time-select
    DatePicker日期选择器 el-date-picker
    DateTimePicker日期时间选择器 el-date-picker
    Upload上传 el-upload
    rate评分 el-rate
    ColorPicker颜色选择器 el-color-picker
    Transfer穿梭框 el-transfer
    Form表单 el-form
    ……….
    具体地址:https://element.eleme.cn/#/zh-CN/component

    • <script>
      定义Vue.js:

    属性data、计算属性computed、方法method、过滤器filters、属性监听watch、components、组件混入mixins等
    生命周期:beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed
    ……….
    具体地址:https://cn.vuejs.org/v2/api/

    • <style>
      定义样式
      </style>

    Vue.js基础知识

    • 插值
      {{}}:输出数据(可属性可方法)
      v-html:输出html文本(<div v-html="message"></div>)message: '<h1>菜鸟教程</h1>'
      v-bind:设置html属性(<div v-bind:class="{'class1': use}”>)如果use为true则使用class1样式
      v-if:条件判断(<p v-if="seen">现在你看到我了</p>)如果seen为true则生成代码
      v-show:条件判断(<p v-if="seen">现在你看到我了</p>)如果seen为true则显示(代码已生成)
      v-model:数据双向绑定(<input v-model="message”>)控件值与属性值互相影响
      v-on:事件监听(<a v-on:click="doSomething”>)doSomething为具体响应方法
      文本格式化:需要用到过滤器filters
    <!-- 在两个大括号中 -->
    {{ message | capitalize }}
    <!-- 在 v-bind 指令中 -->
    <div v-bind:id="rawId | formatId"></div>
    

    v-bind缩写:

    <!-- 完整语法 -->
    <a v-bind:href="url"></a>
    <!-- 缩写 -->
    <a :href="url"></a>
    

    v-on 缩写:

    <!-- 完整语法 -->
    <a v-on:click="doSomething"></a>
    <!-- 缩写 -->
    <a @click="doSomething"></a>
    
    • 条件语句
    <div v-if="type === 'A'">
        A
    </div>
    <div v-else-if="type === 'B'">
        B
    </div>
    <div v-else-if="type === 'C'">
        C
     </div>
     <div v-else>
        Not A/B/C
     </div>
    
    • for循环
    <li v-for="site in sites">
        {{ site.name }}
    </li>
    <li v-for="(value, key) in object">
        {{ key }} : {{ value }}
    </li>
    <li v-for="(value, key, index) in object">
        {{ index }}. {{ key }} : {{ value }}
    </li>
    
    • 计算属性
    <div id="app">
      <p>原始字符串: {{ message }}</p>
      <p>计算后反转字符串: {{ reversedMessage }}</p>
    </div>
    computed: {
        // 计算属性的 getter
        reversedMessage() {
        // `this` 指向 vm 实例
        return this.message.split('').reverse().join('')
    }
    

    computed有缓存,methods每次都需要重新调用

    • 监听属性
      监听某个属性值,发生变化时做出响应
    watch : {
        kilometers(val) {
            this.kilometers = val;
            this.meters = this.kilometers * 1000
        },
    }
    

    属性kilometers值发生变化时调用,val为kilometers的值

    • class属性绑定
    单个样式:
    <div v-bind:class="{ 'active': isActive }"></div>
    多个样式(相同属性则后者会覆盖前者):
    <div class="static"
         v-bind:class="{ 'active' : isActive, 'text-danger' : hasError }">
    </div>
    
    • 组件
      引用组件后可当做标签来使用
    <UdTabHead>xxxx</UdTabHead>
    import {UdTabHead} from ‘udesk-vue’
    export default{
        components: {UdTabHead}
    };
    
    • 组件传值
      核心:自定义属性prop自定义事件

    父组件传值子组件:
    类似于对象属性,直接属性赋值

    父:
    <div id="app">
        <child :message="hello!"></child>
    </div>
    
    子:
    <script>
      // 声明 props
      props: ['message'],
      // 同样也可以在 vm 实例中像 "this.message" 这样使用
      template: '<span>{{ message }}</span>'
    </script>
    

    子组件传值父组件:
    类似于回调,由父亲实现孩子方法

    父:
    <div id="app">
        <child @getMessage="sendMessage"></child>
    </div>
    
    子:
    <script>
    methods: {
        incrementHandler () {
          this.$emit("getMessage","hello!")
        }
      },
    </script>
    
    • 动画
    <button v-on:click = "show = !show">点我</button>
    <transition name = "fade">
        <p v-show = "show" v-bind:style = "styleobj">动画实例</p>
    </transition>
    <style>
    /* 可以设置不同的进入和离开动画 */
    /* 设置持续时间和动画函数 */
    .fade-enter-active, .fade-leave-active {
        transition: opacity 2s
    }
    .fade-enter, .fade-leave-to /* .fade-leave-active, 2.1.8 版本以下 */ {
        opacity: 0
    }
    </style>
    
    • 混入
      混入对象可以包含任意组件选项(方法、属性等)
    var mixin = {
        created: function () {
            document.write('混入调用' + '<br>')
        }
    }
    export default{
        mixins: [mixin],
    };
    

    相同的函数名时,vue优先级高

    • Ajax
      axios:
    axios.post('/try/ajax/ajax_info.txt').then(res => {
        console.log(res);
      }).catch(error => {
        console.log(error);
      });
    

    vue-resource:

    this.$http.post('/try/ajax/ajax_info.txt').then(res => {
        document.write(res.body);    
    },function(){
        console.log('请求失败处理');
    });
    
    • 定时器
    setTimeout(() => {
        xxxxxx
    }, 1.5 * 1000)
    
    • export和export default

    export:
    A文件:

    import  xxx from B
    xxx.funcA() or xxx.funcB()
    

    B文件:

    export default const str = ‘haha’
    或者
    export default {
        funcA () {
            xxx
        }
        funcB () {
            xxx
        }
    }
    

    export default:
    A文件:

    import  {str, funcA,funcB } from B
    

    B文件:

    export const str = ‘haha’
    export funcA () {
        xxx
    }
    export funcB () {
        xxx
    }
    

    相关文章

      网友评论

          本文标题:Vue快速笔记

          本文链接:https://www.haomeiwen.com/subject/jsdfektx.html